0.1 文档目的
0.2 文档范围
0.3 读者对象
0.4 参考文献
提示: 列出本文档的所有参考文献(可以是非正式出版物),格式如下:
[ 标识符 ] 作者,文献名称,出版单位(或归属单位),日期
例如:
[AAA] 作者,《立项建议书》,机构名称,日期
[SPP-PROC-ST] SEPG,系统测试规范,机构名称,日期
0.5 术语与缩写解释
缩写、术语 解 释
SPP精简并行过程,Simplified Parallel Process
…
1 . 接口-路径测试用例
1 .1 被测试对象(单元)的介绍
1.2 测试范围与目的
1 . 3 测试环境与测试辅助工具的描述
1.4 测试驱动程序的设计
1.5 接口测试用例
接口A的函数原型
输入/动作期望的输出/相应实际情况
典型值…
边界值…
异常值…
接口B的函数原型
输入/动作期望的输出/相应实际情况
典型值…
边界值…
异常值…
…
1.6 路径测试的检查表
检查项 结论
数据类型问题
(1)变量的数据类型有错误吗?
(2)存在不同数据类型的赋值吗?
(3)存在不同数据类型的比较吗?
变量值问题
(1)变量的初始化或缺省值有错误吗?
(2)变量发生上溢或下溢吗?
(3)变量的精度不够吗?
逻辑判断问题
(1)由于精度原因导致比较无效吗?
(2)表达式中的优先级有误吗?
(3)逻辑判断结果颠倒吗?
循环问题
(1)循环终止条件不正确吗?
(2)无法正常终止(死循环)吗?
(3)错误地修改循环变量吗?
(4)存在误差累积吗?
内存问题
(1)内存没有被正确地初始化却被使用吗?
(2)内存被释放后却继续被使用吗?
(3)内存泄漏吗?
(4)内存越界吗?
(5)出现野指针吗?
文件I/O问题
(1)对不存在的或者错误的文件进行操作吗?
(2)文件以不正确的方式打开吗?
(3)文件结束判断不正确吗?
(4)没有正确地关闭文件吗?
错误处理问题
(1)忘记进行错误处理吗?
(2)错误处理程序块一直没有机会被运行?
(3)错误处理程序块本身就有毛病吗?如报告的错误与实际错误不一致,处理方式不正确等等。
(4)错误处理程序块是“马后炮”吗?如在被它被调用之前软件已经出错。
…
2. 功能测试用例
2 .1 被测试对象的介绍
2 .2 测试范围与目的
2. 3 测试环境与测试辅助工具的描述
2 .4 测试驱动程序的设计
2 .5 功能测试用例
功能A描述
用例目的
前提条件
输入/动作期望的输出/相应实际情况
示例:典型值…
示例:边界值…
示例:异常值…
功能B描述
用例目的
前提条件
输入/动作期望的输出/相应实际情况
……
3. 健壮性测试用例
3 .1 被测试对象的介绍
3 .2 测试范围与目的
3. 3 测试环境与测试辅助工具的描述
3 .4 测试驱动程序的设计
3 .5 容错能力 / 恢复能力测试用例
异常输入/动作容错能力/恢复能力造成的危害、损失
示例:错误的数据类型…
示例:定义域外的值…
示例:错误的操作顺序…
示例:异常中断通信…
示例:异常关闭某个功能…
示例:负荷超出了极限…
4 . 性能测试用例
4 .1 被测试对象的介绍
4 .2 测试范围与目的
4. 3 测试环境与测试辅助工具的描述
4 .4 测试驱动程序的设计
4 .5 性能测试用例
性能A描述
用例目的
前提条件
输入数据期望的性能(平均值)实际性能(平均值)
性能B描述
用例目的
前提条件
输入数据期望的性能(平均值)实际性能(平均值)
……
5 . 图形用户界面测试用例
5 .1 被测试对象的介绍
5 .2 测试范围与目的
5. 3 测试环境与测试辅助工具的描述
5 .4 测试驱动程序的设计
5 .5 测试人员分类
类别特征
A类
B类
……
5.6 用户界面测试的检查表
检查项测试人员的类别及其评价
窗口切换、移动、改变大小时正常吗?
各种界面元素的文字正确吗?(如标题、提示等)
各种界面元素的状态正确吗?(如有效、无效、选中等状态)
各种界面元素支持键盘操作吗?
各种界面元素支持鼠标操作吗?
对话框中的缺省焦点正确吗?
数据项能正确回显吗?
对于常用的功能,用户能否不必阅读手册就能使用?
执行有风险的操作时,有“确认”、“放弃”等提示吗?
操作顺序合理吗?
有联机帮助吗?
各种界面元素的布局合理吗?美观吗?
各种界面元素的颜色协调吗?
各种界面元素的形状美观吗?
字体美观吗?
图标直观吗?
…
6. 信息安全性测试用例
6 .1 被测试对象的介绍
6 .2 测试范围与目的
6. 3 测试环境与测试辅助工具的描述
6 .4 测试驱动程序的设计
6 .5 信息安全性测试用例
假想目标A
前提条件
非法入侵手段是否实现目标代价-利益分析
……
假想目标B
前提条件
非法入侵手段是否实现目标代价-利益分析
……
7. 压力测试用例
7 .1 被测试对象的介绍
7 .2 测试范围与目的
7. 3 测试环境与测试辅助工具的描述
7 .4 测试驱动程序的设计
7 .5 压力测试用例
极限名称A 例如“最大并发用户数量”
前提条件
输入/动作输出/响应是否能正常运行
例如10个用户并发操作
例如20个用户并发操作
…
极限名称B
前提条件
输入/动作输出/响应是否能正常运行
…
8. 可靠性测试用例
8 .1 被测试对象的介绍
8 .2 测试范围与目的
8. 3 测试环境与测试辅助工具的描述
8 .4 测试驱动程序的设计
8 . 5 可靠性测试用例
任务A描述
连续运行时间
故障发生的时刻故障描述
……
统计分析
任务A无故障运行的平均时间间隔(CPU小时)
任务A无故障运行的最小时间间隔(CPU小时)
任务A无故障运行的最大时间间隔(CPU小时)
任务B描述
连续运行时间
故障发生的时刻故障描述
……
统计分析
任务B无故障运行的平均时间间隔(CPU小时)
任务B无故障运行的最小时间间隔(CPU小时)
任务B无故障运行的最大时间间隔(CPU小时)
9. 安装 / 反安装测试用例
9 .1 被测试对象的介绍
9 .2 测试范围与目的
9. 3 测试环境与测试辅助工具的描述
9 .4 测试驱动程序的设计
9 . 5 安装 / 反安装测试用例
配置说明
安装选项描述是否正常使用难易程度
全部
部分
升级
其它
反安装选项描述是否正常使用难易程度
附录:评审意见
数组去重是一个经常会用到的方法,我写了一个测试模板,测试一下常见的数据去重的方法的性能
测试模板
1、Array.filter() + indexOf
方法思路:将两个数组拼接为一个数组,然后使用 ES6 中的 Array.filter() 遍历数组,并结合 indexOf 来排除重复项
2、双重 for 循环
方法思路:外层循环遍历元素,内层循环检查是否重复,当有重复值的时候,可以使用 push(),也可以使用 splice()
3、for...of + includes()
方法思路:双重for循环的升级版,外层用 for...of 语句替换 for 循环,把内层循环改为 includes()。先创建一个空数组,当 includes() 返回 false 的时候,就将该元素 push 到空数组中 。类似的,还可以用 indexOf() 来替代 includes()
4、Array.sort()
方法思路:首先使用 sort() 将数组进行排序,然后比较相邻元素是否相等,从而排除重复项
5、new Set()
ES6 新增了 Set 这一数据结构,类似于数组,但Set 的成员具有唯一性
6、for...of + Object
方法思路:首先创建一个空对象,然后用 for 循环遍历,利用对象的属性不会重复这一特性,校验数组元素是否重复
测试结果一目了然,几种方法的性能 6>5>4>3>1>2
在进行网页或应用程序后台接口开发时,一般要及时测试开发的接口能否正确接收和返回数据,对于单次测试,Postman插件是个不错的Http请求模拟工具。
但是Postman只能模拟单客户端的单次请求,而对于模拟多用户并发等性能测试,就必须借助其他的工具了,这里推荐功能强大的JMeter自动化测试工具
Apache JMeter - Apache JMeter™
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域。 它可以用于测试静态和动态资源例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库, FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。
下面就以上图的Restful类型的接口为例简单介绍使用Jmeter进行接口测试的方法。
获取某个具体网关设备的基本信息。
请求
方法:GET
URI:/api/gateway/<gateway_id>
参数:
在HTTP请求(http request)的头部(header)添加Userid和Token字段作为用户验证字段
响应
返回值:JSON格式的网关信息
参数:
.启动jmeter:在bin下以管理员身份运行jmeter.bat,启动jmeter
2. 创建测试计划:
默认启动jmeter时会加载一个测试技术模板,保存测试计划:修改名称为Apitest,点击保存,选择保存路径,后面的步骤,每次添加或修改了了一些选项,软件并不会自动保存到jmx文件中,所以进行测试后,如果需要保存本次测试选项,要手动到“文件”菜单中保存一下。
3. 添加线程组
右键左边树中的测试计划“Apitest”节点,“添 加”→”Threads”→”线程组”
添加成功后,“Apitest”节点下多了“线程组” 节点,当然这个线程组的名称是可以自己设定的。
4. 添加http默认请求:(用来配置公共参数,不是http请求)
右键线程组,选择“添加”→ “配置元件”→“HTTP请求默认值”,点击“HTTP请求默认值”后
添加成功后,线程组”节点下多了“HTTP请求默认值”节点
这里可以设置主机地址等一下公共参数,比如我们的例子中请求路径前面都是主机地址+index.php,就可以统一在"http请求默认值"里设置
填写默认请求名、服务器、默认请求路径,保存测试计划。
5.添加http请求信息头
这一项并不是必须的,只不过我们的例子中使用了Userid和Token放在HTTP请求头中用作用户验证
右键“Apitest”,选择“添加”→ “配置元件”→“HTTP信息头管理器”
6. 添加http请求
右键“Apitest”,选择“添加”→ “Sampler”→“HTTP请求”
添加成功后,出现新的节点“HTTP请求”,就可以填写具体的请求参数了。
填写完成,保存测试计划
7. 添加监听器:
右键线程组,选择“添加”→“监听器”→“XXXXXXXXX”
可以添加的监听器有很多种,可以添加多个监听器,这里我们添加几个常用的“图形结果”、“察看结果树”、“聚合报告”
添加成功后,“线程组”下增加了几个节点
8. 试运行
点击执行
可以查看各个“监听器”的结果
Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
#Samples:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
Average:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,也可以以Transaction 为单位显示平均响应时间
Median:中位数,也就是 50% 用户的响应时间
90% Line:90% 用户的响应时间
Note:关于 50% 和 90% 并发用户数的含义,请参考下文
http://www.cnblogs.com/jackei/archive/2006/11/11/557972.html
Min:最小响应时间
Max:最大响应时间
Error%:本次测试中出现错误的请求的数量/请求的总数
Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数
KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec
9. 修改线程组的线程数等参数,用于压力测试
点击左侧树形导航中的“线程组”
设置上面几个参数,模拟的总的请求数是:线程数*循环次数。执行一下,用“图形结果”监听器查看一下
样本数目:总共发送到服务器的请求数.
最新样本:代表时间的数字,是服务器响应最后一个请求的时间.
吞吐量:服务器每分钟处理的请求数.
平均值:总运行时间除以发送到服务器的请求数.
中间值:时间的数字,有一半的服务器响应时间低于该值而另一半高于该值.
偏离:服务器响应时间变化、离散程度测量值的大小,或者,换句话说,就是数据的分布.
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)