欢迎来到中科测评
中科测评
服务热线:020-22912712

行业动态


1.软件测试

1.1 软件测试定义

1.正向思维的定义

出发点:使自己确信产品是能够正常工作的评价一个程序和系统的特性或能力,并确定它是否达到期望的结果,软件测试就是以此为目的的任何行为。

2.反向思维【抱着怀疑一切的态度对程序做测试】的定义

lGlenford.J.Myers 《软件测试的艺术》

l出发点:测试是为发现错误而执行的一个程序或者系统的过程

l测试是为了证明程序有错,而不是证明程序无错误

l一个好的测试用例在于它能发现以前未发现的错误

l一个成功的测试是发现了以前未发现的错误的测试

3.IEEE定义的软件测试

l在规定条件下运行系统或构件的过程:观察记录结果,并对系统或构件的某些方面给出评价

l分析软件项目的过程:检测现有状况和所需状况之间的不同,并评估软件项目的特性

4.广义的软件测试

    软件测试是对软件形成过程中的所有工作产品(包括程序以及相关文档)进行的测试,而不仅仅是对程序的运行进行测试

5.软件测试中两个特别重要的术语:

l确认:通过检查和提供客观证据来证实特定目的的功能或应用是否已经实现。

l验证:通过检查和提供客观证据来证实指定的需求是否满足。

1.2 软件测试目标

测试目标包括:

l通过评估工作产品以防止缺陷 

l验证是否实现了所有指定的需求  

l检查测试对象是否完成,并确认是否按照用户和其他利益相关方期望那样工作 

l建立对被测对象质量级别的信心 

l发现缺陷和失效,从而降低软件质量不足的风险 

l为利益相关方提供足够的信息以允许他们做出明智的决策,特别是关于测试对象的质量级别

1.3 测试和调式区别

在主体、目标、方法和思路上有所不同。

测试可以发现由于软件缺陷引起的失效。而调试是发现、分析和修复这些缺陷的开发活动。

测试是从已知的条件开始,使用预先定义的过程,并且有预计结果;调试是从未知的条件开始,结束的过程可能不可预计。

测试可以计划,可以预先制定测试用例和过程,工作进度可以度量;而描述调试过程的持续时间相对比较困难。

测试的对象包括软件开发过程中的文档、数据以及代码,而调试的对象一般来说只是代码。

2.软件测试基本原则

原则 1 测试说明缺陷的存在,而不能说明缺陷不存在

测试可以证明存在缺陷,但不能证明不存在缺陷。测试降低了软件中存在未发现缺陷的可能性,但即使没有发现缺陷,测试也无法证明其对象的正确性。

原则 2 穷尽测试是不可能的

进行穷尽测试(输入和前提条件的所有组合)是不可行的。应利用风险分析、测试技术和优先级确定测试工作量,而不是试图进行穷尽测试。

原则 3 测试的尽早介入可以节省时间和成本

为了尽早发现缺陷,应该在软件开发生存周期中尽早启动静态和动态测试活动。在软件开发生存周期的早期进行测试有助于减少或消除代价高昂的变更。

原则 4 缺陷的群集效应

通常在少数模块中包含了大部分在发布前测试中发现的缺陷,或者是造成大部分运行失效的原因。

原则 5 杀虫剂悖论

如果多次重复同样的测试,最终这些测试将不再能够发现任何新的缺陷。为了发现新的缺陷,可能需要更改现有的测试用例和测试数据,并且可能需要编写新的测试。

原则 6 测试活动依赖于测试周境

测试在不同周境下是不同的。

原则 7 不存在缺陷的谬论

有些组织期望测试员能够运行所有可能的测试并发现所有可能的缺陷,是不可能的。另外,期望仅仅发现并修复大量缺陷就能确保系统的成功,这是一个谬论(即错误的信念)。

3.软件测试技术

测试技术分为黑盒、白盒或基于经验的测试技术。

黑盒测试技术(也称为行为的或基于行为的技术)基于对适当测试依据的分析(例如:正式需求文档、规格说明、用例、用户故事或业务流程)。这些技术适用于功能和非功能测试。黑盒测试技术关注在测试对象的输入和输出,而不考虑其内部结构。

