软件测试规范

更新时间:2024-03-08 21:02:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

软件测试规范

北京四维益友信息技术有限公司

本规范成文于 2010年4月15日

目 录

一 概述 ......................................................................................................................................................... 3 二 软件测试流程及工作职责 ..................................................................................................................... 5 三 BUG管理流程及规范 ........................................................................................................................... 8 四 测试用例设计 ....................................................................................................................................... 14 五 黑盒测试方法 ....................................................................................................................................... 17 六 白盒测试方法 ....................................................................................................................................... 20 七 界面测试. .............................................................................................................................................. 23 八 负载压力测试 ....................................................................................................................................... 30 九 兼容性测试 ........................................................................................................................................... 37 十 Web测试 .............................................................................................................................................. 39 附录一 单元测试报告 ................................................................................................................................. 42 附录二 集成测试报告 ................................................................................................................................. 43 附录三 测试大纲 ......................................................................................................................................... 44 附录四 测试大纲附录 ................................................................................................................................. 45 附录五 测试计划 ......................................................................................................................................... 46 附录六 程序错误报告 ................................................................................................................................. 47 附录七 测试分析报告 ................................................................................................................................. 48

2

软件测试规范 软件测试理论

一 概述

本规范是对项目软件测试的一份指导性文件,对软件测试过程中所涉及到的测试理论、测试类型、测试方法、测试标准、测试流程以及软件产品开发过程中相关专业人员所承担的职责进行总体规范,以有效保证软件产品的质量。

1.什么是软件测试

在软件生命周期的每个阶段都不可避免地会产生差错。我们力求在每个阶段结束之前通过严格的技术审查,尽可能早地发现并纠正差错。如果在软件投入生产性运行之前,没有发现并纠正软件中的大部分差错,则这些差错迟早会在生产过程中暴露出来,那时不仅改正这些错误的代价更高,而且往往会造成很恶劣的后果。测试的目的就是在软件投入生产性运行之前,尽可能多地发现软件中的错误。目前软件测试仍然是保证软件质量的关键步骤,它是对软件规格说明、设计和编码的最后复审。软件测试在软件生命周期中横跨两个阶段。通常在编写出每个模块之后就对它做必要的测试(称为单元测试),模块的编写者和测试者是同一个人,编码和单元测试属于软件生命周期的同一个阶段。在这个阶段结束之后,对软件系统还应该进行各种综合测试,这是软件生命周期中的另一个独立的阶段,通常由专门的测试人员承担这项工作。仅就测试而言,它的目标是发现软件中的错误,但是,发现错误并不是我们的最终日的。软件工程的根本目标是开发出高质量的完全符合用户需要的软件。

2.软件测试的目标

下面这些规则也可以看作是测试的目标或定义:

(1)测试是为了发现程序中的错误而执行程序的过程;

