《软件测试的艺术》总结

首先这本书是软件测试行业必读书之一,仔细阅读肯定有他的厉害之处,应该是最后写的一篇测试相关的观后感了,之前有瞄了眼《Google软件测试之道》,看了下大厂的软件测试从功能性测试慢慢转变到测试开发的历程,从而惊叹不已。
软件测试的心理学和经济学
对于测试,更为合适的定义是:测试是为发现错误而执行程序的过程
黑盒测试
黑盒测试是一种重要的测试策略,又称为数据驱动的测试或输入/输出驱动的测试。使用这种测试方法时,将程序视为一个黑盒子。测试目标与程序的内部机制和结构完全无关,而是将重点集中放在发现程序不按其规范正确运行的环境条件。
如果想用这种方式来发现程序的所有错误,判定的标准就是”穷举输入测试“,将所有可能的输入条件都作为测试用例。
白盒测试
允许我们检查程序的内部结构。
软件测试的原则
- 原则1:测试用例中一个必需部分是对预期输出或结果的定义。
- 原则2:程序员应当避免测试自己编写的程序。
- 原则3:编写软件的组织不应担测试自己编写的软件(扯淡吧)
- 原则4:应当彻底检查每个测试的执行结果。
- 原则5:测试用例的编写不仅应当根据有效和预期的输入情况,而且也应当根据无效和未预料到的输入情况
- 原则6:检查程序是否”未做其应该做的“仅是测试的一半。测试的另一半是检查程序是否”做了其不应该做的“。
- 原则7:应避免测试用例用后即弃,除非软件本身就是一个一次性的软件。
- 原则8:计划测试工作时不应默许假定不会发现错误
- 原则9:程序某部分存在更多错误的可能性,于该部分已发现错误的数量成正比。
- 原则10:软件测试是一项极富创造性、极具智力挑战性的工作。
check 代码
部分测试是从开发转过去的,那就尽可能的去阅读代码
代码检查与走查
代码检查、走查以及可用性测试是三种主要的人工测试方法。在代码走查中,一组开发人员(三到四人为最佳)对代码进行复核。其中只有一人是代码的作者。因此代码走查的主要工作是由其他人,而不是作者把本人完成的。
代码检查
以组为单位阅读代码,他是一系列规程和错误检查技术的集合。有个协调人,是非编码人员,编码人员逐行讲逻辑,小组其他成员应该提出问题,判断是否存在错误。一般是大声朗读的开发人员发现更多的问题。
设计测试用例
白盒测试
白盒测试关注的是测试用例执行的程度或覆盖程序逻辑结构的程度,所以有测试用例覆盖率一说。
- 将每个判断的所有结果都至少执行一次。
- 将所有的程序入口都至少调用一次,以确保全部的语句都至少执行一次。
黑盒测试
等价划分
确定这个子集的一种方法,就是要意识到一个精心挑选的测试用例还应具备另外两个特性:
- 严格控制测试用例的增加,减少为达到”合理测试“的某些既定目标而必须设计的其他测试用例的数量。
- 它覆盖了大部分其他可能的测试用例。
so~ 使用等价划分方法设计测试用例主要有两个步骤:
1)确定等价类
2)生成测试用例
边界值分析
经验证明,考虑了边界条件的测试用例与其他没有考虑边界条件 的测试用例相比,具有更高的测试用例回报率。
所谓边界条件,输入和输出等价类中那些恰到好处于边界、或超过边界、或在边界以下的状态。
不同:
- 与从等价类中挑选出任意一个元素作为代表不同,边界值分析需要选择一个或多个元素,以便等价类的每个边界都经过一次测试。
- 与仅仅关注输入条件(输入空间)不同,还需要考虑从结果空间设计测试用例。
单元测试
- 模块测试用例的编写形式。
- 可能用到的测试工具类型。
- 模块编码与测试顺序。
- 生成测试用例的成本以及调试的成本。
增量测试
需要考虑软件测试是否应独立地测试每个模块,然后再将这些模块组装成完整的程序
测试单独的模块需要一个特殊的驱动模块(driver module)和一个或多个桩模块(stub module)
自顶向下&自底向上的测试
都属于增量测试策略,从程序的顶部或初始模块开始。必须开发桩模块
自底向上策略和自顶向下的策略是相对立的。自底向上的策略开始于程序中的终端模块。必须开发驱动模块,知道最后一个模块添加进去,程序才形成一个整体
逼格更高的测试
功能测试
黑盒操作,等价类划分方法、边界值分析法、因果图分析方法和错误猜测方法尤其适合于功能测试。
系统测试
性能
QPS,TPS并发量对接口影响,压测
可用性&可靠性
用户体验可用,要能用软件才能生存,硬件和软件环境的可靠,不要运营商直接挂壁了。
安全测试
扫描漏洞,比如是否存在XSS攻击和sql注入等等
调试
归纳调试
认真的思考能发现大部分错误,这些思考路径就可以归纳出来。步骤:
- 确定相关数据
- 组织数据
- 做出假设
- 证明假设
- 解决问题
敏捷测试
敏捷开发提倡迭代式和增量式的开发模式,并强调测试在其中的重要作用。
本质上,敏捷测试是协同测试的一种形式,它要求每一个人都参与到测试计划的设计、实现以及执行中去。一般是开发编写单元测试,然后出发自动化测试流水线。
极限编程
XP是一种可以使开发人员快速生产高质量代码的软件开发过程。实践归为四个概念:
- 聆听客户和其他程序员的谈话
- 与客户合作,开发应用程序的规格说明和测试用例。
- 结对编程。
- 反复测试代码库。
XP中的测试也是偏向于单元测试
互联网应用测试 mark
表现层测试
网页或GUI
业务层测试
业务逻辑
数据层测试
数据库响应时间,数据完整性,sql
移动端测试
互联网时代,移动端测试很是麻烦、安卓、IOS、微信小程序、移动端浏览器等等适配。不同的机器也会展示不同。可以先测试线上模拟机,但是最后肯定要落地到实体机的。浏览器可以借助连接电脑打开chrome进行调试,其余就是抓包或者用特性连接了。
