静态测试是指计算机不真正运行被测试的程序,而是人工对程序和文档进行分析与检查,包括走查、符 执行、需求确认等。静态测试一方面利用计算机作为对被测程序进行特性分析的工具,与人工测试有着根本的区别;另一方面并不真正运行被测程序,与动态方法也不相同。因此,静态测试常称为“分析”,是对被测程序进行特性分析方法的总称。静态分析过程如图2.1所示。其中,针对代码的静态测试包括代码检查、静态结构分析、代码质量度量等。1) 代码检查 代码检查主要检查代码和设计的一致性,代码对文档标准的遵循及代码的可读性,代码的逻辑表达正确性,代码结构的合理性等方面。代码检查比动态测试更有效率,能快速找到30%~70%的逻辑设计错误和代码缺陷。 代码检查一般在编译和动态测试之前进行,其实施方法很多,如走查(Walk through)、审查(Inspection)、评审(Review)等,如表2.1所示。 (1) 走查。 (2) 审查。 (3) 评审。
2) 静态结构分析 静态结构分析以图形的方式表现程序的内部结构,例如,函数调用关系图、函数内部控制流图等。其中,函数调用关系图描述程序中函数调用与被调用的关系,控制流图显示函数的逻辑结构。 2.动态测试动态测试指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率和健壮性等性能的测试方法。这种方法由三部分组成:构造测试实例、执行程序和分析程序的输出结果。 2.4.4 按照测试技术划分 1.黑盒测试黑盒测试也称功能测试或数据驱动测试。它是在已知产品所应具有的功能的前提下,通过测试来检测每个功能是否都能正常使用。在测试时,把程序看做一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试试图发现以下类型的错误:功能错误或遗漏、界面错误、数据结构或外部数据库访问错误、性能错误、初始化和终止错误等。 2.白盒测试白盒测试又称结构测试或逻辑驱动测试。与黑盒测试正好相反,它是知道产品内部工作过程,检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都能按预定要求正确工作。白盒测试的主要方法有逻辑驱动、路径测试等,主要用于软件验证。 白盒测试是基于源代码的测试,需要了解程序的构架、具体需求以及一些编写程序的技巧,能够检查一些程序规范、指针、变量、数组越界等问题。 白盒测试容易发现以下类型的错误:变量没有声明、无效引用、数组越界、死循环、函数本身没有析构、参数类型不匹配、调用系统的函数没有考虑到系统的兼容性等。 3.灰盒测试灰盒测试介于黑盒测试和白盒测试之间,主要用于测试各个组件之间的逻辑关系是否正确,相对白盒测试来说要求相对较低,对测试用例要求也相对较低,用于代码的逻辑测试、验证程序接收和处理参数。灰盒测试的重点在于测试程序的处理能力和健壮性,相对黑盒测试和白盒测试而言,投入的时间相对少,维护量也较小。 软件测试方法与软件开发过程相关联。单元测试一般应用白盒测试方法,集成测试应用灰盒测试方法,系统测试和确认测试应用黑盒测试方法。 黑盒测试和白盒测试比较如表2.2所示。
2.6.2 测试用例的编写 编写测试用例文档应有文档模板,须符合内部的规范要求。测试用例文档将受制于测试用例管理软件的约束。 测试用例文档由简介和测试用例两部分组成。简介部分编制了测试目的、测试范围、定义术语、参考文档、概述等。测试用例部分逐一列示各测试用例。每个具体测试用例都将包括下列详细信息:用例编 、用例名称、测试等级、入口准则、验证步骤、期望结果(含判断标准)、出口准则、注释等。以上内容涵盖了测试用例的基本元素:测试索引、测试环境、测试输入、测试操作、预期结果、评价标准。表2.4所示是一个典型的测试用例文档。
测试用例可根据基本事件、备选事件和异常事件设计相关的用例。设计基本事件的用例,应该参照用例规约(或设计规格说明书),根据关联的功能、操作按路径分析法设计测试用例。而对孤立的功能则直接按功能设计测试用例。基本事件的测试用例应包含所有需要实现的需求功能,覆盖率达100%。 设计备选事件和异常事件的用例,则要复杂许多。 2.6.3 测试用例的作用 1.指导测试的实施 测试用例主要适用于集成测试、系统测试和回归测试。在实施测试时测试用例作为测试的标准,测试人员一定要按照测试用例严格按用例项目和测试步骤逐一实施测试,并将测试情况记录在测试用例管理软件中,以便自动生成测试结果文档。 根据测试用例的测试等级,集成测试应测试哪些用例,系统测试和回归测试又该测试哪些用例,在设计测试用例时都已作明确规定,实施测试时测试人员不能随意作变动。 2.规划测试数据的准备 按照测试用例配套准备一组或若干组测试原始数据,以及标准测试结果。尤其像测试 表之类数据集的正确性,按照测试用例规划准备测试数据是十分必要的。 除正常数据之外,还必须根据测试用例设计大量边缘数据和错误数据。 3.编写测试脚本的“设计规格说明书” 为提高测试效率,软件测试已大力发展自动测试。自动测试的中心任务是编写测试脚本。如果说软件工程中软件编程必须有设计规格说明书,那么测试脚本的设计规格说明书就是测试用例。 4.评估测试结果的度量基准 完成测试实施后需要对测试结果进行评估,并且编制测试 告。判断软件测试是否完成、衡量测试质量需要一些量化的结果。例如:测试覆盖率是多少,测试合格率是多少,重要测试合格率是多少,等等。 5.分析缺陷的标准 通过收集缺陷,对比测试用例和缺陷数据库,分析确认是漏测还是缺陷复现。漏测反映了测试用例的不完善,应立即补充相应测试用例,最终达到逐步完善软件质量的目的。而已有相应测试用例,则反映实施测试或变更处理存在问题。 2.6.4 相关问题1.测试用例的评审 测试用例是软件测试的准则,但它并不是一经编制完成就成为准则。测试用例在设计编制过程中要组织同级互查。完成编制后应组织专家评审,需获得通过才可以使用。评审委员会可由项目负责人、测试、编程、分析设计等有关人员组成,也可邀请客户代表参加。 2.测试用例的修改更新 测试用例在形成文档后还需要不断完善。主要来自三方面的缘故:第一,在测试过程中发现设计测试用例时考虑不周,需要完善;第二,在软件交付使用后反馈的软件缺陷,而缺陷又是因测试用例存在漏洞造成的;第三,软件自身新增功能以及软件版本的更新,测试用例也必须配套修改更新。 一般小的修改完善可在原测试用例文档上修改,但文档要有更改记录。如果软件的版本升级更新,则测试用例一般也应随之编制升级更新版本。 3.测试用例的管理软件 运用测试用例还需配备测试用例管理软件。它的主要功能有三个:第一,能将测试用例文档的关键内容,如编 、名称等自动导入管理数据库,形成与测试用例文档完全对应的记录;第二,可供测试实施时及时输入测试情况;第三,最终实现自动生成测试结果文档,包含各测试度量值、测试覆盖表及测试通过或不通过的测试用例清单列表。 2.7 思考与习题 一、选择题 1. 软件测试按照测试技术划分为( C )。A. 性能测试、负载测试、压力测试 B. 恢复测试、安全测试、兼容测试C. ?A与B都是 D. 单元测试、集成测试、验收测试 2. 软件测试的目的是( C )。A. 避免软件开发中出现错误 B. 发现软件开发中出现的错误C. 尽可能发现并排除软件中潜藏的错误,提高软件的可靠性D. 修改软件中出现的错误 3. 各个地方对软件测试定义不同,请你根据软件测试方面、理论方面、代码的角度测试填空。 代码方面分为:( A )、集成测试、系统测试、验收测试。 理论方面分为:( C )、动态测试、静态测试 测试方面分为:( B )、压力测试、回归测试、负载测试、恢复测试、安全性测试、兼容性测试、内存泄露测试、比较测试等。A. 单元测试 B. 黑盒测试 C. 白盒测试 D. 负载测试 二、判断题(1) ?Beta测试是验收测试的一种。( √ )(2) 尽量用公共过程或子程序去代替重复的代码段。( √ )(3) 测试是为了验证该软件是否已正确地实现了用户的要求。( × )(4) 对于连锁型分支结构,若有n个判定语句,则有2n条路径。( × )(5) 尽量采用复合的条件测试,以避免嵌套的分支结构。( √ )(6) ?GOTO语句概念简单,使用方便,在某些情况下,保留GOTO语句反能使写出的程序更加简洁。( √ )(7) 发现错误多的程序模块,残留在模块中的错误也多。( √ ) (8)黑盒测试方法中最有效的是因果图法。( × ) (9)在做程序的单元测试时,桩(存根)模块比驱动模块容易编写。( × ) (10)程序效率的提高主要应通过选择高效的算法来实现。( √ ) 三、简答题1. 软件测试的目的是什么 答:软件测试的目的有: ①软件测试是为了发现错误而执行程序的过程。 ②一个好的测试用例能够发现至今尚未发现的错误。 ③一个成功的测试是发现了至今尚未发现的错误。 2. 软件测试中应注意哪些事项 答:软件测试应注意以下事项: 1.应当把“尽早和不断地测试”作为开发者的座右铭。 2.程序员应该避免检查自己的程序,测试工作应该由独立的专业的软件测试机构来完成。 3.设计测试用例时, 应该考虑到合法的输入和不合法的输入,以及各种边界条件,特殊情况下要制造极端状态和意外状态,比 如 络异常中断、电源断电等情况。 4.一定要注意测试中的错误集中发生现象,这和程序员的编程水平和习惯有很大的关系。 5.对测试错误结果一定要有一个确认的过程。- – 般有A 测试出来的错误,一定要有一个B来确认,严重的错误可以召开评审会进行讨论和分析。 6.制定 严格的测试计划,并把测试时间安排得尽量宽松,不要希望在极短的时间内完成一一个高水平的测试。 7.回归测试的关联性一 定要引起充分的注意,修改-一个错误而引起更多错误出现的现象并不少见。 8.妥善保存- -切测试过程文档,意义是不言而喻的,测试的重现性往往要靠测试文档。 3. 按执行主体划分,软件测试分哪几类 答:哪找测试实施组织划分,软件测试分为a 测试,β 测试和第三方测试。 4. ?V模型和W模型各自的优缺点是什么 答: V模型: 优点是:如此简单的模型适合工程量小、人力投入 也少的情况。而且项目的改动不大,风险不高的情况。 缺点:在实际中能用上V 模型的项目很少。错误也发现得迟。采用V模型的而产生的风险费用很高 W模型: 优点:能在前期发现需求错误,在测试过程中也有利于及时了解项目难度。适合做中型软件。 缺点: W模型继承V模型而来,仍要求项目需求不能有大变动,否则前期准备很容易白费。也不适合 于大型的项目,大型项 目不能一-开始就有完整的需求,而且风险大而造成需求变动大。人力上也要求有专门测试的人员。 5. 测试用例是什么 答:测试用例是指对一-项特定的软件产品进行测试任务的描述,体现在测试方案,方法,技术,策略等。测试用例的内容包括测试目标,测试环境,输入数据,测试步骤,预期结果,测试脚本等,并形成文档。 测试用例的属性: 1.测试用例具有优先性。 2.测试用例具有目标性。 3.测试用例具有范围性。 4.测试用例具有关联性。 5.测试用例具有阶段性。 6.测试用例具有状态性。 7.测试用例具有代表性。 8.测试用例具有时效性。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!