(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案; (3)成功的测试是发现了至今为止尚未发现的错误的测试。

3.软件测试类型

除非是测试一个小程序,否则一开始就把整个系统作为一个单独的实体来测试是不现实的。与开发过程类似,测试过程也必须分步骤进行,每个步骤在逻辑上是前一个步骤的继续。大型软件系统通常由若干个子系统组成,每个子系统又由许多模块组成。因此,大型软件系统的测试基本上由下述几个步骤组成:

(1)模块测试

在设计得好的软件系统中,每个模块完成一个清晰定义的子功能,而且这个子功能和同级其他模块的功能之间没有相互依赖关系。因此,有可能把每个模块作为一个单独的实体来测试,而且通常比较容易设计检验模块正确性的测试方案。模块测试的目的是保证每个模块作为一个单元能正确运行,所以模块测试通常又称为单元测试。在这个测试步骤中所发现的往往是编码和详细设计的错误。

(2)子系统测试

子系统测试是把经过单元测试的模块放在一起形成一个子系统来测试。模块相互间的协调和通信是这个测试过程中的主要问题,因此这个步骤着重测试模块的接口。

(3)系统测试

系统测试是把经过测试的子系统装配成一个完整的系统来测试。在这个过程中不仅应该发现设计和编码的错误,还应该验证系统确实能提供需求说明书中指定的功能,而且系统的动态特性也符合预定要求。在这个测试步骤中发现的往往是软件设计中的错误,也可能发现需求说明中的错误。

3

软件测试规范 软件测试理论 不论是子系统测试还是系统测试,都兼有检测和组装两重含义,通常称为集成测试。

(4)验收测试

验收测试把软件系统作为单一的实体进行测试,测试内容与系统测试基本类似,但是它是在用户积极参与下进行的,而且可能主要使用实际数据(系统将来要处理的信息)进行测试。验收测试的目的是验证系统确实能够满足用户的需要,在这个测试步骤中发现的往往是系统需求说明书中的错误。

4

软件测试规范 测试错误类型

二 软件测试流程及工作职责

1.软件测试流程图

N 配合开发人员进行单元测试

Y

N 配合开发人员进行集成测试

Y

N

Y

所有文件存档 5

提交《测试分析报告》 编写《测试分析报告》 填写《错误报告》 对待测软件进行测试 项目组进行修改 复合 收集待测软件的各种相关文档及《需求分析》、《软件设计规范》和上一级《测试报告》 项目组进行修改 项目组进行修改 编写《测试大纲》 制定《测试计划 》 了解需求变更 参与需求分析,了解项目需求内容 编写《单元测试报告》 编写《集成测试报告》

软件测试规范 测试错误类型

2.软件测试流程细则 需求阶段:

测试人员了解项目需求收集结果包括项目需求规格说明、功能结构及模块划分等。 测试人员了解项目需求变更。

测试人员会同项目主管根据软件需求制定并确认《测试计划》(附录五)。 设计编码阶段:

测试人员制定《测试大纲》(附录三、附录四)。

项目开发组对完成的功能模块进行单元测试,测试人员参与单元测试过程;单元测试完成,产生单元测试报告。

所有单元测试及相应的修改完成后,项目开发组组织进行集成测试,测试人员参与集成测试过程;集成测试完成后,产生集成测试报告。 测试阶段:

项目开发组完成集成测试后,提交测试所要求的待测软件及各种文档、手册、前期测试报告(《需求分析》、《软件设计规范》和上一级《测试报告》附录一、附录二)。

测试组安排和协调测试设备、环境等准备工作。

测试组按测试计划、测试大纲的要求对待测软件进行有效性测试、集成测试。 填写《错误报告》(附录六)。 对修改后的情况进行复合。

测试结束后,测试人员对测试结果进行汇总;测试主管审核测试结果,得出测试结论;测试组进行测试分析和评估,编写《测试分析报告》(附录七)。

提交《测试分析报告》。 将所有文件存档。

对测试未通过的待测软件,测试人员汇总并向项目开发组提交测试错误报告。

项目开发组对测试错误报告进行确认,对有争议的问题可由上一级技术负责人确认和仲裁;项

6

项目经理与用户方测试进行确认 用户方签字确认错误报告 配合用户方进行软件测试 向用户方提供内部测试汇总报告 与用户方协商测试相关事宜 编写《用户操作手册》(帮助文件) 软件测试规范 测试错误类型 目开发组针对测试错误报告进行逐项修改,修改完成后再将待测软件及错误修改情况提交及测试组进行回归测试。

待测软件测试通过后,项目测评结束。 制作《用户操作手册》(帮助文件)。 用户测试阶段:

项目开发组与用户方商定测试计划、测试内容、测试环境等。 项目测试组向用户方提供项目内部测试汇总报告。 由项目开发组或测试组配合用户进行用户方测试。

由用户方编制用户方软件测试报告(程序错误报告和测试分析报告),若用户方不愿或无法编制测试报告,则经与用户方协商由我方测试人员编制用户方测试报告,经用户方签字后即可生效。

项目经理与用户方对用户方测试进行确认。 3.软件测试注意事项

根据《软件开发规范》仔细检查软件的界面是否合乎要求。(每一个子界面也应如此) 其中,应注意提示信息和软件开发商信息是否正确。小的图标是否合乎要求。检查菜单当中的各项功能和功能按钮是否能正确使用。

根据《软件开发规范》和《用户需求》及《软件详细设计》设计测试用例。(以边界值法、等价类划分法为主)。对功能界面要求注意与功能相关的信息显示及显示位置是否正确。数据输入界面应注意文字格式及数字和文字的区别。是否能够正确保存信息。数据查询(显示)界面应注意显示信息是否正确和完整。是否能正确查询。对打印功能要求注意打印出的报表是否正确。(包括报表各项信息、数据信息和报表字体等)。

这一项测试主要是对软件的错误处理功能进行测试。就是进行错误的操作或输入错误的数据,检查软件对这些情况是否能做出判断并予以提示。

特殊情况下要制造极端状态和意外状态,比如网络异常中断、电源断电等情况。 一定要注意测试中的错误集中发生现象,这和程序员的编程水平和习惯有很大的关系。 对测试错误结果一定要有一个确认的过程。一般有A测试出来的错误,一定要有一个B来确认,严重的错误可以召开评审会进行讨论和分析。

制定严格的测试计划,并把测试时间安排得尽量宽松,不要希望在极短的时间内完成一个高水平的测试。

回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多错误出现的现象并不少见。 妥善保存一切测试过程文档,意义是不言而喻的,测试的重现性往往要靠测试文档。

7

软件测试规范 软件测试流程

三 BUG管理流程及规范

公司以Mecury Quality Center作为BUG管理工具

1.各角色对Bug的处理

开发组长/经理

每天对Bug进行分配,标注处理意见,给定优先级(发版前必须三方:需求、开发、产品共同确定)。问题分配时,应尽可能将咨询类、理解错误类等问题处理掉,而不是留给开发人员。有可能是需求的问题,分配给需求人员。定期对Bug库分析,找出常出错的模块,进行代码审查 开发人员

分析Bug,写出问题原因,修改Bug;实行Bug优先原则,严重程度B-Major类或紧急程度3-High类以上(包含)bug5个或5个以上,停止新功能的开发。 需求人员

解释需求,给出处理意见,将Bug库中的建议整理成需求文档。评审确定后列入开发计划 测试人员

8

软件测试规范 软件测试流程 不参与问题的优先级的定位,只用Bug级别反映Bug的严重程度。验证Bug是否已被解决 测试组长/经理

审核测试人员提交的Bug。定期对Bug库进行分析,描绘出曲线图等,报告现状、预测趋势。在测试总结报告中给出意见 产品人员

可以对优先级和处理意见等进行审核,如果有意见,和项目组商量定夺 2.Bug状态(Status)

Bug状态指缺陷通过一个跟踪修复过程的进展情况。包括New、Open、Reopen、Fixed、Closed及Rejected等

New(新建) Open(打开) 为测试人员新问题提交所标志的状态。 为任务分配人(开发组长/经理)对该问题准备进行修改并对该问题分配修改人员所标志的状态。Bug解决中的状态,由任务分配人改变。对没有进入此状态的Bug,程序员不用管。 Reopen(重新打开) 为测试人员对修改问题进行验证后没有通过所标志的状态;或者已经修改正确的问题,又重新出现错误。由测试人员改变。 Fixed(固定) Closed(已关闭) Rejected(已否决) 为开发人员修改问题后所标志的状态,修改后还未测试。 为测试人员对修改问题进行验证后通过所标志的状态。由测试人员改变。 开发人员认为不是Bug、描述不清、重复、不能复现、不采纳所提意见建议、或虽然是个错误但还没到非改不可的地步故可忽略不计、或者测试人员提错,从而拒绝的问题。由Bug分配人或者开发人员来设置。 Bug严重级别(Severity,Bug级别):是指因缺陷引起的故障对软件产品的影响程度。由测试人员指定。

本规范定义以下五类测试错误类型。 A类—严重错误(Crash),包括以下各种错误:

由于程序所引起的死机,非法退出 死循环 数据库发生死锁

因错误操作导致的程序中断 功能错误 与数据库连接错误 数据通讯错误

B类—较严重错误(Major),包括以下各种错误: 程序错误

程序接口错误

数据库的表、业务规则、缺省值未加完整性等约束条件 C类—一般性错误(Minor),包括以下各种错误:

9

软件测试规范 软件测试流程

操作界面错误(包括数据窗口内列名定义、含义是否一致) 打印内容、格式错误

简单的输入限制未放在前台进行控制 删除操作未给出提示 数据库表中有过多的空字段

D类—较小错误(Trivial),包括以下各种错误:

界面不规范 辅助说明描述不清楚 输入输出不规范 长操作未给用户提示 提示窗口文字未采用行业术语

可输入区域和只读区域没有明显的区分标志 E类—测试建议(Nice to Have)

此类是针对给操作员带来不方便的操作所提出的建议,这种问题不影响所要求的运行和任务的

功能。

Bug优先级(Priority):指缺陷必须被修复的紧急程度。由Bug分配者(开发组长/经理)指定。

5-Urgent 阻止相关开发人员的进一步开发活动,立即进行修复工作;阻止与此密切相关功能的进一步测试 4-Very High 3-High 2-Medium 1-Low 必须修改,发版前必须修正 必须修改,不一定马上修改,但需确定在某个特定里程碑结束前须修正 如果时间允许应该修改 允许不修改

问题定位:

Calculate_error Data_error Graphics_error Interface_error Requirement_error Function_error Unknown_error 计算错误,指计算过程中、计算结果错误。 数据错误,指非计算结果类的数据错误。 图形错误,指绘图、图形显示、图形编辑时发生的错误。 界面错误 需求错误 功能错误 未知错误 缺陷来源(Source):指引起缺陷的起因。

Requirement 由于需求的问题引起的缺陷 10

软件测试规范 黑盒测试方法

预期结果: 提供测试执行的预期结果,预期结果应该根据软件需求中的输出得出。如果在实际测试过程中,得到的实际测试结果与预期结果不符,那么测试不通过;反之则测试通过。

功能测试用例的设计方法: 1. 等价类划分法:

有效等价类:指输入完全满足程序输入的规格说明,是由有效且有意义的输入数据所构成的集合,利用有效等价类可以检验程序是否满足规格说明所规定的功能和性能。

无效等价类:和有效等价类相反,即不满足程序输入要求或者由无效的输入数据构成的集合。 2. 边界值分析法:

指对输入的边界条件进行分析,设计出针对边界值的测试用例。 数值的边界值检验

字符的边界值检验 如: ASCII和 Unicode编码方式 其他边界值检验 选上所有选项(最大值) 不选上任何一项(空,零) 只选一项 (最小值) 3. 因果图法:

就是利用图解法分析软件输入(原因)和输出条件(结果)之间的关系,以设计测试用例的方法。因果图法适合于检查程序输入条件的多种情况的组合,并最终生成判定表,来获得对应的测试用例。 4. 功能图法

功能图是描述程序状态变化、转移的过程,因为软件运行或操作的过程可以看作是其状态不断发生变化的过程。测试用例的设计就是如何覆盖所有软件表现出来的状态,即在满足输入/输出的一组条件下,软件运行是一系列有次序的、受控制的状态变化过程。 5. 错误推测法:

推测法主要依赖经验、直觉来作出简单的判断甚至是猜测,给出可能存在缺陷的条件、场景等,在找到缺陷后,设计出相应的测试用例。 6. 正交实验设计方法:

主要步骤是:

(1) 对软件需求规格说明中的功能要求进行划分(层层分解与展开),分解成具体的、相对独立的基本功能。

(2) 根据基本功能的质量需求,找出影响其功能实现的操作对象和外部因素,每个因素的取值可以看作水平,多个取值就存在多个水平。

(3) 确定待测试软件中所有因素及其权值,这是测试用例设计的关键,确保全面、准确。软件测试权值是依据各因素的影响范围、发生的频率和质量的需求来确定的。

(4) 加权筛选,生成因素分析表。

(5) 利用正交表构造测试数据集,正交表的每一行,就是一条测试用例。考虑交互作用不可忽略的处理因素和不可混杂的原则,有交互作用的组合优先安排。

利用正交实验设计方法设计测试用例,可控制生成的测试用例数量,覆盖率高且测试效率高。

16

软件测试规范 黑盒测试方法

五 黑盒测试方法

黑盒测试(black—box testing)又称功能测试、数据驱动测试或基于规范的测试(即ec颠cation—based testing)。用这种方法进行测试时,被测程序被当作看不见内部的黑盒。在完全不考虑程序内部结构和内部特性的情况下,测试者仅依据程序功能的需求规范考虑确定测试用例和推断测试结果的正确性。因此黑盒测试是从用户观点出发的测试,黑盒测试直观的想法就是既然程序被规定做某些事,那我们就看看它是不是在任何情况下都做的对。完整的―任何情况‖是无法验证的,为此黑盒测试也有一套产生测试用例的方法,以产生有限的测试用例而覆盖足够多的―任何情况‖。由于黑盒测试不需要了解程序内部结构,所以许多高层的测试如确认测试、系统测试、验收测试都采用黑盒测试。

黑盒测试首先是程序通常的功能性测试。要求:

每个软件特性必须被一个测试用例或一个被认可的异常所覆盖。 用数据类型和数据值的最小集测试。

用一系列真实的数据类型和数据值运行,测试超负荷、饱和及其他―最坏情况‖的结果; 用假想的数据类型和数据值运行,测试排斥不规则输入的能力;

对影响性能的关键模块,如基本算法、应测试单元性能(包括精度、时间、容量等)。

不仅要考核―程序应该做什么?‖还要考察―程序是否做了不该做的2‖同时还要考察程序在其他一些情况下是否正常。这些情况包括数据类型和数据值的异常等等。下述几种方法:(a)等价类划分,(b)因果图方法,(c)边值分析法,(d)猜错法,(e)随机数法,就是从更广泛的角度来进行黑盒测试。每一个方法都力图能涵盖更多的―任何情况‖,但又各有长处,综合使用这些方法,会得到一个较好的测试用例集。

1.等价类划分

等价类划分是一种典型的黑盒测试方法。等价类是指某个输入域的集合。它表示对揭露程序中的错误来说,集合中的每个输入条件是等效的。因此我们只要在一个集合中选取一个测试数据即可。等价类划分的办法是把程序的输入域划分成若干等价类,然后从每个部分中选取少数代表性数据当作测试用例。这样就可使用少数测试用例检验程序在一大类情况下的反映。 在考虑等价类时,应该注意区别以下两种不同的情况:

有效等价类:有效等价类指的是对程序的规范是有意义的、合理的输入数据所构成的集合。在具体问题中,有效等价类可以是一个,也可以是多个。

无效等价类:无效等价类指对程序的规范是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能有多个。 确定等价类有以下几条原则:

如果输入条件规定了取值范围或值的个数,则可确定一个有效等价类和两个无效等价类。例如,程序的规范中提到的输入条包括―……项数可以从1到999……‖,则可取有效等价类为―l考项数<999‖,无效等价类为―项数<l,,及―项数>999‖。

输入条件规定了输入值的集合,或是规定了―必须如何‖的条件,则可确定一个有效等价类和一个无效等价类。如某程序涉及标识符,其输入条件规定―标识符应以字母开头……‖则―以字母开头者‖作为有效等价类,―以非字母开头‖作为无效等价类。

如果我们确知,已划分的等价类中各元素在程序中的处理方式是不同的,则应将此等价类进一步划分成更小等价类。 输入条件 有效等价类 17

无效等价类 软件测试规范 黑盒测试方法 。。。。。。 。。。。。。 。。。。。。 。。。。。。 。。。。。。 。。。。。。 根据已列出的等价类表,按以下步骤确定测试用例: 为每个等价类规定一个唯一的编号;

设计一个测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类。重复这一步,最后使得所有有效等价类均被测试用例所覆盖;

设计一个新的测试用例,使其只覆盖一个无效等价类。重复这一步,使所有无效等价类均被覆盖。这里强调每次只覆盖一个无效等价类。这是因为一个测试用例中如果含有多个缺陷,有可能在测试中只发现其中的一个,另一些被忽视。等价类划分法能够全面、系统地考虑黑盒测试的测试用例设计问题,但是没有注意选用一些―高效的‖、―有针对性的‖测试用例。后面介绍的边值分析法可以弥补这一缺点。

2.因果图

等价类划分法并没有考虑到输入情况的各种组合。这样虽然各个输入条件单独可能出错的情况已经看到了,但多个输入情况组合起来可能出错的情况却被忽略。采用因果图方法能帮助我们按一定步骤选择一组高效的测试用例,同时,还能为我们指出程序规范的描述中存在什么问题。 利用因果图导出测试用例需要经过以下几个步骤:

分析程序规范的描述中哪些是原因,哪些是结果。原因常常是输入条件或是输入条件的等价类。结果是输出条件。

分析程序规范的描述中语义的内容,并将其表示成连接各个原因与各个结果的―因果图‖。 由于语法或环境的限制,有些原因和结果的组合情况是不可能出现的。为表明这些特定的情况,在因果图上使用持殊的符号标明约束条件。把因果图转换成判定表。把判定表的每一列写成一个测试用例。

3.边值分析法

边值分析法是列出单元功能、输入、状态及控制的合法边界值和非法边界值,设计测试用例,包含全部边界值的方法。典型地包括IF语句中的判别值,定义域、值域边界,空或畸形输入,末受控状态等。边值分析法不是一类找一个例子的方法,而是以边界情况的处理作为主要目标专门设计测试用例的方法。另外,边值分析不仅考查输入的边值,也要考虑输出的边值。这是从人们的经验得出的一种有效方法。人们发现许多软件错误只是在下标、数据结构和标量值的边界值及其上、下出现,运行这个区域的测试用例发现错误的概率很高。

用边值分析法设计测试用例时,有以下几条原则:

如果输入条件规定了取值范围,或是规定了值的个数,则应以该范围的边界内及刚刚超出范围的边界外的值,或是分别对最大、最小及稍小于最小、稍大于最大个数作为测试用例。如有规范―某文件可包含l至255‖个记录……―,则测试用例可选1和255及0和256等。 针对规范的每个输出条件使用原则〔a〕。

如果程序规范中提到的输入或输出域是个有序的集合(如顺序文件、表格等)就应注意选取有序集的第一个和最后一个元素作为测试用例。

分析规范,尽可能找出可能的边界条件。一个典型的边值分析例子是三角形分类程序。选取a,b,c构成三角形三边,―任意两边之和大于第三边‖为边界条件。边值分析相等价类划分侧重不同,对等价类划分是一个补充。如上述三角形问题,选取a=3,b=4,c=5,a=2,b=4,c=7则覆盖有效和无效等价类。如果能在等价类划分中注入边值分析的思想。在每个等价类中不只选取一个覆

18

软件测试规范 黑盒测试方法 盖用例,而是进而选取该等价类的边界值等价类划分法将更有效,最后可以用边值分析法再补充一些测试用例。

4.猜错法

猜错法在很大程度上是凭经验进行的,是凭人们对过去所作的测试工作结果的分析,对所揭示的缺陷的规律性作直觉的推测来发现缺陷的。

一个采用两分法的检索程序,典型地可以列出下面几种测试情况: 被检索的表只有一项或为空表; 表的项数恰好是2的幂次; 表的项数比2的幂次多1等。

猜错法充分发挥人的经验,在一个测试小组中集思广益,方便实用,特别在软件测试基础较差的情况下,很好地组织测试小组 (也可以有外来人员)进行错误猜测,是有效的测试方法。

5.随机数法

即测试用例的参数是随机数。它可以自动生成,因此自动化程度高。使用大量随机测试用例测试通过的程序会提高用户对程序的信心。但其关键在于随机数的规律是否符合使用实际。

19

软件测试规范 白盒测试方法

六 白盒测试方法

白盒法测试,是以程序的内部逻辑为基础,有选择地执行程序中最有代表性的通路。白盒法考虑的是测试用例对程序内部逻辑的覆盖程度,所以又称为逻辑覆盖法。最彻底的白盒法是覆盖程序中的每一条路径,但这不可能,我们希望覆盖的路径尽可能多一些。为了衡量测试的覆盖程度,需要建立一些标准,目前常用的一些覆盖标准是:

(1)语句覆盖; (2)判定覆盖; (3)条件覆盖; (4)判定/条件覆盖; (5)条件组合覆盖。 1.语句覆盖

程序的某次运行一般并不能执行到其中的每一个语句,因此,如果某语句含有一个错误,而它在测试中没执行,这个错误就不可能被发现。为了提高发现错误的可能性,应该在测试时至少要执行程序中的每一个语句。

所谓―语句覆盖‖测试标准,它的含义是:选择足够的测试用例,使得程序中每个语句至少都能执行一次。

例子:

Procedure Example(Var A,B,C:real) begin

if(A>1)and(B=0) then x:=x/A; if(A=2)or(x>1) then x:=x+l end;

为了使程序中每个语句至少执行一次,只需设计一个能通过路径ace的例子就可以了。例如选择输入数据为:

A=2,B=0,x=3

就可达到―语句覆盖‖标准。

显然,语句覆盖是一个比较弱的覆盖标准。如果第一个条件语句中的and错误地写成or,上面的测试用例是不能发现这个错误的,或者是第二个条件语句中x>1误写成x>0,这个测试用例也不能暴露它。我们还可以举出许多错误情况是上述测试数据不能发现的。所以,一般认为―语句覆盖‖是很不充分的最低的一种覆盖标准。

2.判定覆盖

比―语句覆盖‖稍强的覆盖标准是―判定覆盖‖(或称分支覆盖)。这个标准是:执行足够的测试用例,使得程序中每个判定至少都获得一次―真‖值和―假‖值,即使得程序中的每一个分文至少都通过一次。

对上面那个例子,如果设计两个测试用例,就可以达到―判定覆盖‖的标难。为此,我们可以选择输人数据为:

(1)A=3,B=0,x=l (2)A=2,B=1,x=3

20

软件测试规范 白盒测试方法

―判定覆盖‖比―语句覆盖‖严格,因为如果每个分支都执行过了,自然每个语句也就执行了。 3.条件覆盖

它的含义是:执行足够的测试用例,使得判定中每个条件获得各种可能的结果。 对于例子程序,我们只需设计以下两个测试用例就可满足这标准: (1)A=2,B=o,x=4(沿路径ace执行) (2)A=1,B=l,x=l(沿路径aN执行)

虽然同样只要两个测试用例,但它比判定覆盖中两个测试用例更有效。一般来说,―条件覆盖‖比―判定覆盖‖强,但是,并不总是如此,满足―条件覆盖‖不一定满足―判定覆盖‖。例如对语句。

IF(A AND B)THEN S

设计两个测试用例:A―真‖B―假‖和A―假‖B―真‖。对于上例我们设计两个测试用例为: (1)A=1,B=o,x=3 (2)A=2,B=l,x=1

亦是如此,它们能满足―条件覆盖‖但不满足―判定覆盖‖。 4.判定/条件覆盖

针对上面的问题引出了另一种覆盖标准,这就是―判定/条件覆盖‖,它的含义是:执行足够的测试用例,同时满足判定覆盖和条件覆盖的要求。显然,它比―判定覆盖‖和―条件覆盖‖都强。 对于例子程序,我们选取测试用例: (1)A=2,B=0,x=4 (2)A=1,B=l,x=l 它满足判定/条件覆盖标准。

值得指出,看起来―判定/条件覆盖‖似乎是比较合理的,应成为我们的目标,但是事实并非如此,因为大多数计算机不能用一条指令对多个条件作出判定,而必须将源程序中对多个条件的判定分解成几个简单判定。这个讨论说明了,尽管―判定/条件覆盖‖看起来能使各种条件取到所有可能的值,但实际上并不一定能检查到这样的程度。针对这种情况,有下面的条件组合覆盖标准。

5.条件组合覆盖

―条件组合覆盖‖的含义是:执行足够的测试用例,使得每个判定中条件的各种可能组合都至少执行一次。这是一个最强的逻辑覆盖标准。

再看例子程序,必须使测试用例覆盖八种组合结果 (1)A>1,B=0 (5)A=2,x>1 (2)A>1,B<>0 (6)A=2,x<1 (3)A2,x>1 (4)A<1,B<>0 (8)A<>2,x<1

必须注意到,(5)、(6)、(7)、(8)四种情况是第二个条件语句的条件组合,而x的值在该语句之前是要经过计算的,所以我们还必须根据程序的逻辑推算出在程序的人口点x的输入值应是什么。

要测试八个组合结果并不是意味着需要八种测试用例,事实上,我们能用四种测试用例来覆盖它们:

(1)A=2,B=o,x=4; (2)A=2,B=1,x=l; (3)A=l,B=o,x=2; (4)A=1,B=1,x=l。

21

软件测试规范 白盒测试方法

上面四个例子虽然满足条件组合覆盖,但并不能覆盖程序中的每一条路径,可以看出条件组合覆盖仍然是不彻底的,在白盒测试时,要设法弥补这个缺陷。

22

软件测试规范 测试标准

七 界面测试.

界面是软件与用户交互的最直接的层,界面的好坏决定用户对软件的第一印象。而且设计良好的界面能够引导用户自己完成相应的操作,起到向导的作用。同时界面如同人的面孔,具有吸引用户的直接优势。设计合理的界面能给用户带来轻松愉悦的感受和成功的感觉,相反由于界面设计的失败,让用户有挫败感,再实用强大的功能都可能在用户的畏惧与放弃中付诸东流。目前界面的设计引起软件设计人员的重视的程度还远远不够,直到最近网页制作的兴起,才受到专家的青睐。而且设计良好的界面由于需要具有艺术美的天赋而遭拒绝。

界面测试中应该予以考虑的几个方面: 1.应验证界面显示内容的完整性:

a) 报表显示时应考虑数据显示宽度的自适应或自动换行。

