(一)为什么要测试?
1. 软件系统逐渐成为生活中不可或缺的一部分
2. 软件缺陷是不可避免的
3. 软件系统缺陷可能导致很多问题,包括商业信誉的损失,工作的延期,金钱的损失,甚至人员的死亡
(二)测试的目的是什么?
1. 获得产品的能力,动机和可信性,通过构建必须的环境,利用实验的方式(提问->研究->建模->观察->推理)来学习产品,以便进行产品的风险评估,帮助客户做出风险决策。
(三)测试的目标层次
(1)提供决策信息:为最终决策者提供信息
(2)提升产品质量:预防产品缺陷,建立质量信息
(3)评估产品质量:消减风险,达成期望,评估质量
(4)验证产品需求:发现缺陷,评估缺陷,修改缺陷,实现变更
(四)测试的基本原则
(1)测试可以发现缺陷的存在,但是不能证明系统是不存在缺陷的
(2)穷尽测试是不可能的
(3)测试要尽早实施
(4)缺陷具有集群性
(5)杀虫剂悖论
(6)测试获得依赖于测试背景,测试背景决定测试活动
(7)系统发布取决于释放满足客户需求,不是取决于系统释放还存在缺陷
(五)测试的依据有哪些?
(1)业务要求
(2)合同要求
(3)法律标准
(4)行业标准
(六)测试Oracel是什么?
测试Oracel是一种决定一项测试是否通过的判断机制
(七)测试对象有哪些?
- 需求分析
- 概要设计
- 详细设计
- 软件代码
- 硬件原理图
- 软件
- 硬件
- 设备
- 随版本发布的资料
- License
- 证书等
(八)测试责任主体
测试是研发团队所有人的职责,不单单是测试人员的事,测试是一个系统工程,需要所有团队人员的参与。
(九)什么时候开始测试比较好?
测试开始越早,代价越低(Boehm’s Law)
(十)什么时候可以停止测试?
何时停止测试需要从多个维度进行综合评估,包括产品的功能或信息是否完备,产品的风险是否可控,测试退出的标准是否达到等。
(十一)测试场地(测试环境)有哪些
测试可以发生在产品生命周期的各个环境/活动的环境上
(十二)测试的基本过程
计划->控制->分析和设计->执行->评估->结束
(十三)测试评估过程
需要向利益干系人提供决策信息,包括以下方面:
产品故事:什么情况下可以工作,什么时候会失效,什么时候可能失效
测试故事:测试了什么,怎么测试的,观察到了什么,哪些内容打算测试还没有测试,还有哪些内容不打算测试
测试如何做得更好:测试的成本和风险有哪些?产品的可测试性怎么样?测试需要哪些帮助?测试对周边有哪些建议?
(十四)测试术语
错误:人为错误,不仅指代码逻辑错误,还包括产品生命周期中任何人为因素可能导致的错误
缺陷/故障:期望结果和实际结果之间的差异
失效:是缺陷导致的后果,通常系统不能完成最初的功能或实现最长的性能等
验证:评估产品,服务或者系统是否正常实现既定的需求和规格
确认:保证产品,服务或者系统满足客户和其他利益相关者的需求
软件质量属性:产品,组织和体系或过程的一组固有特性,反映它们满足顾客和其它相关方面要求的程度。场景的质量属性包括:安全性(Security),可靠性(Reliability),性能及效率(Efficiency),可用性(Usability),可维护性(Maintainability),兼容性(Compatibility),功能适应性(Functional Suitability)
(十五)测试基本活动
- 需求分析活动:测试人员需要参与需求分析活动,关注需求的价值,完备性以及可测试性,从不同的维度去获取测试Oracal。
- 测试策略活动:基于风险定义测试开展的优先级和测试覆盖的深度,越早发现风险,成本越低。
- 测试设计活动:熟悉IBO测试模型,了解常用的测试设计方法,不同的方法可以帮助测试人员识别不同类型的Bug。
- 测试执行和评估:用例执行和探索测试有效结合,不断识别新的风险,调整覆盖策略,讲好测试的三个故事,为利益干系人提供决策依据。
- 自动化测试:测试自动化不是手工执行的脚本化,是端到端测试活动的自动化和智能化。
参考文献:
《软件测试基础教程》
《测试分析设计测试类型说明》
《ISO/IEC/IEEE 29119》
《软件测试的目的》
《FEW HICCUPS》