测试用例
概念
什么是测试用例?
测试用例(Test Case)是为了实施测试而向被测试的系统提供的⼀组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素。
设计测试用例原则⼀:测试用例中⼀个必需部分是对预期输出或结果进行定义。
现在买回来一个新的电视机,进行测试:
根据个人经验-
- 开机测试
- 切换频道
- 调一下分辨率
- 测试一下网络电视
- 蓝牙功能
- ......
这些是买完后一定会做的测试内容,而这些测试内容并不会写到纸上。
软件中涉及到的特性太多了,仅仅通过自己想无法进行一次完整的测试。通过编写测试用例我可以想到要测试哪些内容,通过一次又一次的更新修改将测试用例写到完成,功能覆盖更高即可。
笔试的时候编写测试用例题,需要按照excel表格的方式来答题(涉及到测试用例的要素)。而面试的时候回答测试用例题,按照思维导图的方式一一道来(不会涉及到测试用例的要素)。
什么是要素?我们在编写测试用例的时候,每个用例需要给出这些要素对应的信息。



设计测试用例的万能公式
现在有一款产品,要求我们对"门锁"设计测试用例,假如你是测试人员,你会怎么设计呢?
可以看出,用例的设计最重要的⼀点是保证功能是正确的。上图给出的案例,在互联网企业中,这样去设计测试用例非常少。
工作中测试用例不是越多越好,而是能够达到更大的功能覆盖率是最好的。学习中测试用例的设计越多越好!(证明思维发散能力如何)
常规思考+逆向思维+发散性思维
- 测试用例的编写不仅应当根据有效和预料到的输入情况,而且也应该根据无效和未预料到的输入情况。
- 检查程序是否"未做其应该做的"仅是成功的⼀半,测试的另⼀半是检查程序是否"做了其不应该 做的"。(是上⼀条原则的必然结果)
- 计划测试⼯作时不应默许假定不会发现错误。
万能公式
打开思维后进行设计测试用例想到一条说一条,如果没有正确的引导,说出来的测试用例一定是有限的且数量不容乐观的。
假如让你说出家里的电器:你会想到好多但是会卡壳,但是我给你提示你就会想到。万能公式就是一个引导的作用。帮助大家按照分类来设计测试用例。
设计测试用例的万能公式:功能测试+界面测试+性能测试+兼容性测试+易用性测试+安全测试。
**功能测试:**从产品功能角度出发,验证功能功能是否是正确的。
界面测试: 肉眼可看到的部分都是界面,界面所有的元素都要测试。界面设计用到的内容:元素(大小,颜色,材质--可以摸到的,形状)
**性能测试:**通常在极端的情况,性能测试和功能测试的区别是:功能测试检查软件是否做了,而性能测试测试软件做的好不好。比如法拉利和五菱比较百里加速。
兼容性测试:涉及到不同的运行环境/版本。软件是部署在硬件系统之上,并依赖所需要的软件环境。如QQ可以在PC端打开,也可以在移动端打开;移动端又分为IOS系统和Android系统,且市面上手机又有不同的品牌、不同的机型、不同的版本。软件是否能够在不同的环境下正确运行需要测试人员进行验证。
- 优先选择使用当前产品top级别的机型进行测试,实际在企业中,后台是可以获取到使用产品的机型,并以报表的形式统计在后台,供产品人员或其他人员制定策略参考。
- 选择主流的浏览器/机型进行测试
**易用性测试:**具备简单易上手的属性(引导教程)
**安全测试:**明文/密文展示或接口响应数据也要考虑到用户数据的安全性或通过用户表来保存账号和密码,而密码通过加密算法如MD5来保存--数据库存储用户隐私数据是否加密。或后端获取到用户输入的账号和密码后,会进行sql拼接查询数据库:
SELECT * FROM users WHERE username = 'alice' AND password = '123456';
SELECT * FROM users WHERE username = or 1=1 and password = '123456';//or 1=1会将users表中的所有用户信息返回;
使用万能公式对水杯进行用例的设计:

弱网测试
弱网测试(网不好时)的目的就是尽可能保证用户体验--为了覆盖更多的场景,关注的关键点包括:
- 页面响应时间是否可以接受,关注包括热启动、冷启动(冷启动就是从零开始加载,热启动是复用已有状态)时间、页面切换、前后台切换等。
- 页面呈现是否完成⼀致。
- 超时文案是否符合定义,异常信息是否显示正常。
- 是否有超时重连。
- 安全角度:是否会发生dns劫持、登陆ip更换频繁、单点登陆异常等。
- 大流量事件风险:是否会在弱网下进行更新apk包、下载文件等大流量动作。

如何进行弱网测试?
2G 3G 5G等,不需要不同的手机,而是用工具来进行弱网测试:抓包工具-fiddler
数字越大则会显示数据正在加载中。
安装卸载测试
针对需要进行部署的软件,除了软件功能外,我们还需要关注软件的能够成功安装和卸载。