b) 所有有数据展现的界面(如统计、查询、编辑录入、打印预览、打印等),必须使测试数据的记录数超过一屏/一页,以验证满屏/页时其窗体是否有横向、纵向滚动条或换页打印,界面显示是否正常;

2.应验证界面显示内容的一致性:

a) 如有多个系统展现同一数据源时,应保证其一致性; 3.应验证界面显示内容的准确性:

a) 对于报表中的所有字段值都应该有明确的定义,对于无意义的字段值,不应该显示空,应显示―--‖或―/‖,表示该字段值无意义。

4.应验证界面显示内容的友好性:

a) 对统计的数据应按用户习惯进行分类、排序。

b) 某些重要信息在输入、修改、删除时应有―确认‖提示信息; c) 界面内容更新后系统应提供刷新功能。

d) 用户在退出系统后重新登陆时应考虑是否需要自动返回到上次退出系统时的界面; 5.应验证界面提示信息的指导性:

a) 在多个业务功能组成的一个业务流程中,如果各个功能之间的执行顺序有一定的制约条件,应通过界面提示用户。

b) 用户提示信息应具有一定的指导性,在应用程序正在进行关键业务的处理时,应考虑在前台界面提示用户应用程序正在进行的处理,以及相应的处理过程,在处理结束后再提示用户处理完毕。

