软件故障案列
软件故障
1、浮点数计算的功能缺陷(功能问题)
2、系统不兼容
3、容错性问题
4、集成性问题
5、性能问题
软件测试的必要性
1、发布的软件中不可能完全消除缺陷
2、尽可能消除缺陷,降低风险
3、测试是消除缺陷的唯一有效手段
一、软件典型故障案列
类型不同 原因不同 -->缺陷永恒存在
二、软件测试的必要性
执行测试 发现缺陷 消除缺陷 -->降低风险
软件测试的价值
软件测试的作用
测试价值的案例分析
内容总结
正向思维–>验证软件正常工作–>测试是为了验证软件的特性或能力是否达到预期的结果,是否符合用户要求
逆向思维–>验证软件存在错误–>测试是为了发现至今未发现的错误,进而消除错误,直到找不到错误
软件测试的直接作用
少人力 少物力 少时间 修正错误和缺陷 提高质量 验证软件功能和特性,确认软件满足用户的需求
软件测试的间接作用
改善完善开发和测试流程
提高测试效果与软件质量
需求分析阶段引入一个缺陷
在测试执行阶段前修改成本为1
在编码阶段后修改成本为10
在维护阶段修改成本为100
在测试阶段前的每个阶段进行静态测试的缺陷消除率为50%
测试阶段的缺陷消除率为80%
缺陷消除率 = 发现缺陷数/总缺陷
软件质量模型
软件质量特性
从作用的角度来说,软件质量包括 客户明确需求,用户期望,软件运行要求
软件运行情况符合客户程度越高,则期望程度越高,软件质量越好
软件测试的分类
一、测试的分类方法
为什么要对软件测试进行分类?
软件测试是软件开发生命周期的一个重要环节,具有较高的复杂性。
从不同的角度对软件测试加以分类,使开发者在软件开发过程的不同层次、不同阶段对测试工作更好的执行和管理。
常见的测试分类方法 4种
按照测试目标分类:功能测试、性能测试、可靠性测试、安全性测试、易用性测试
按照执行方式分类:静态测试、动态测试
按照测试方法分类:为白盒测试、黑盒测试
按照测试阶段分类:单元测试、集成测试、系统测试、验收测试
二、静态测试与动态测试
静态测试过程中被测软件是否被执行 分为静态测试和动态测试
静态测试:不执行被测对象,通过检查、阅读进行分析,寻找缺陷
动态测试:运行被测对象,通过观察运行过程进行验证。
三、白盒测试与黑盒测试
白盒测试:已知被测对象内部工作过程,通过测试验证每种内部操作是否符合设计规格要求
黑盒测试:在完全不考虑被测对象内部结构的情况下,验证每种外部操作是否符合需求规格要求。
四、四个阶段测试
软件测试划分为四个阶段,分别为单元测试、集成测试、系统测试、验收测试。
单元测试:常常与编码同步进行,针对软件的最小组成单元进行测试,主要采用白盒测试方法,从被测对象的内部结构出发设计测试用例。
集成测试:将通过单元测试的组件按照设计规格说明书进行集成,在集成过程中同步测试各组成部分是否达到或实现相应技术指标及要求。
系统测试:对通过集成测试的系统进行整体性测试,验证系统功能性和非功能性需求的实现。
验收测试:针对用户需求,对通过系统测试的软件进行交付性测试,以确定系统是否满足验收标准,由用户或其他授权机构决定是否接受系统。
五、内容总结
软件测试过程模型
一、软件测试过程中模型的作用
在软件工程中,有很多成熟的软件开发模型,如瀑布模型、螺旋模型、增量模型等,这些模型指导我们如何去进行软件开发。
现有的软件开发模型没有充分强调测试的价值,无法很好地指导测试实践。软件测试是与软件开发相关的一系列有计划的系统性活动,需要定义专门的测试模型来指导实践。测试模型体现了测试与开发的紧密结合。
二、V模型
V模型描述了基本的开发过程和测试行为,明确了测试阶段与开发阶段的对应关系。
V模型的局限性:没有明确说明早期测试的重要性,不能提现“尽早开展测试”的原则
三、W模型
W模型的价值与意义:
1、注重在软件开发的各个阶段应用静态测试技术,使得在执行开发过程的同时执行测试,实现了真正到开发与测试并行。
2、强调尽早展开测试,能够在开发早期发现缺陷,降低缺陷修改成本。
W模型的局限性:
仍然将软件开发阶段视为串行活动,各阶段工作保持一种线性的前后关系,前一阶段结束后,下一阶段才可以开始,无法有效支持迭代及变更调整。
四、H模型
前面介绍了W模型将各项工作作为串行活动,而事实上,在实际软件开发过程中,这些工作存在互相牵制的关系,是可以交叉进行的。因此各种测试工作之间也不应该存在严格的次序关系。
五、内容总结