什么是测试用例?
测试用例(TestCase)是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素。
设计测试用例原则一: 测试用例中一个必需部分是对预期输出或结果进行定义
什么是要素?我们在编写测试用例的时候,每个用例需要给出这些要素对应的信息。

为什么需要测试用例呢,不写测试用例可以进行测试吗?
测试中可能会遇到很多问题,诸如:
• 不知道是否较全面的测试了所有功能
• 测试的覆盖率无法衡量
• 对新版本的重复测试很难实施(回归测试⽆法仅通过人工测试的方式进行历史功能的回归)
• 存在大量冗余测试影响测试效率
测试用例的出现就是解决这些问题。另外,测试用例的作用还可以避免测试人员被迫背锅~~
实际中产品出现问题,第一责任人首先想到的是测试为啥没有测到?

上面展示的是传统的编写测试用例的方式,我们在学习敏捷模型的时候了解到,如今大多数企业采用的都是思维导图的方式来编写测试用例。以下课程内容包括日常用例练习都是用思维导图/脑图进行编写。
现在有一款产品,要求我们对“门锁”设计测试用例,假如你是测试人员,你会怎么设计呢?

可以看出,用例的设计最重要的一点是保证功能是正确的。上图给出的案例,在互联网企业中,这样去设计测试用例的非常少,缺乏经验的同学往往以这样的思路去设计。
正确设计测试用例的思想:常规思维 + 逆向思维 + 发散性思维 设计测试用例的原则二: 1.测试用例的编写不仅应当根据有效和预料到的输入情况,而且也应该根据无效和未预料到的输入情况。 2.检查程序是否“未做其应该做的”仅是成功的一半,测试的另一半是检查程序是否“做了其不应该做的”。(是上一条原则的必然结果) 3.计划测试工作时不应默许假定不会发现错误。

明白了设计测试用例是思维的正确还往往不够。
若仅仅通过头脑风暴去设计测试用例,那么当我们面对面试官时,能够想出来的用例是寥寥无几的, 所以在设计测试用例的时候需要有思路的去设计。
设计测试用例的万能公式:功能测试+界面测试+性能测试+兼容性测试+易用性测试+安全测试。

功能测试 功能测试是一个试图发现程序与其外部规格说明之间存在不一致的过程。外部规格说明是一份从最终用户的角度对程序行为的精确描述。功能测试通常是一项黑盒操作。在进行功能测试时,需要对规格说明进行分析以提炼测试用例,本课程中讨论的具体设计测试用例的方法尤其适用于功能测试。 然而,不仅是工作中还是面试中,可能会存在需求不明确的功能?这种情况下该如何进行功能测试? ◦ 查找其他相关文档,来帮助理解所要测试的产品需要完成的目标; ◦ 尽量多参加项目组内的会议,比如需求讨论、设计讨论、计划讨论等,能够加深对产品的理解; ◦ 召集相关人员,对你整理的结果进行讨论,通过评审后,这份文档就可以作为依据来设计你的case了; ◦ 如果是一款已经上线的产品,可以多使用产品,有不懂的问产品经理; ◦ 也可以去看历史bug,可以了解到一些需要关注的东西。 界面测试 对软件界面上所有的内容都需要进行测试。 要求: ◦ 整体界⾯测试界面的实现与设计图要求一致。 ◦ 界面元素测试 ▪ 控件操作验证 性能测试 性能测试和功能测试的区别是:功能测试检查软件是否做了,而性能测试测试软件做的好不好。 兼容性测试 软件是部署在硬件系统之上,并依赖所需要的软件环境。如QQ可以在PC端打开,也可以在移动端打开;移动端又分为IOS系统和Android系统,且市面上手机又有不同的品牌、不同的机型、不同的版本。软件是否能够在不同的环境下正确运行需要测试人员进行验证。 问:既然市面上有众多版本的机器,那么在执行兼容性测试时难道所有的机型都需要全面覆盖吗? 选取标准: • 优先选择使用当前产品top级别的机型进行测试 实际在企业中,后台是可以获取到使用产品的机型,并以报表的形式统计在后台,供产品⼈员或其他人员制定策略参考。 • 选择主流的浏览器/机型进行测试 易用性测试 易用性测试的标准是检查产品是否具备简单易上手的属性。假如测试人员从来没有安装或使用过该产品,作为一个新用户,对当前产品是否能够快速适用产品的使用流程。 安全测试 安全测试和性能测试一样都是比较大的领域。常见的安全问题如: 隐私数据明⽂显示。 参数未强校验导致SQL注入。 越权:普通用户也可以执行管理员权限的操作。
接下来继续尝试对门锁进行测试用例的设计,你能设计多少呢?

(推荐大家用一个叫XMind的软件来进行用例的设计)
除了万能公式之外,还有两个比较常用的测试类型:弱网测试、安装卸载测试
弱网测试
弱⽹测试的目的就是尽可能保证用户体验,关注的关键点包括:
• 页面响应时间是否可以接受,关注包括热启动、冷启动时间、页面切换、前后台切换、首字时间, 首屏时间等。
• 页面呈现是否完成一致。
• 超时文案是否符合定义,异常信息是否显示正常。
• 是否有超时重连。
• 安全角度:是否会发生dns劫持、登陆ip更换频繁、单点登陆异常等。
• 大流量事件风险:是否会在弱网下进行更新apk包、下载文件等大流量动作。

弱 ⽹需要借助⼯具来构造弱⽹,这⾥推荐使⽤fiddler(为啥推荐?答:因为俺用得惯) 1)fiddler配置代理 2)fiddler进行抓包(桌面/移动端) 3)fiddler如何构造弱网条件


对于我们上面讲到的弱网测试,没必要去记住2G,3G分别是多少,容易出错,用的时候随时百度即可
安装卸载测试
针对需要进行部署的软件,除了软件功能外,我们还需要关注软件的能够成功安装和卸载