c) 在某些数据输入界面,如果要求输入的数据符合某项规则,应在输入界面提供相应的规则描述;当输入数据不符合规则时应提示用户是否继续。

d) 在对任何配置信息修改后,都应该在用户退出该界面时提示用户保存(如果用户没有主动保存的情况下);

6.应验证界面显示内容的合理性:

a) 在对某些查询功能进行测试时,应考虑查询条件的设置的合理性以及查询结果的互补性。如某些后台处理时间不应该作为查询条件。

b) 界面测试时,应考虑某一界面上按钮先后使用的顺序问题,以免用户对此产生迷惑。例如只能在查询成功后显示执行按钮。

c) 界面测试时,应验证窗口与窗口之间、字段与字段之间的浏览顺序是否正确;

23

软件测试规范 测试标准

7.界面测试时,应考虑用户使用的方便性:

在某些对数据进行处理的操作界面,应考虑用户可能对数据进行处理的频繁程度和工作量,考虑是否可以进行批量操作。

8.界面测试时,应考虑界面显示及处理的正确性:

a) 界面测试时应验证所有窗体中的对象状态是否正常,是否符合相关的业务规则需要。 b) 应验证各种对象访问方法(Tab 健、鼠标移动和快捷键)是否可正常使用,并且在一个激活界面中快捷键无重复;

