软件测试的原理
1、什么是软件测试
通过人工或自动化的方式来验证软件的实际结果是否符合用户需求。
2、软件测试的原理
(1)测试可以证明缺陷存在,但不能证明缺陷不存在
测试可以证明软件是有缺陷的,但不能证明这个软件没有缺陷。
(2)穷尽测试是不可能的
考虑所有可能输入值和它们的组合,并结合不同的测试前置条件进行穷尽测试是不可能的。
(3)测试活动应当今早进行
在软件生命周期中,测试活动应当尽早开始,而且应当聚焦于定义的的目标上。这样可以今早发现缺陷,也避免过迟发现缺陷而增大维护成本。
(4)缺陷集群性。
通常情况下,大多数缺陷只存在于测试对象极小部分中。缺陷是集群分布的。因此,如果在一个地方发现了很多缺陷,那么通常在附近会有更多的缺陷。
(5)杀虫剂悖论
如果同样的测试用例被重复执行,会减少其有效性。先前没有发现的缺陷也不会被发现。因此,为了维持测试的有效性,应对测试用例进行不断修改和更新。这样软件中未被测试过的部分或者先前没有被使用过的输入组合就会重新执行,从而发现更多的缺陷。
(6)测试依赖于测试内容
测试必须与应用程序的运行环境和使用中固有的风险相适应。因此,没有两个系统可以以完全相同的方式进行测试。对于每一个软件系统,测试出口准则等等应当根据它们使用的环境分别量体定制。
(7)没有失效就是有用系统是一种谬论
找到失效,修正缺陷并不能保证整个系统可以满足用户的预期要求和需求。在开发过程中用户的早期介入和原型系统的使用就是为了避免问题的预防性措施。
3、软件测试模型
包含V模型、W模型、H模型、X模型
V模型
W模型(也叫双V模型)
4、测试流程
(1)需求分析
在测试前拿到产品的需求文档,进行需求分析及评审前先对需求文档进行详细阅读,对有疑问的地方进行标记。
具体可以从以下进行:
a.分析产品功能点
b.产品核心竞争力
(2)制定测试用例
a.使用思维导图列举测试大纲,尽量发散,想到什么写什么;先放后收,对测试点进行总结和归纳,标记重点测试模块,删除冗余或重复测试点。
b.可使用边界值法、等价类划分法、错误推测法、因果图法等设计案例。
c.根据测试大纲制定测试用例。
(3)测试用例评审
a.测试作为主导,联合开发、项目经理、PM进行测试用例评审。
b.可先讲解测试大纲,让开发、项目经理、PM心中对测试用例有个大概;然后再进行详细测试用例讲解。
(4)执行测试
a.根据测试用例执行测试
b.发现问题保留现场,记录测试方法,通知发开解决问题
c.覆盖测试用例之外若有时间可进行探索性测试。
(5)提交bug并推动bug解决
a.再bug管理工具上提交bug
b.推动开发解决问题,记录问题进展,一般聊天沟通。
(6)回归测试
a.对已修复的bug进行验证
b.对bug所在模块进行基本功能测试;整体进行冒烟测试,确保不会因为修改bug而引起其他功能出现问题。
(7)编写并提交测试报告
课使用金字塔原理设计测试报告,先总后分,上级统领下级,夏季推导出上级,缓缓相扣。
a.对Bug进行汇总,筛选出各个等级的bug存活情况
b.制定bug发现及解决曲线图,一般版本正常影视前期多,后期收敛,存活的是级别较低的bug
c.总结归纳版本情况,评估发布与否