软件测试读书笔记(佟伟光著)

2021-01-11  本文已影响0人  NJUST江波

一、软件测试概述

1.1 软件、软件危机和软件工程

程序是指按特定的功能和性能要求而设计的能够执行的指令序列;
数据是指程序能正常操纵、处理的信息及其数据结构;
文档是指与程序设计开发、维护和使用有关的图文材料。
软件危机:
(1)软件生产不能满足日益增长的软件需求,软件生产率远低于硬件生产率和计算机应用的增长率,社会出现了软件供不应求的局面。更为严重的是,软件生产效率随软件生产规模的增加和软件复杂性的提高而急剧下降。
(2)软件生产率随软件规模与复杂性提高而下降,智力密集型行业的人力成本不断增加,这些都导致软件成本在计算机系统成本构成中的比例急剧上升。
(3)软件开发的进度与成本失控。人们很难估计软件开发的成本与进度,通常情况是预算成倍突破,项目计划一再延期。软件开发单位为了赶进度、节约成本,往往只有降低软件质量。软件开发陷入成本居高不下、质量无保证、用户不满意、开发单位信誉降低的怪圈中。
(4)软件系统实现的功能与实际需求不符。软件开发人员对用户需求缺乏深入的理解,往往急于编写程序,闭门造车,最后完成的软件与用户需求相距太远。
(5)软件难以维护。程序中的错误很难改正,要想使软件适应新的运行环境几乎不可能,软件在使用过程中不能增加用户需要的新功能,大量的软件开发人员在重复开发基本类似的软件。
(6)软件文档配置没有受到足够的重视。软件文档包括开发过程各阶段的说明书、数据词典、程序清单、软件使用手册、维护手册、软件测试报告和测试用例等。这些软件文档的不规范、不健全是造成软件开发的进度、成本不可控制和软件的维护、管理困难的重要原因。

1.2 软件工程的目标及其一般开发过程

从狭义上说,软件工程的目标是生产出满足预算、按期交付、用户满意的无缺陷的软件,进而当用户需求改变时,所生产的软件必须易于修改。从广义上说,软件工程的目标就是提高软件的质量与生产率,最终实现软件的工业化生产。
一般软件生存周期包括问题的定义、软件开发、软件测试、软件使用与维护等几个阶段。

1.3 软件过程模型

1.4 软件缺陷与软件故障

软件错误是指在软件生存期内的不希望出现或不可接受的人为错误,软件错误导致软件缺陷的产生。
软件缺陷是存在于软件(文档、数据、程序)之中的不希望出现或不可接受的偏差,软件缺陷导致软件在运行于某一特定条件时出现软件故障,这时软件缺陷被激活。
软件故障是指软件在运行过程中产生的不希望出现或不可接受的内部状态,对软件故障若无适当措施(容错)加以及时处理,就会使软件失效。
软件失效是指软件在运行时产生的不希望出现或不可接受的外部行为结果。

1.5 软件质量与质量模型

软件质量是与软件产品满足明确或隐含需求的能力有关的特征和特性的总和。
其含义有以下4个方面:

软件测试

软件测试定义:使用人工或自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清楚预期结果与实际结果之间的差别。
软件测试的原则:
尽早测试;全面测试;全过程测试;独立的、迭代的测试;Pareto原则:测试发现的错误中80%很可能起源于20%的模块中;对测试出的错误结果一定要有一个确认的过程;制订严格的测试计划;完全测试是不可能的,测试需要终止;妥善保存一切测试过程文档;注意回归测试的关联性。

软件测试过程模型

软件测试的分类

(1)功能测试。功能测试主要针对产品需求说明书对软件进行测试,验证软件功能是否符合需求,包括对原定功能的检验以及测试软件是否有冗余功能、遗漏功能。
(2)健壮性测试。健壮性测试侧重于对程序容错能力的测试,主要是验证程序在各种异常情况下是否能正确运行,包括数据边界测试、非法数据测试、异常中断测试等。
(3)接口测试。接口测试是对各个模块进行系统联调的测试,包括程序内接口测试和程序外接口测试。在接口测试中,测试人员在单元测试阶段进行一部分工作,大部分工作是在集成测试阶段完成的。
(4)性能测试。性能测试主要测试系统的性能是否满足用户要求,即在特定的运行条件下验证系统的能力状况。性能测试主要是通过自动化的测试工具模拟正常、峰值以及异常负载状况,对系统的各项性能指标进行测试,测试中得到的负荷和响应时间等数据可以被用于验证软件系统是否能够达到用户提出的性能指标。
(5)强度测试。强度测试是一种性能测试,强度测试总是迫使系统在异常的资源配置下运行。强度测试的目的是找出因资源不足或资源争用而导致的错误。
(6)压力测试。压力测试是一种性能测试,主要是在超负荷环境中,检验程序是否能够正常运行。压力测试的目的是检测系统在资源超负荷的情况下的表现,是通过极限测试方法,发现系统在极限或恶劣环境中的自我保护能力。压力测试的目标是确定并确保系统在超出最大预期工作量的情况下仍能正常运行。此外,压力测试还要评估软件的性能特征,例如响应时间、事务处理速率和其他与时间相关的性能特征。
(7)用户界面测试。用户界面测试主要对系统的界面进行测试,测试用户界面是否友好、软件是否方便易用、系统设计是否合理、界面位置是否正确等问题。
(8)安全测试。安全测试主要测试系统防止非法侵入的能力,例如测试系统在没有授权的内部或者外部用户对系统进行攻击或者恶意破坏时如何运行,是否能够保证数据的安全。
(9)可靠性测试。可靠性测试是指为了保证和验证软件的可靠性水平是否满足用户的要求而进行的测试,即确定软件是否满足软件规格说明书中规定的可靠性指标。软件可靠性测试的目的是给出可靠性的定量估计值,通过对软件可靠性测试中观测到的失效数据进行分析,可以评估当前软件可靠性的水平,验证软件可靠性是否达到要求。软件可靠性测试是一项高投入的测试工作,通常需要进行大量的测试。
(10)安装/反安装测试。安装测试主要检验软件是否可以正确安装,安装文件的各项设置是否有效,安装后是否影响整个计算机系统;反安装测试是逆过程,测试软件是否被删除干净,删除后软件是否影响整个计算机系统等。(11)文档测试。文档测试主要检查内部/外部文档的清晰性和准确性,对外部文档而言,测试工作主要针对用户的文档,以需求说明、用户手册、安装手册等为主,检验文档是否和实际应用存在差别,而且还必须考虑文档是否简单明了,相关的技术术语是否解释清楚等问题。
(12)恢复测试。恢复测试主要测试当出现系统崩溃、硬件错误或其他灾难性问题时系统的表现情况,以及系统从故障中恢复的能力。
(13)兼容性测试。兼容性测试主要测试软件产品在不同的平台、不同的工具软件或相同工具软件的不同版本下的兼容性,其目的是测试系统与其他软件、硬件兼容的能力。
(14)负载测试。负载测试是通过测试系统在资源超负荷情况下的表现,以发现设计上的错误或验证系统的负载能力。在这种测试中,将使测试对象承担不同的工作量,以评测和评估测试对象在不同工作量条件下的性能行为,以及持续正常运行的能力。负载测试的目标是确定并确保系统在超出最大预期工作量的情况下仍能正常运行。此外,负载测试还要评估性能特征。例如,响应时间、事务处理速率和其他与时间相关的方面。

软件测试流程

制订测试计划、设计测试、测试准备、测试环境的建立、执行测试、评估测试和总结测试。

上一篇 下一篇

猜你喜欢

热点阅读