c) 界面测试不光要考虑合理的键盘输入,还应考虑是否可以通过鼠标拷贝粘贴输入。 d) 对于统计查询功能的查询结果应验证其是否只能通过界面上的查询或刷新按键人工触发,应避免其他形式的触发。

e) 对界面上的任何对象进行拖拉,然后进行查询、打印,应保证查询打印结果不变; 9.界面测试时,应考虑数据显示的规范性:

a) 度显示的统一:如单价0元,应显示为0.00元; b) 确保时间及日期显示格式的统一; c) 确保相同含义属性/字段名的统一;

d) 对所有可能产生的提示信息界面内容和位置进行验证,确保所有的提示信息界面应居中。

以WINDOWS应用程序界面为例,目前流行的界面风格有三种方式:多窗体、单窗体以及资源管理器风格,无论那种风格,以下规则是应该被重视的。 1:易用性:

按钮名称应该易懂,用词准确,屏弃模棱两可的字眼,要与同一界面上的其它按钮易于区

分,能望文知意最好。理想的情况是用户不用查阅帮助就能知道该界面的功能并进行相关的正确操作。 易用性细则:

1):完成相同或相近功能的按钮用Frame框起来,常用按钮要支持快捷方式。 2):完成同一功能或任务的元素放在集中位置,减少鼠标移动的距离。 3):按功能将界面划分区域块,用Frame框括起来,并要有功能说明或标题。 4):界面要支持键盘自动浏览按钮功能,即按Tab键、回车键的自动切换功能。

5):界面上首先要输入的和重要信息的控件在Tab顺序中应当靠前,位置也应放在窗口上较醒目的位置。

6):同一界面上的控件数最好不要超过10个,多于10个时可以考虑使用分页界面显示。 7):分页界面要支持在页面间的快捷切换,常用组合快捷键Ctrl+Tab 8):默认按钮要支持Enter操作,即按Enter后自动执行默认按钮对应操作。 9):可写控件检测到非法输入后应给出说明并能自动获得焦点。

10):Tab键的顺序与控件排列顺序要一致,目前流行总体从上到下,同时行间从左到右的方式。 11):复选框和选项框按选择几率的高底或先后排列。 12):复选框和选项框要有默认选项,并支持Tab选择。 13):选项数相同时多用选项框而不用下拉列表框。

24

软件测试规范 测试标准

14):界面空间较小时使用下拉框而不用选项框。 15):选项数较少时使用选项框,相反使用下拉列表框。

16):专业性强的软件要使用相关的专业术语,通用性界面则提倡使用通用性词语。 2: 规范性:

通常界面设计都按Windows界面的规范来设计,可以说:界面遵循规范化的程度越高,则易用性相应的就越好。小型软件一般不提供工具厢。 规范性细则:

1):常用菜单要有命令快捷方式。

2):完成相同或相近功能的菜单用横线隔开放在同一位置。 3):菜单前的图标能直观的代表要完成的操作。 4):菜单深度一般要求最多控制在三层以内。 5):工具栏要求可以根据用户的要求自己选择定制。 6):相同或相近功能的工具栏放在一起。 7):工具栏中的每一个按钮要有及时提示信息。 8):一条工具栏的长度最长不能超出屏幕宽度。 9): 工具栏的图标能直观的代表要完成的操作。 10):系统常用的工具栏设置默认放置位置。 11):工具栏太多时可以考虑使用工具箱。

12):工具箱要具有可增减性,由用户自己根据需求定制。 13):工具箱的默认总宽度不要超过屏幕宽度的1/5。 14): 状态条要能显示用户切实需要的信息,常用的有:

目前的操作、系统状态、用户位置、用户信息、提示信息、错误信息等,如果某一操作需要的时间较长,还应该显示进度条和进程提示。

15):滚动条的长度要根据显示信息的长度或宽度能及时变换,以利于用户了解显示信息的位置和百分比。

16):状态条的高度以放置五好字为宜,滚动条的宽度比状态条的略窄。

17):菜单和工具条要有清楚的界限;菜单要求凸出显示,这样在移走工具条时仍有立体感。 18):菜单和状态条中通常使用5号字体。工具条一般比菜单要宽,但不要宽的太多,否则看起来很不协调。

19): 右键快捷菜单采用与菜单相同的准则。 3:帮助设施:

系统应该提供详尽而可靠的帮助文档,在用户使用产生迷惑时可以自己寻求解决方法。 帮助设施细则:

1):帮助文档中的性能介绍与说明要与系统性能配套一致。

2):打包新系统时,对作了修改的地方在帮助文档中要做相应的修改。 3):操作时要提供及时调用系统帮助的功能。常用F1。

4):在界面上调用帮助时应该能够及时定位到与该操作相对的帮助位置。也就是说帮助要有即

25

软件测试规范 测试标准 通常采用系统稳定运行情况下能够支持的最大并发用户数,或则日常运行用户数,持续执行一段时间业务,保证达到系统疲劳强度的业务量,通过综合分析交易执行指标和资源监控指标,来确定系统处理最大工作量强度性能的过程。 8、大数据量测试

大数据量测试包括独立的数据量测试和综合数据量测试两类。

独立的数据量测试指针对某些系统存储、传输、统计、查询等业务进行的大数据量测试。 综合数据量测试指和压力性能测试、负载性能测试、疲劳性能测试相结合的综合测试。 1.2负载压力测试目的

负载压力测试的目的主要为以下几个方面:

a、 在真实环境下检测系统性能,评估系统性能以及服务等级的满足情况。 b、 预见系统负载压力承受力,在应用实际部署之前,评估系统性能。 c、 分析系统瓶颈、优化系统。 1.3负载压力测试策略

负载压力测试可以采取利用手工进行测试和利用自动化负载压力测试工具进行测试两种测试策略。利用商业化的自动化测试工具是进行负载压力测试的主要手段,比如LoadRunner、QALoad等,适用范围非常广,一般都经过了长时间的市场检验。 1.4负载压力测试计划

