软件测试
写在前面:
软件测试人员永远都是幕后英雄!
软件测试人员永远不背锅!
软件=程序+数据+文档。所以软件测试是对软件相关的所有内容的测试
软件的分类
按层次划分
按组织划分
按结构划分
缺陷的由来
bug:明显的错误,没有达到预期结果,通常是软件缺陷(Defect)导致的一些软件故障,一个缺陷可能导致不同的Bug
defect:缺陷
软件缺陷的定义
定义
1.软件未实现产品说明书要求的功能
2.软件出现了产品说明书指明不应该出现的功能
3.软件实现了产品说明书未提到的功能
4.软件未实现产品说明书虽未明确提及但应该实现的目标
5.软件难以理解,不易使用,运行缓慢或者(从测试角度看)最终用户会认为不好
小结
1.所有不满足需求或超出需求的都是缺陷
2.没有不存在缺陷的软件,只有迄今为止尚未发现的缺陷
软件测试的由来
1.起源于上世纪70年代中期
软件测试的定义
1.正向思维的定义
出发点:使自己确信产品是能够正常工作的的评价一个程序和系统的特性或能力,并确定她是否达到期望的结果,软件测试就是以此为目的的任何行为(基础)
2.反向思维的定义(重点核心)
1.出发点:测试是为发现错误而执行一个程序或者系统的过程
2.测试是为了证明程序有错而不是证明程序无错
3.一个好的测试用例在于它能发现以前未发现的错误
4.一个成功的测试是发现了以前未发现的错误的测试
3.ieee定义的软件测试
1.在规定条件下运行系统或构件的过程:观察和记录结果,并对系统或构件的而某些方面给出评价
2.分析软件项目的过程:检测现有状况和所需状况之间的不同,并评估软件项目的特性
4.广义的软件测试
1.软件测试是对软件形成过程中的所有工作产品(包括程序以及相关文档)进行的测试,而不仅仅是对程序的运行进行测试
相关概念(特殊术语)
1.确认(Validation):通过检查和提供客观证据来证实特定目的的功能或应用是否已经实现(有没有:存在性)
2.验证(Verification):通过检查和提供客观证据来证实指定的需求是否满足(对不对:正确性)
软件测试的目的
1.直接目的:以最少的人力、物力-(软硬件设备)和时间找出软件中潜在的各种错误和缺陷,保证各种错误和缺陷得以修复,避免软件发布后由于潜在的软件错误和缺陷造成的隐患所带来的商业风险
2.深入目的:同时利用测试过程中得到的测试结果和测试信息,作为后续项目开发和测试过程改进的重要输入,避免在将来的项目开发和测试中重复同样的错误
3.采用更加高效的测试管理手段,提高软件测试的效率和软件产品的质量
//(软件测试本身并不能直接提高软件产品质量:测试发现问题,开发解决问题)
测试和调试的区别
1.在主题、目标、方法和思路上有所不同
2.测试是从已知的条件开始,使用预先定义的过程,并且有预知的结果;调试是从未知的条件开始,结束的过程可能不可预计
3.测试可以计划,可以预先指定测试用例和过程,工作量可以度量;描述调试的过程或持续时间相对比较困难
4.测试的对象包括开发过程中的文档、数据以及代码,而调试的对象一般来说只是代码
软件测试无处不在
软件测试贯穿于整个软件生命周期中
文档
单元测试
集成测试
确认测试
系统测试
验收测试