软件测试的生命周期
需求分析 - 测试计划 - 测试设计、测试开发 - 测试执行 - 测试评估
测试用例要素
测试环境、操作步骤、测试数据、预期结果
测试用例的要素没有执行结果。
测试用例要素不需要执行结果,因为执行结果需要执行完测试用例才会知道,没有测试用例,自然没有执行结果。
测试用例好处
- 提高测试效率,节省测试时间
- 测试用例是自动化测试用例的前提
测试用例的设计方法
基于需求的设计方法
基于需求的设计方法的参考标准:需求文档,针对需求进行大概的测试
需求文档 - 梳理需求 - 针对文档(基于需求)设计测试用例
- 功能
- 业务流程
- 界面
- 易用性
- 非功能
- 兼容
- 性能
- 安全
- 网络
等价类
依据需求,将输入划分为若干个等价类,从等价类中选出一个测试用例,如果这一个测试用例测试通过,认为所代表的等价类测试通过,这样就可用较少的测试用例达到尽量多的功能覆盖,解决不能穷举测试的问题。
有效等价类:满足用户需求输入集合
无效等价类:不满足用户需求的输入集合
等价类思想设计测试用例步骤
- 充分理解需求
- 划分有效等价类,划分无效等价类
- 从有效等价类中抽取其中一个数据进行设计测试用例;从无效等价类中抽取其中一个数据进行设计测试用例。
用户需求:用户名 6到15位
边界值法
用户需求:用户名 6到15位
userName(String username) {
usernameLength = username.length;
if (usernameLength >= 6 && usernameLength <= 15) {
//注册成功
} else {
//注册失败
}
}
上点:边界上的点
内点:边界内的点
离店:边界值附近的一个点(闭区间:区间外距离上点最近的点;开区间:区间内距离上点最近的点。)
区间 [6,15]:
上点:6,15
内点:7 - 14的任意一点
离点:5,16
区间(6,15]:
上点:6,15
内点:6 ~ 15的任意一点
离点:7,16
边界值设计测试用例的方法:
- 充分理解需求
- 找边界点
- 针对边界点设计测试用例
判定表
判定表是一种表达逻辑判断的工具
关系:
与:所有的条件必须满足,如果其中一个条件不满足,结果为假
或:满足其中一个条件就为真,如果条件全部为假,结果为假
恒等:条件为真,结果一定为真
非:条件为假,结果为真
设计测试用例:
- 分析所有可能的输入和可能的输出
- 找出输入和输出之间的对应关系
- 设计判定表
- 把判定表对应到每个测试用例
例子:
假设业务单据的处理规则为:淘宝618活动,订单已提交,订单合计金额大于300元或者有红包,则进行优惠。
输入:订单已提交,订单金额大于300,有红包
输出:优惠、不优惠
- 订单已提交,金额大于300,有红包 : 优惠
- 订单已提交,金额大于300,没有红包 : 优惠
- 订单已提交,金额小于300,有红包 : 优惠
- 订单已提交,金额小于300,没有红包 : 不优惠
- 订单没有提交,金额大于300,有红包 : 不优惠
- 订单没有提交,金额大于300, 没有红包 : 不优惠
- 订单没有提交,金额小于300,有红包 : 不优惠
- 订单没有提交,金额小于300,没有红包 : 不优惠
判定表:
正交表法
什么是正交表
名词
因素:试验中,考察的变量
水平:变量的取值
性质
每一列中各数字出现的次数一样多
任何两列中的各有序数对出现的次数都一样多
正交表设计测试用例
- 充分理解需求
- 确定因素水平
- 画正交表
- 补充正交表
- 将正交表转换成测试用例
example:
以注册的需求为例:
姓名、邮箱、密码、确认密码、验证码必须全部输入,才能进行注册
因素:姓名、邮箱、密码、确认密码、验证码
水平:填写、不填写
画正交表:allpairs
工具
- 将水平和因素填写到 Excel 中
- 将excel表格复制到 txt 文件中
- 将txt文件保存到allpairs
- 在命令行下进入allpairs文件夹
- 执行allpairs.exe filename.txt > filename_result.txt
- wenjianming_result.txt下的TEST CASES就是测试用例 ( ~表示此时取值可以是是,也可以是否 )
场景设计法
主事件流:用户经常使用的场景构成的事件
次事件流:使用场景中出现的意外构成的
通常情况下,需要把用户经常使用的功能串联起来一起进行测试
例子:ATM取款
错误猜测法
如何模拟弱网【面试题】
借助工具 Charles、fiddler
fiddler模拟弱网
- 打开限速模式
这里表示的就是上传下载的速率
在配置中
if (m_SimulateModem) {
// Delay sends by 300ms per KB uploaded. 上传1KB数据,花费时间300ms
oSession["request-trickle-delay"] = "300";
// Delay receives by 150ms per KB downloaded. 下载1KB数据,花费时间150ms
oSession["response-trickle-delay"] = "150";
}
接口如何测试
- 针对HTTP方法进行测试
- 针对接口的参数进行测试(传参数、不传参数、传入非法参数)
- 参数通过parameter、json传递
代码测试
如何对一个冒泡排序的代码进行测试
- 方法参数(参数类型、不给参数、参数传递为空)
- 异常处理
- 代码规范
- 语句覆盖
- 条件覆盖
- 语句条件覆盖
- 判定覆盖
- …
zip命令测试
Linux命令:zip命令
- 功能
- 打包的文件是一个不存在的文件
- 命令使用正确,文件也存在,文件是否被压缩
- 能否一次性打包多个文件
- 打包后的内容是否有缺失
- …
- 界面
- 打包后的zip包是否高亮
- 打包后的文件名后缀是不是 .zip
- …
- 易用
- 输入错误,此时有没有提示
- 性能
- 打包一个1KB的文件时间是多少
- 打包一个20GB的文件时间是多少
- 一次打包多个
- …
测试用例设计万能公式
功能、界面、易用、兼容、性能、安全、网络、中断…
- 功能
- 物体:这个物体主要是用来干嘛的(最基本的功能)
- 软件:软件需要实现的功能(需求文档)
- 界面
- 物体:外表、材质、大小、容量
- 软件:界面布局、图片大小、字体大小、字体颜色、页面布局
- 易用
- 经验(操作简单、使用流畅),人性化
- 兼容
- 物体:物体除了本质的功能,还有没有其他的功能
- 软件:操作系统、设备(手机、电脑,不同品牌)、浏览器版本、
- 性能
- 物体:使用寿命
- 软件:响应时间、吞吐量、并发数、CPU占用率
- 安全
- 物体:物体材质是否有毒,会不会对人体健康造成威胁
- 软件:sql注入、xss漏洞、输入有毒脚本、密码加密存储,加密传输,权限控制
- 网络
- 软件:2G - 5G、弱网、WiFi
- 中断
- 闹钟,短信,电话,切换中断…
水杯测试用例
微信发朋友圈测试用例
发送内容类型
大小
权限
排版
…