在项目的不同阶段都需要进行负载压力性能测试,而测试是需要必要的资源的,所以应该为此制定相应的计划。

a、 在需求分析中充分关注负载压力性能

在需求分析阶段,主要的焦点是为系统中共享的和有限的资源进行需求分析。为了突出负载压力性能需求分析,有时需要为负载压力性能分析分配大约10%的时间,不同的设计选择对于负载压力性能的影响是不同的。测试工程师需要掌握负载压力性能目标设计方法,同时应该具备与确定负载压力性能需求相关的体系结构资料,需求分析应该与体系结构分析结合进行。

b、 从设计中得到负载压力性能指标

设计者应当清楚地了解不同设计对负载压力性能的影响,在设计的各个方面应该充分考虑负载压力性能设计各方的意见,给出负载压力性能的预期指标。 c、 开发阶段创建一个负载压力性能测试环境

开发阶段开始时的负载压力性能任务是建立负载压力性能性能测试环境。需要进行以下工作:

1、 确保合理精确地测试环境,并且此环境可重用;

2、 为测试环境制定规则的负载压力性能测试时间表,如果测试环境是共享的,负载压力

性能测试不能与其他活动同时发生; 3、 选择一个负载压力性能测试工具 d、 验收阶段在多等级范围内测试并调优

测试要如实表现系统的主要应用,测试系统的可升级性。验收测试结果可以统计负载压力性能、比较负载压力性能,以及报告异常,提供分析依据。 e、 运行阶段持续监控系统负载压力性能

监控系统在正常运行状态下的负载压力测试性能,识别系统性能的倾向,确定何种条件下

31

软件测试规范 测试标准

负载压力性能超过可接受范围等。

2.负载压力测试解决方案

系统的负载压力主要包括并发负载、疲劳强度以及大数据量等。 2.1并发性能测试

系统的并发性能是负载压力性能最主要的组成部分。首先并发负载压力的实施是在客户端,负载压力的传输介质是网络,最终压力会到达后台各类服务器,包括Web服务器、应用服务器、数据库服务器以及系统必须的服务器。所以在并发的过程中,关注点包括客户端的性能、应用在网络上的性能以及应用在服务器上的性能。 2.1.1应用在客户端性能的测试

在客户端模拟大量并发用户执行不同业务操作,达到实施负载压力的目的。

采用负载压力测试工具来模拟大量并发用户,模拟机制如图所示,主要组成部分包括主控台、代理机以及被测服务器,各部分采用网络连接。主控台负责管理各个代理以及收集各代理测试数据,代理负责模拟虚拟用户加压。

负载生成器1测试工具主控台负载生成器2服务器

2.1.2 应用在网络上性能的测试

负载生成器3

这部分主要包括两部分内容,一是应用网络故障分析;二是网络应用性能监控。

应用网络故障分析的测试目标是现实网络带宽、延迟、负载和TCP端口的变化是如何影响用户的响应时间的。通过测试,我们可以做到以下几点。

a、 优化性能 b、 预测系统响应时间 c、 确定网络带宽需求 d、 定位应用程序和网络故障

网络应用性能监控包括的内容主要有如下几个方面。

a、 应用监视:1500多种应用及15中定义模式、网络的硬件设备、网络应用的流量和流量的

32

软件测试规范 测试标准

拓扑结构。

b、 关键特性:客户和服务器通信量、应用响应时间和资源应用的业务水平。

c、 按会话统计传输负载:测试应用和会话级响应时间,以及自动为通过网络中每一个联网设

备的每一个应用程序生成负载图。 d、 应用、会话级、事务响应时间相关信息。 e、 测试延迟是在何处被引入网络的,瓶颈在哪里。 f、 趋势分析。

2.1.3应用在服务器上性能的测试

应用在服务器上性能的测试就是对服务器执行监控。监控的内容主要包括操作系统、数据库及中间件等。对操作系统,我们最关注的指标包括三个,即CPU、内存以及硬盘。

对数据库的监控非常复杂,主要的指标如下所示。 a、 监控数据库系统中关键的资源; b、 监测读写页面的使用情况; c、 监控超出共享内存缓冲区的操作数; d、 监测上一轮询期间作业等待缓冲区的时间;

e、 跟踪共享内存中物理日志和逻辑日志的缓冲区的使用率; f、 监控磁盘的数据块使用情况以及被频繁读写的热点区域; g、 监控用户事务或者表空间监控事务日志; h、 监控数据库锁资源;

i、 监测关键业务而定数据表的表空间增长; j、 监控SQL执行情况

中间件服务器包括Web服务器,例如Apache,IIS等。中间件是客户端负载压力的直接承受者,中间件的资源使用得是否合理,与客户端以及与后台数据库服务器连接是否合理,都直接影响系统的性能。 2.2疲劳强度测试

疲劳强度对系统来讲也是一种负载,它强调的是长时间的考核。 2.2.1日常业务疲劳强度模拟

系统日常业务可能负载并不大,但其特点是持续时间长。日常业务疲劳强度测试,就是模拟系统的日常业务,持续执行―一段时间‖,暴露系统的性能问题,例如内存泄露、资源争用等,分析与调整的方法与并发性能测试是非常类似的。 2.2.2高峰业务疲劳强度模拟

一般情况下系统运行都有其高峰值。疲劳强度测试必须要模拟这样的高峰业务,并且要满足两个主要条件。一是这段模拟时间所处理的交易量要达到系统疲劳强度需求的业务量,以满足系统对长时间运行过程中所递增的数据量的要求;二是在这段测试周期中必须通过加大负载,以及尽可能长的测试周期来保证疲劳强度测试。 2.3大数据量测试

大数据量测试包括独立数据量测试和综合数据量测试两种主要类型。 a、 独立数据量测试

针对某些系统存储、传输、统计、查询等业务进行单用户大数据量测试。 b、 综合数据量测试

33

软件测试规范 测试标准

在并发测试和疲劳强度测试过程中,如果不考虑数据量对系统性能的影响,无疑会带来一个缺陷。因此,需要采取并发测试、疲劳强度测试以及大数据量测试相结合的综合测试方案。 3.负载压力测试指标

一般情况下,我们可以选择的指标包括以下几类: a、 客户端交易处理性能指标 b、 服务器资源监控指标 c、 数据库资源监控指标 d、 Web服务器监控指标 e、 中间件监控指标 3.1交易处理性能指标

交易处理性能指标包括以下4项: 1) 并发用户数指标 2) 交易处理指标 3) Web请求指标 4) Web页面组件指标 3.2服务器操作系统资源监控

Windows操作系统资源监控指标如下图所示: 对 象 System 度 量 %Total Processor Time 描 述 系统上所有处理器都忙于执行非空闲线程的平均时间百分比。 Processor %Processor Time 处理器执行非空闲线程的时间百分比,此计数器设计为处理器活动的一个主要指示器 System File Data Operation/sec 计算机向文件系统设备发出读取和写入操作的速度。 System Memory PhysicalDisk Processor Queue Length Page Faults/sec %Disk Time 线程单元中的处理器队列的即时长度。 此值为处理器中的页面错误的计数 选定的磁盘驱动器对读写请求提供服务的已用时间所占百分比 Memory Pool Nonpaged Bytes 非分页池中的字节数,指可供操作系统组件完成指定任务后从其中获得空间的系统内存区域 Memory Pages/sec 为解析内存对页面的引用而从磁盘读取的页数或写入磁盘的页数 34

软件测试规范 测试标准 System Objects Process Total Tnterrupts/sec Threads Private Bytes 计算机接收并处理硬件中断的速度 计算机在收集数据时的线程数 专为此进程分配,无法与其他进程共享的当前字节数 针对操作系统的监控,如果我们需要监控磁盘管理、文件系统、内存、CPU等方面的内容,下面给出相关的监控建议。

