1. 给你一个网站,你该如何测试?
- (1)确定测试目标和范围,查找相关文档如需求说明书、网站设计文档等,分析测试需求
- (2)制定测试计划,确定测试范围和测试策略,一般包含以下几个部分:功能测试、兼容性测试、性能测试、安全测试、数据库测试
- (3)设计测试用例
- 进行功能测试
- 注册与登录功能:测试用户注册和登录流程
- 导航和链接功能:测试网站导航菜单、内部和外部链接的跳转是否正确
- 页面展示和布局:测试页面的布局、样式、图标是否一致符合设计规范,控件是否正常使用
- 进行兼容性测试
- 测试不同浏览器(谷歌、火狐、百度)和操作系统(Windows、Mac、Linux)下的兼容性
- 测试网站在不同设备(手机、平板、电脑)上的兼容性
- 进行性能测试
- 测试网站的加载速度、响应时间和并发用户数等指标,可以使用性能测试工具JMeter模拟高负载情况下的用户访问
- 测试各种操作和功能在不同网络条件下的性能表现,如低带宽、高延迟等情况。
- 进行安全测试
- 测试网站的身份验证和授权机制,确保授权用户才能够访问敏感数据和功能
- 测试网站受否受到常见的Web安全漏洞(如跨站脚本攻击、SQL注入等)的保护
- 进行数据库测试
- 测试网站与数据库的连接和交互是否正常,包括增删改查等操作
- 验证数据的输入输出、准确性和一致性
- 进行功能测试
- (4)准备测试数据,根据测试需求准备合适的测试数据,包括有效数据、无效数据和边界值数据等
- (5)搭建测试环境,开展测试,并记录缺陷
2.单元测试里测试的是哪5个函数,然后以某个为例说出用的什么测试方法,发现了什么缺陷
使用Junit测试JeeSite项目中StringUtils类以及DateUtils类中的任意五个方法。选择测试的五个方法如下所示:
- (1)inStringIgnoreCase():判断某字符串组是否包含某特定字符串,同时判断不对大小写进行区分。
- (2)trim2():去除左右空格
- (3)stripHtml():替换为手机识别的HTML,去掉样式及属性
- (4)camelCase():驼峰命名法
- (5)getMonthHasDays() 获取某月有几天
使用的是等价类划分法,getMonthHasDays(Date date)该方法的输入为日期类型数据,需要考虑二月的特殊性,闰年二月为29天,非闰年为28天,还需考虑十二月份大小月。
具体划分如下表所示。
输入条件 | 有效等价类 | 无效等价类 |
年 | (1)闰年 | (6)非法输入 |
(2)非闰年 | ||
月 | (3)01,03,05,07,08,10,12(每月31天) | (7)非法输入 |
(4)04,06,09,11(每月30天) | ||
(5)2月 |
基于以上等价类的划分,设计出该方法的测试样例如下表。
编号 | 输入 | 期望输出 | 覆盖编号 |
1 | 1960年1月1日 | 31 | (1)(3) |
2 | 1960年4月1日 | 30 | (1)(4) |
3 | 1960年2月1日 | 29 | (1)(5) |
4 | 1961年12月1日 | 31 | (2)(3) |
5 | 1961年4月1日 | 30 | (2)(4) |
6 | 1961年2月1日 | 28 | (2)(5) |
7 | 1960年0月1日 | 0 | (1)(7) |
8 | 1961年13月1日 | 0 | (2)(7) |
9 | “abc” | 0 | (6)(8) |
10 | “” | 0 | (6)(8) |
对于表中的用例1-6的测试均通过,表明当输入合法时该方法的逻辑能够正常实现。
存在的缺陷:
- 对输入参数的空值处理:代码没有对输入参数
date
进行空值检查,如果传入null作为参数,将导致NullPointerException
异常。在方法的开头,应该对date
进行空值检查并根据需求进行适当的处理,例如抛出异常或返回默认值。 - 对于闰年判断的逻辑:在判断是否为闰年时,代码使用了传统的闰年判断方法。但这种方法无法处理年份为负数的情况,也无法正确处理超过四位数的年份。应该根据具体需求,使用更健壮的闰年判断逻辑,或者使用标准的日期库来执行这个判断。
3.性能测试中聚合报告中有什么指标
- (1)样本计数:测试期间发送的请求数量
- (2)平均响应时间:所有样本的平均响应时间
- (3)最小响应时间
- (4)最大响应时间
- (5)标准偏差:响应时间的统计偏差成都,衡量响应时间的波动性
- (6)吞吐量:单位时间内处理的请求数量,通常以每秒为请求数,该值越大越好,表示服务器处理能力越强。
- (7)错误百分比:测试期间,错误样本占总样本数的百分比,错误率越低越好,为0表示没有异常请求。对于一般业务来说错误率要在万分之一以下
- (8)90%百分位数,按照响应时间排序后,90%的样本所对应的响应时间,响应时间越小表示接口响应越快,。实际工作中我们比较关注90%百分位这个值,表示90%的用户响应时间是小于578ms,平均响应时间参考意义不大
- (9)Received KB/sec(接收速率):表示从服务器端接收数据的速率,即单位时间内接收的数据量。它以千字节/秒(KB/sec)为单位。该指标反映了客户端从服务器获取响应数据的速度。较高的接收速率表示网络连接稳定且服务器响应迅速。
- (10)Sent KB/sec(发送速率):表示向服务器发送数据的速率,即单位时间内发送的数据量。同样以千字节/秒(KB/sec)为单位。该指标反映了客户端向服务器发送请求数据的速度。较高的发送速率表示客户端发送请求的效率较高。
- 还可以提供图形化的数据展示,比如响应时间分布图,吞吐量图等
安全测试里有哪些风险
-
跨站脚本攻击(Cross-Site Scripting, XSS):允许攻击者在网站上注入恶意脚本代码,以获取用户信息或执行恶意操作。
-
SQL注入(SQL Injection):通过构造恶意的SQL查询语句,攻击者可以绕过身份验证、访问未授权的数据或对数据库进行破坏性操作。
-
跨站请求伪造(Cross-Site Request Forgery, CSRF):攻击者通过诱导用户在另一个网站上执行操作,利用用户在目标网站上的身份执行未经授权的操作。
-
未经身份验证的访问(Unauthorized Access):缺乏适当的身份验证和权限控制机制,使得攻击者可以访问未授权的系统资源。
-
敏感信息泄露(Sensitive Information Disclosure):系统可能在错误消息、日志文件、响应头等处泄露敏感信息,如用户名、密码、数据库凭据等。
-
文件上传漏洞(File Upload Vulnerabilities):允许攻击者上传恶意文件,可能导致执行任意代码、文件覆盖或拒绝服务攻击。
-
会话管理漏洞(Session Management Vulnerabilities):涉及会话标识、会话超时、会话劫持等问题,可能导致身份伪造或会话劫持攻击。
-
不安全的直接对象引用(Insecure Direct Object References):缺乏适当的访问控制和验证机制,使得攻击者可以直接访问和操作受限资源。
-
XML外部实体注入(XML External Entity, XXE):攻击者通过恶意的XML输入利用系统中的XML解析器,可能导致信息泄露、拒绝服务或远程命令执行。
-
拒绝服务攻击(Denial of Service, DoS):通过发送大量请求或恶意数据,使系统资源耗尽,导致系统无法正常响应合法用户的请求。