软件测试概述
程序+文档+数据=软件
狭义的软件测试定义:为发现软件缺陷而执行程序或系统的过程
广义的软件测试定义:人工或自动地运行或测定某系统的过程,目的在于检验它是否满足规定的需求或弄清预期结果和实际结果间的差别
为什么要做软件测试
- 发现软件缺陷
- 功能错误遗漏超出需求部分(画蛇添足)性能不符合要求
软件质量高低:是否符合用户习惯、符合用户需求
测试的任务
- 找出
- 定位
- 修改
- 修改后要做回归测试,对已修改的部分进行再次的测试,避免引入新的错误
测试用例的定义和组成部分
- 测试用例是为特定的目的而设计的一组测试输入、执行条件和预期的结果。测试用例是执行的最小实体。简单地说,测试用例就是设计一个场景,使软件程序在这种场景下,必须能够正常运行并且达到程序所设计的执行结果。
- 包含
- 用例ID
- 用例名称
- 测试目的
- 测试环境
- 前提条件
- 测试步骤
- 预期结果
- 其他信息
一个好的高质量的测试用例在于能发现至今未发现的错误,一个成功的测试是发现了至今未发现的错误的测试
两个方向
- 找错误,反向思维。
- 证明能正常工作,正向思维。
- 目前的方法出发点一般是“找错误”,因为没法证明软件是正确的。
用户需求
![da6a29e182cdfa08b738b6442a1c52ee.png](https://img-blog.csdnimg.cn/img_convert/da6a29e182cdfa08b738b6442a1c52ee.png)
什么时候停止测试
- 继续测试没有产生新的失效
- 继续测试没有发现新缺陷
- 回报很小
- 以达到要求的覆盖
- 无法考虑新的测试用例(若已遵循测试规则和指导方针,则可以选择)
测试过程模型
缺陷具有放大的特点,随着阶段的推进发现bug的成本会指数型上升,所以并不是代码级的测试才叫测试,而是开发过程各个阶段越早开始测试越好。
- 瀑布模型:需求分析->设计(概要、详细)->编程->测试(单元、集成、系统)->维护
- V模型(瀑布-改):在软件开发的生存期,开发活动和测试活动几乎同时的开始,如概要设计阶段结束后集成测试的测试用例就出来了、详细设计阶段结束后单元测试的测试用例也就出来了等
- W模型(V模型更加细化、每步都加测试,边造软件边进行测试):需求分析加了需求测试、概要设计加了功能测试、详细设计加了设计测试、编码加了单元测试、集成加了集成测试、确认加了确认测试、验收加了系统测试
- H模型:无实际意义,仅说明可以独立测试
软件测试的原则
- 所有的测试都应追溯到用户的需求
- 尽早地和不断地进行软件测试(缺陷具有放大的特点,测试成本随阶段深入而上升)
- 8-2原则
- 测试中发现的错误80%很可能起源于程序中的20%
- 提前测试可发现80%,系统测试找出剩余bug的80%(总体的16%),最后的4%可能只有用户大范围长时间使用后才暴露出来
- 80%的工程用在20%的需求上(即关键需求)
- …
- 软件缺陷的寄生虫性:找到的缺陷越多说明软件遗留的缺陷越多
- 避免自己测试自己的程序
- 回归测试:避免引入新的错误
软件测试流程
制定测试计划->测试设计->测试开发->测试执行->评估测试
注意
- 测试不是开发后期的一个阶段
- 测试入门其实稍容易,但要求技术一样高
- 测试多数情况下不能覆盖所有输入
- 不要“有时间多测&