a、 磁盘管理

1) 采集物理读/写和逻辑读/写的信息 2) 收集操作系统和其他平台上的磁盘忙信息 3) 监控I/O b、 文件系统

1) 显示每个文件系统的使用率,检测文件系统空闲空间的大小 2) 剪裁文件系统——删除指定的CORE文件和其他文件 3) 显示文件系统的mount on device、type、size等内容 4) 可以监控特殊的文件系统

5) 检测特定文件的存在即超出特定期限的文件存在 c、 内存

1) 显示可用的内存数量 2) 决定当前的内存短缺量 3) 帮助分析内存问题

4) 显示内存的实存、所有虚存等信息 d、 CPU

1) 记录CPU的使用率

2) 监测CPU参数,包括CPU idle,CPU wait,CPU system usage,CPU user usage,run queue length 3) 显示CPU context switches的总数

4) 显示CPU出来系统任务和完成用户任务的时间比例 3.3数据库资源监控

SQL Server资源监控指标:

度 量 %Total Processor Time(NT) 描 述 系统上所有处理器都忙于执行非空闲线程的时间的平均百分比 Cache Hit Ratio I/O-Batch Writes/sec I/O-Lazy Writes/sec I/O-Outstanding reads 在数据缓存中找到所请求数据页的时间百分比 使用Batch I/O,每秒写入磁盘的页数。 每秒由Lazy Writer刷新磁盘的页数 挂起的物理读取书 35

软件测试规范 测试标准 I/O-Outstanding writes I/O-Page Reads/sec I/O-Transactions/sec User Connections 3.4 Web服务器监控

IIS资源监控指标:

对 象 Web Service Web Service Web Service Web Service Web Service 度 量 Bytes Sent/sec Bytes Receive/sec Get Requests/sec Post Requests/sec Maximum Connections Web Service Web Service Current Connections Current NonAnonymous Users Web Service Not Found Errors/sec 由于找不到请求的文档,服务器不能满足请求而出现的错误率 Process Private Bytes 已经由进程分配但无法与其他进程共享的当前字节数

当前与Web Service建立的连接数 当前使用Web Service非匿名连接的用户数 描 述 WebService发送数据字节的速率 WebService接收数据字节的速率 使用GET方法进行HTTP请求的速率 使用POST方法进行HTTP请求的速率 同时与Web Service建立的最大连接数 挂起的物理写入数 每秒物理页读取数 每秒执行的Transaction-SQL命令批处理数 打开的用户连接数 36

软件测试规范 测试标准

九 兼容性测试

兼容性测试将验证软件与其所依赖的环境的依赖程度,包括对硬件的依赖程度,对平台软件、其他软件的依赖程度等,下面就对兼容性测试的范围和方法进行了描述。 1.硬件兼容性测试

所有软件都需向用户说明其运行的硬件环境,对于多层结构的软件系统来说,需要说明 其服务器端、客户端以及网络所需的环境。兼容性测试的目的就是确认这些对于硬件环境的描述是否正确、合理。

硬件兼容性测试需确认以下几点:

1) 最低配置是否能够满足系统运行的需要。 2) 在推荐配置下系统的响应速度。

3) 考察软件对运行硬件环境有无特殊说明,如对CPU、网卡、声卡、显卡型号等有无特别声明。 4) 为了满足不同的使用需求,软件系统能否运行在多种硬件配置环境下,并且系统功能和性能都

能满足设计需求。 2.软件兼容性测试 1)与操作系统的兼容性

由于软件开发技术的限制以及各种操作系统之间存在着巨大的差异性,因此,目前大多商业软件并不能达到理想的平台无关行。如果该软件承诺可以在多种操作系统上运行,那么我们就需要测试它与操作系统的兼容性。

a、 Windows平台:对于B/S结构的客户端,至少需要在Windows2000、Windows2003、Windows

XP、Windows 7上进行测试

b、 Linux平台:需要对多发行商、多版本进行测试,用户文档中的内容应明确至发行商的版本

号,如:RedHat、Tuebo Linux、Ubuntu、中科红旗、中软等。

c、 UNIX平台:与Linux平台一样,UNIX平台也存在着Solaris、IBM、HP等多厂商的各版本。 d、 Macintosh:使用这类系统的往往是图形专用软件。 2)与数据库的兼容性

数据库兼容性测试要点如下:

a、 完整性测试。检查原数据库中各种对象是否全部移入新数据库,同时比较数据表中数据内容数

是否相同。

b、 应用系统测试。模拟普通用户操作应用的过程,对应用进行操作并检查运行结果。

c、 性能测试。针对服务器、数据库进行性能测试,并与在原数据库下记录的性能基准数据进行比

照,找出性能方面的问题,并有针对性地进行性能优化。 3)与中间件的兼容性

中间件兼容性的测试方法与数据库兼容性的测试方法相似。 4) 与浏览器的兼容性

浏览器是Web客户端最核心的构件,来自不同厂商的浏览器对Java,、JavaScript、 ActiveX、 plug-ins或不同的HTML规格有不同的支持。例如,ActiveX是Microsoft的产品,是为Internet Explorer而设计的,JavaScript是Netscape的产品,Java是Sun的产品等等。另外,框架和层次结构风格在不同的浏览器中也有不同的显示,甚至根本不显示。不同的浏览器对安全性和Java的设置也不一样。 测试浏览器兼容性的一个方法是创建一个兼容性矩阵。在这个矩阵中,测试不同厂商、不同版本的

37

软件测试规范 测试标准 浏览器对某些构件和设置的适应性。 5) 与其他软件的兼容性

除了以上各项软件的兼容性以外,我们还需要考虑以下问题。

a、 与支持软件的兼容性。对被测软件运行所必须的其他软件都应当进行兼容性测试,测试中

要对其所依赖的软件的各个版本分别进行测试。

b、 与其他同类软件的兼容性。对于通用软件来说,这是一个重要问题。 c、 与其他非同类软件的兼容性。

38

软件测试规范 测试标准

十 Web测试

在Web工程过程中,基于Web系统的测试、确认和验收是一项重要而富有挑战性的工作。基于Web的系统测试与传统的软件测试不同,它不但需要检查和验证是否按照设计的要求运行,而且还要测试系统在不同用户的浏览器端的显示是否合适。重要的是,还要从最终用户的角度进行安全性和可用性测试。然而,Internet和Web媒体的不可预见性使测试基于Web的系统变得困难。

一般软件的发布周期以月或以年计算,而Web应用的发布周期以天计算甚至以小时计算。Web测试人员必须处理更短的发布周期,测试人员和测试管理人员面临着从测试传统的C/S结构和框架环境到测试快速改变的Web应用系统的转变。 1.功能测试

1.1链接测试

链接测试可分为三个方面。首先,测试所有链接是否按指示的那样确实链接到了该链接的页面;其次,测试所链接的页面是否存在;最后,保证Web应用系统上没有孤立的页面,所谓孤立页面是指没有链接指向该页面,只有知道正确的URL地址才能访问。

链接测试可以自动进行,现在已经有许多工具可以采用。链接测试必须在集成测试阶段完成,也就是说,在整个Web应用系统的所有页面开发完成之后进行链接测试。

1.2表单测试

当用户给Web应用系统提交信息时,就需要使用表单操作,例如用户注册、登陆、信息提交等。在这种情况下,我们必须测试提交操作的完整性,以校验提交给服务器的信息的正确性。如果使用了默认值,还要检验默认值的正确性。如果表单只能接受指定的某些值,则也要进行测试。例如:只能接受某些字符,测试时可以跳过这些字符,看系统是否会报错。

1.3Cookies测试

如果Web应用系统使用了Cookies,就必须检查Cookies是否能正常工作。测试的内容可包括Cookies是否起作用,是否按预定的时间进行保存,刷新对Cookies有什么影响等。

