软件评测基础知识
软件测试基本概念
软件质量与软件测试:软件测试是软件质量保证工作的一个重要环节。软件测试和软件质量保证是软件质量工程的两个不同层面的工作。软件测试只是软件质量保证工作中的一个重要环节。质量保证(
QA
)的工作是通过预防、检查与改进来保证软件的质量,它所关注的是软件质量的检查和测量。软件测试所关心的不是过程的活动,而是对过程的产物以及开发出的软件进行剖析。
软件测试定义:软件测试就是在软件投入运行前对软件需求分析、软件设计规格说明和软件编码进行的查错(包括代码执行活动与人工活动)。软件测试是为了发现错误而执行程序的过程。软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序的错误。是在软件投入运行前,对软件需求分析、软件设计规格说明和软件编码的最终复审,是软件质量保证的关键步骤。
软件测试目的:(
1
)测试是一个为了寻找错误而运行程序的过程;(
2
)一个好的测试用例是指很可能找到迄今为止未发现的错误的用例;(
3
)一个成功的测试是指揭示了迄今为止尚未发现的错误的测试。
软件测试的目标是能够以耗费最少时间与最小工作量找出软件系统中潜在的各种错误与缺陷。
测试只能证明程序中错误的存在,但不能证明程序中没有错误。
软件测试原则:(
1
)尽早地并不断地进行软件测试;(
2
)程序员或程序设计机构应避免测试自己设计的程序;(
3
)测试前应当设定合理的测试用例;(
4
)测试用例的设计不仅要有合法的输入数据,还要有非法的输入数据;(
5
)在对程序修改之后要进行回归测试;(
6
)充分注意测试中的群集现象;(
7
)妥善保留测试计划、全部测试用例、出错统计和最终分析报告,并把它们作为软件的组成部分之一,为软件的维护提供方便;(
8
)应当对每一个测试结果做全面检查;(
9
)严格执行测试计划,排除测试的随意性。
软件测试对象:软件的测试不仅仅是程序的测试,软件的测试应贯穿于整个软件生命同期中。在软件定义阶段产生的可行性报告、项目实施计划、软件需求说明书或系统功能说明书,在软件开发阶段产生的概要测试说明书、详细设计说明书,以及源程序等都是软件测试的对象。
软件测试过程模型:
V
模型、
W
模型、
H
模型。
软件测试模型的使用:在实际软件测试的实施过程中,应灵活地运用各种模型的优点,通常可以在
W
模型的框架下,运用
H
模型的思想进行独立的测试。当有变更发生时,按
X
模型和前置模型的思想进行处理。同时,将测试和开发紧密结合,寻找恰当的就绪点开始测试,并反复进行迭代测试,以达到按期完成预定的目标。
软件问题分类:软件错误、软件缺陷、软件故障、软件失效。
软件测试类型:
按开发阶段分:单元测试、集成测试、确认测试(有效性测试)、系统测试
确认测试、验收测试
按测试实施组织分:开发方测试(验证测试或
alpha
测试)、用户测试(
beta
)、第三方测试(独立测试)
按测试方式分:动态测试、静态测试
按测试技术分:白盒测试、黑盒测试、灰盒测试
软件测试过程:用黑盒法设计基本的测试方案,再利用白盒法补充一些必要的测试方案。可以用以下策略结合各种方法:
(
1
)在任何情况下都应该使用边界值分析的方法;
(
2
)必要时用等价划分法补充测试方案;
(
3
)必要时用错误推测法补充测试方案;
(
4
)如果在程序的功能说明中含有输入条件的组合,最好在一开始就用因果图法,然后再按以上(
1
)、(
2
)、(
3
)步进行。
(
5
)对照程序逻辑,检查已设计出的设计方案。可以根据对程序可靠性的要求采用不同的逻辑覆盖标准,如果现有测试方案的逻辑覆盖程度没有达到要求的覆盖标准,则应再补充一些测试方案。
单元测试主要是对模块的
5
个基本特性进行测试和评价:(
1
)模块接口;(
2
)局部数据结构;(
3
)重要的执行路径;(
4
)错误处理;(
5
)边界测试。
在集成测试时,要考虑的问题有:数据经过接口是否会丢失;一个模块对另一模块是否造成不应有的影响;几个子功能组合起来能否实现主功能;误差不断积累是否达到不可接受的程度;全局数据结构是否有问题。
确认测试又称为有效性测试、合格测试或验收测试。确认测试主要由使用用户参加测试,检验软件规格说明的技术标准的符合程度,是保证软件质量的最后关键环节。
系统测试是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行(使用)环境下,对计算机系统进行一系列的组装测试和确认测试。系统测试实质上是由一系列不同测试组成的,其主要目的是充分运行系统,验证系统各个部件是否都能正常工作并完成所分配的功能。
系统测试包括:恢复测试、安全性测试、强度测试、性能测试等。
验收测试是以用户为主,软件开发人员和质量保证人员也应参加的测试。由用户参加设计测试用例。使用用户界面输入测试数据,并分析测试的输出结果。验收测试往往知系统测试完成后,项目最终交付前进行。