1.什么是软件测试
1.1软件测试的定义:
什么是软件测试:
在规定条件下对程序进行操作,从而发现问题,对软件质量进行评估的过程。
软件测试的目的:
以最少的人力、物力、时间找到软件中的缺陷并修改,从而回避商业风险。
软件测试的定义:
使用人工和自动手段来运行程序,目的在于检验是否满足了需求。
软件测试的原则:
①所有测试追溯到用户需求。
②
③
④
⑤
⑥
⑦
⑧
⑨
⑩
正向思维:
①出发点:使自己确信产品是能够正常工作的评价一个程序和系统的特性或能力,并确定它是否达到预期的结果,软件测试就是以此为目的的任何行为。
反向思维:
①出发点:测试是为发现错误而执行一个程序或者系统的过程。
②目的:测试是为了证明程序有错,而不是证明程序无错。
③意义:一个好的软件测试用例在于它能发现以前未发现的错误,一个成功的软件测试是发现了以前未发现的错误的测试。
IEEE定义的软件测试:
①在规定条件下运行系统或构件的过程:观察和记录结果,并对系统或构件的某些方面给出评价。
②分析软件项目的过程:检测现有状况和所需状况之间的不同,并评估软件项目的特性。
电气与电子工程师协会(Institute of Electrical and Electronics Engineers),简称IEEE
广义的软件测试定义:
①软件测试是对软件形成过程中的所有工作产品(包括程序以及相关文档)进行测试,而不仅仅是对程序的运行进行测试。
②确认(Validation):通过检查和提供客观证据来证实特定目的的功能或应用是否已经实现。
③验证(Verification):通过检查和提供客观证据来证实指定的需求是否满足。
测试和调试的区别:
测试 | 调试 | |
主体 | 测试人员 | 开发 |
目标 | 找bug | 将错误修改正确 |
方法 | 等价类、边界类 | 程序和逻辑算法 |
思路 | 反向思维 | 正向思维 |
2.软件工程
2.1软件
软件危机成因:引起软件危机的主要问题是软件质量问题。
软件工程的目的:软件工程主要解决的就是软件质量问题。
软件测试的目的:软件测试是软件质量管理体系中一个非常重要的手段。
2.2瀑布模型
2.2.1瀑布模型定义:最早提出的软件开发的过程模型。
2.2.2瀑布模型存在的问题
①强调时间顺序的严格执行,前阶段不完成,后阶段不开始。
②将测试放在了编码之后。没有体现出测试贯穿软件生命周期的原则。可以避免需求的问题一直延续到代码完成才暴露或者被发现。
2.2.3瀑布模型的优缺点
优点:
①为项目提供了按阶段划分的检查点。
②当前一阶段完成后,只需要去关注后续阶段。
③可在迭代模型中应用瀑布模型
缺点:
①各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。
②线性开发,用户等到整个过程的末期才能见到开发成果,从而增加了开发风险。
③瀑布模型不适应用户需求的变化。
2.3螺旋模型
定义:螺旋模型是一种演化软件开发过程模型,它兼顾了快速原型的迭代的特征以及瀑布模型的系统化与严格监控。
特点:最大的特点在于引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失。
同时,在每个迭代阶段构建原型是螺旋模型用以减小风险的途径。
适用范围:螺旋模型更适合大型的昂贵的系统级的软件应用。
3.测试用例概述
3.1测试用例的定义
①测试用例(Test Case)的目的:是为特定目的而设计的一组测试输入、执行条件和预期的结果,以便测试某个程序路程或核实是否满足某个特定需求。
②通过大量的测试用例来检验软件的运行效果,它是指导测试工作进行的依据。
输入数据 ——执行条件和执行步骤——预期结果
③测试用例(Test Case)是为了高效率地发现软件缺陷而设计的少量测试数据。
④代表性、特殊性:实际测试中,由于无法穷举测试,所以要从大量输入数据中精选有代表性、特殊性的数据作为测试数据。
⑤好的测试用例应该能发现尚未发现的软件缺陷。
3.2测试用例的特性
①有效性:测试用例能够被使用,且被不同人员使用测试结果一致。
例:任务重新分工,用别人写的用例。
②可复用性:良好的测试用例具有重复使用的功能。
例:回归测试。
③易组织性:好的测试用例会分门别类地提供给测试人员参考和使用。
例:测试用例按功能、性能、易用等分类编号。
④可评估性:从测试管理的角度,测试用例的通过率和软件缺陷的数目是软件产品质量好坏的测试标准。
例:测试计划中提到的测试通过的标准,直接影响到软件是否发布。
⑤可管理性:测试用例可以作为检验测试人员进度、工作量以及跟踪、管理测试人员工作效率的因素。
例:测试人员的工作量计算、绩效考核。
3.3测试用例的编制要素
3.4测试用例的设计原则