一、什么是软件测试?
百度百科中是这样写的:
软件测试(英语:Software Testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出之间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
一句话形容,其实软件测试就是通过人力或者计算机来测试某一软件是否正确的实现了它所需要实现的功能。
二、软件测试的目的:
一、软件测试的目的
1)软件测试是为了发现错误而执行程序的过程。
2)测试是为了证明程序有错,而不是证明程序无错。(发现错误不是唯一目的)
3)一个好的测试用例在于它发现至今未发现的错误。
4)一个成功的测试是发现了至今未发现的错误的测试。
注意:
1、测试并不仅仅是为了要找出错误。通过分析错误产生的原因和错误的分布特征。可以帮助项目管理者发现当前所采用的软件过程的缺陷,以便改进。同时,通过分析也能帮助我们设计出有针对性的检测方法,改善测试的有效性。
2、没有发现错误的测试也是有价值的,完整的测试是评定测试质量的一种方法。详细而严谨的可靠性增长模型可以证明这一点。例如Bev Littlewood发现一个经过测试而正常运行了n个小时的系统有继续正常运行n个小时的概率。
三、软件测试的原则:
1)应当把“尽早地不断地进行软件测试“作为软件开发者的座右铭。
2)测试用例应由测试数据和与之对应的预期输出结果这两部分组成。
3)程序员应避免检查自己的程序。
4)在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。
5)充分注意测试中的群集现象。
6)严格执行测试计划,排除测试的随意性。
7)应当对每一个测试结果做全面的检查。
8)妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。
四、软测行业中流行的软件质量模型的6大特性和27个子特性
ISO9126质量模型:软件质量模型的6大特性和27个子特性。
ISO9126软件质量模型是评价软件质量的国际标准,由6个特性和27个子特性组成,建议大家深入理解各特性、子特性的含义和区别,在测试工作需要从这6个特性和27个子特性去测试、评价一个软件。这个模型是软件质量标准的核心,对于大部分的软件,都可以考虑从这几个方面着手进行测评。
其6大特性和27个子特性
1、功能性
1)适合性:提供了相应的功能
2)准确性:正确(用户需要的)
3)互操作性:产品与产品之间交互数据的能力
4)保密安全性:允许经过授权的用户和系统能够正常的访问相应的数据和信息,禁止未授权的用户访问
5)功能性的依从性:国际/国家/行业/企业 标准规范一致性
2、可靠性:产品在规定的条件下,在规定的时间内完成规定功能的能力
1)成熟性:防止内部错误导致软件失效的能力
2)容错性:软件出现故障,自我处理能力
3)易恢复性:失效情况下的恢复能力
4)可靠性的依从性
3、易用性:在指定使用条件下,产品被理解、 学习、使用和吸引用户的能力
1)易理解性
2)易学性
3)易操作性
4)吸引性
5)易用性的依从性
4、效率性:在规定台条件下,相对于所用资源的数量,软件产品可提供适当性能的能力
1)时间特性:平均事务响应时间,吞吐率,TPS(每秒事务数)
2)资源利用性:CPU 内存 磁盘 IO 网络带宽 队列 共享内存
3)效率依从性
5、软件维护性:"四规", 在规定条件下,规定的时间内,使用规定的工具或方法修复规定功能的能力
1)易分析性:分析定位问题的难易程度
2)易改变性:软件产品使指定的修改可以被实现的能力
3)稳定性:防止意外修改导致程序失效
4)易 测试性:使已修改软件能被确认的能力
5)维护性的依从性
6、软件可移植性:从一种环境迁移到另一种环境的能力
1)适应性:适应不同平台
2)易安装性:被安装的能力
3)共存性
4)易替换性
5)可移植性的依从性
五、测试的基本流程
软件测试的流程
立项阶段-需求阶段----设计阶段----编码和单元测试阶段----集成测试阶段----系统测试阶段-----验收测试阶段-----结项总结阶段
补充:
根据不同的测试阶段,测试可以分为单元测试、集成测试、系统测试和验收测试,体现了测试由小到大、又内至外、循序渐进的测试过程和分而治之的思想。
单元测试的粒度最小,一般由开发小组采用白盒方式来测试,主要测试单元是否符合“设计”。
集成测试界于单元测试和系统测试之间,起到“桥梁作用”,一般由开发小组采用白盒加黑盒的方式来测试,既验证“设计”,又验证“需求”。
系统测试的粒度最大,一般由独立测试小组采用黑盒方式来测试,主要测试系统是否符合“需求规格说明书”。
验收测试与系统测试相似,主要区别是测试人员不同,验收测试由用户执行。
黑盒测试不考虑程序内部结构和逻辑结构,主要是用来测试系统的功能是否满足需求规格说明书。一般会有一个输入值,一个输入值,和期望值做比较。
白盒测试主要应用在单元测试阶段,主要是对代码级的测试,针对程序内部逻辑结构,测试手段有:语句覆盖、判定覆盖、条件覆盖、路径覆盖、条件组合覆盖
集成测试主要用来测试模块与模块之间的接口,同时还要测试一些主要业务功能。
系统测试是在经过以上各阶段测试确认之后,把系统完整地模拟客户环境来进行的测试。