1.4设计语言测试

Web设计语言版本的差异可以引起客户端或服务器端严重的问题,例如使用哪种版本的HTML等。除了HTML的版本问题外,不同的脚本语言,例如Java、JavaScript、 ActiveX、VBScript或Perl等也要进行验证。

1.5数据库测试

在使用了数据库的Web应用系统中,一般情况下,可能发生两种错误,分别是数据一致性错误和输出错误。数据一致性错误主要是由于用户提交的表单信息不正确而造成的,而输出错误主要是由于网络速度或程序设计问题等引起的,针对这两种情况,可分别进行测试。 2.性能测试

2.1连接速度测试

用户连接到Web应用系统的速度根据上网方式的变化而变化,他们或许是电话拨号,或是宽带上网。当下载一个程序时,用户可以等较长的时间,但如果仅仅访问一个页面就不会这样。如果Web系统响应时间太长(例如超过5秒钟),用户就会因没有耐心等待而离开。

另外,有些页面有超时的限制,如果响应速度太慢,用户可能还没来得及浏览内容,就需要重新登陆了。而且,连接速度太慢,还可能引起数据丢失,使用户得不到真实的页面。

2.2负载压力测试

39

软件测试规范 测试标准

负载测试是为了测量Web系统在某一负载级别上的性能,以保证Web系统在需求范围内能正常工作。负载级别可以是某个时刻同时访问Web系统的用户数量,也可以是在线数据处理的数量。例如:Web应用系统能允许多少个用户同时在线?如果超过了这个数量,会出现什么现象?Web应用系统能否处理大量用户对同一个页面的请求?

压力测试的区域包括表单、登陆和其他信息传输页面等。 3.可用性测试

3.1导航测试

导航描述了用户在一个页面内操作的方式,在不同的用户接口控制之间,例如按钮、对话框、列表和窗口等;或在不同的连接页面之间。通过考虑下列问题,可以决定一个Web应用系统是否易于导航:导航是否直观?Web系统的主要部分是否可通过主页存取?Web系统是否需要站点地图、搜索引擎或其他的导航帮助?

在一个页面上放太多的信息往往起到与预期相反的效果。Web应用系统的用户趋向于目的驱动,很快地扫描一个Web应用系统,看是否有满足自己需要的信息,如果没有,就会很快地离开。很少有用户愿意花时间去熟悉Web应用系统的结构,因此,Web应用系统导航帮助要尽可能地准确。

导航的另一个重要方面是Web应用系统的页面结构、导航、菜单、连接的风格是否一致。确保用户凭直觉就知道Web应用系统里面是否还有内容,内容在什么地方。

Web应用系统的层次一旦决定,就要着手测试用户导航功能,让最终用户参与这种测试,效果将更加明显。

3.2图形测试

在Web应用系统中,适当的图片和动画既能起到广告宣传的作用,又能起到美化页面的功能。一个Web应用系统的图形可以包括图片、动画、边框、颜色、字体、背景、按钮等。图形测试的内容有:

(1)要确保图形有明确的用途,图片或动画不要胡乱地堆在一起,以免浪费传输时间。Web应用系统的图片尺寸要尽量地小,并且要能清楚地说明某件事情,一般都链接到某个具体的页面。

(2)验证所有页面字体的风格是否一致。 (3)背景颜色应该与字体颜色和前景颜色相搭配。

(4)图片的大小和质量也是一个很重要的因素,一般采用JPG或GIF压缩。 3.3内容测试

内容测试用来检验Web应用系统提供信息的正确性、准确性和相关性。 3.4整体界面测试

整体界面是指整个Web应用系统的页面结构设计,是给用户的一个整体感。例如:当用户浏览Web应用系统时是否感到舒适,是否凭直觉就知道要找的信息在什么地方?整个Web应用系统的设计风格是否一致? 4.客户端兼容性测试

4.1平台测试

市场上有很多不同的操作系统类型,最常见的有Windows、Unix、Macintosh、Linux等。Web应用系统的最终用户究竟使用哪一种操作系统,取决于用户系统的配置。这样,就可能会发生兼容性问题,同一个应用可能在某些操作系统下能正常运行,但在另外的操作系统下可能会运行失败。因此,在Web系统发布之前,需要在各种操作系统下对Web系统进行兼容性测试。

40

软件测试规范 附录五 测试计划

附录五 测试计划

1 概述

1.1 编写目的

[可照抄下列语句,也可适当修改。]

本文档的编写目的在于为整个测试阶段的管理工作和技术工作提供指南;确定测试的内容和范围,为评价系统提供依据。 1.2 参考资料

说明软件测试所需的资料(需求分析、设计规范等)。 1.3 术语和缩写词

说明本次测试所涉及到的专业术语和缩写词等。 1.4 测试种类

说明本次测试所属的测试种类(单元测试、集成测试、有效性测试、系统测试、用户测试)及测试的对象。 2 系统描述

简要描述被测软件系统,可用图表加解释的形式,说明被测系统的输入、基本处理功能及输出,为进行测试提供一个提纲。 3 测试环境 3.1 硬件

列出进行本次测试所需的硬件资源的型号、配置和厂家。 3.2 软件

列出进行本次测试所需的软件资源,包括操作系统和支持软件(不含待测软件)的名称、版本、厂家。

4 测试安排

4.1 (子系统1名称和项目唯一标识号) 4.1.1 测试总体要求

描述本次测试的要求,如: 对所有功能进行正确性测试;

使用一些虚假值、最大值和错误值对软件进行测试; 对软件进行错误检测和出错恢复的测试;

对特定环境条件的组合,用模拟测试数据对软件进行测试; 使用从环境中提取的―真实数据‖作为输入,对软件进行测试。 4.1.2 主要测试内容

列出提纲。 4.1.3 测试进度安排

给出进行测试工作的时间安排。 4.2 (子系统2名称和项目唯一标识号) 5 测试数据的记录、整理和分析

说明对本次测试得到数据的记录、整理和分析的方法和存档要求。

审核:

年 月 日

批准:

年 月 日

46

附录六 程序错误报告

(系统名称)

测试项目 项目名称 测试类型 模块名称 测试时间 序号 模块名称 错误等级 错 误 描 述 版本 测试批次 修改情况 复 核

测试人:

软件测试规范 附录七 测试分析误报告

附录七 测试分析报告

1 概述 1.1 编写目的

编写本文档的目的在于

通过对测试结果的分析得到对软件的评价; 为纠正软件缺陷提供依据; 使用户对系统运行建立信心。 1.2 参考资料

说明软件测试所需的资料(需求分析、设计规范等)。 1.3 术语和缩写词

说明本次测试所涉及到的专业术语和缩写词等。 2 测试对象

包括测试项目、测试类型、测试批次(本测试类型的第几次测试)、测试时间等。 3 测试分析 3.1 测试结果分析

列出测试结果分析记录,并按下列模板产生BUG分布表和BUG分布图。 分析模版:

从软件测试中发现的并最终确认的错误点等级数量来评估:

从以上提出的BUG等级来统计等级和数量的一个分布情况:(如下表)

BUG数量 所占比例

A 2 9% B 17 74% C 3 13% D 0 0% E 1 4% BUG分布图9%0%4%A级B级C级D级E级74%3.2 对比分析

若非首次测试时,将本次测试结果与首次测试、前一次测试的结果进行对比分析比较。 3.3 测试评估

通过对测试结果的分析提出一个对软件能力的全面分析,需标明遗留缺陷、局限性和软件的约束限制等,并提出改进建议。 3.4 测试结论

根据测试标准及测试结果,判定软件能否通过测试。 测试主管: 年 月 日

48

本文来源:https://www.bwwdw.com/article/dw6a.html

Top