白盒测试技术(也称为结构的或基于结构的技术)基于对架构、详细设计、内部结构或测试对象代码的分析。与黑盒测试技术不同,白盒测试技术关注在测试对象的结构和处理过程。

基于经验的测试技术利用开发人员、测试员和用户的产品经验来设计、实施和执行测试。这类技术通常与黑盒和白盒测试技术相结合。

3.1 黑盒测试技术

常见的黑盒测试技术包括:

l等价类划分

将数据划分为不同分区(也称为等价类),使得给定分区内所有成员期望被相同方式处理。

l边界值分析

是等价类划分的扩展,但仅适用于等价类是有序的、由数字或顺序数据组成。等价类的最小和最大值(或第一和最后的值)是其边界值。

l判定表测试

是记录系统必须实现的复杂业务规则的一种很好的方法。判定表的每一列对应了一个判定规则,该规则定义了各种条件的一个唯一组合,其表示与该规则相关的动作的执行。条件值和动作通常表示为布尔值(“真”或“假”)或离散值(例如:红、绿、蓝),但也可以是数字或数字范围。

l状态转换测试

不但可显示状态之间所有有效转换和潜在的无效转换,而且可表示有效转换的事件和导致的动作。状态转换图通常仅仅显示有效转换,而不包括无效转换。

3.2 白盒测试技术

常见的白盒测试技术包括:

l语句覆盖:执行代码中可执行语句

l判定覆盖:执行代码中的判定,以及测试基于判定结果的可执行的代码

3.3 基于经验的测试技术

常用的基于经验的测试技术包括:

l错误推测法

是一种基于测试员的知识来预估错误、缺陷和失效发生的技术。

l探索性测试 

在测试执行期间动态地设计、执行、记录、和评估非正式的(非预定义的)测试。测试结果常用来进一步了解组件或系统,并对可能需要进一步测试的区域生成测试。

l基于检查表的测试

可以基于检验、对用户重要内容的了解,或对软件失效的原因和方式的理解来构建检查表。由测试员设计、实施和执行测试来覆盖检查表中的测试条件。

4.软件缺陷

4.1 缺陷定义

IEEE对软件缺陷的定义:从产品内部看,缺陷是产品开发或维护过程中存在的错误、毛病等各种问题;从产品外部看,缺陷是系统运行过程中某种功能的失效或违背。

l软件未实现产品说明书要求的功能

l软件出现了产品说明书指明不应该出现的功能

l软件实现了产品说明书未提到的功能

l软件未实现产品说明书虽未明确提及但应该实现的目标

4.2 缺陷产生原因

软件缺陷的产生主要是由软件产品的特点和开发过程决定的,比如需求不清晰、需求频繁变更、开发人员水平有限等。归结起来,软件缺陷产生的原因主要有以下几点。

l需求不明确

软件需求不清晰或者开发人员对需求理解不明确,导致软件在设计时偏离客户的需求目标,造成软件功能或特征上的缺陷。此外,在开发过程中,客户频繁变更需求也会影响软件最终的质量。

l软件结构复杂

如果软件系统结构比较复杂,这就会导致软件在开发、扩充、系统维护上的困难。

l编码问题

在软件开发过程中,程序员水平参差不齐,再加上开发过程中缺乏有效的沟通和监督,问题累积越来越多,如果不能逐一解决这些问题,会导致最终软件中存在很多缺陷。

l项目期限短

现在大部分软件产品开发周期都很短,开发团队要在有限的时间内完成软件产品的开发,往往导致开发人员在疲劳、压力大、受到干扰的状态下开发软件,会影响软件的最终质量。

l使用新技术

使用新技术进行软件开发时,如果新技术本身存在不足或开发人员对新技术掌握不精,也会影响软件产品的开发过程,导致软件存在缺陷。


Copyright ©中科测评,Inc.All rights reserved.  粤ICP备12004042号  Powered by CmsEasy
友情链接:  广州软件应用技术研究院    广州市南沙区    广州市政府门户网