软件测试培训文档_第1页
软件测试培训文档_第2页
软件测试培训文档_第3页
软件测试培训文档_第4页
软件测试培训文档_第5页
已阅读5页,还剩96页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

B/S后台开发软件测试测试分类测试用例书写议程测试中需要注意的问题软件测试基本概念定义软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试甚至根据需要编写不同的测试工具,设计和维护测试系统对测试方案可能出现的问题进行分析和评估执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。软件测试的内容软件测试主要工作内容是验证(verification)和确认(validation)验证(verification)是保证软件正确地实现了一些特定功能的一系列活动,即保证软件做了你所期望的事情。(Dotherightthing)

1.确定软件生存周期中的一个给定阶段的产品是否达到前阶段确立的需求的过程2.程序正确性的形式证明,即采用形式理论证明程序符合设计规约规定的过程3.评市、审查、测试、检查、审计等各类活动,或对某些项处理、服务或文件等是否和规定的需求相一致进行判断和提出报告软件测试的内容确认(validation)是一系列的活动和过程,目的是想证实在一个给定的外部环境中软件的逻辑正确性。即保证软件以正确的方式来做了这个事件(Doitright)

1.静态确认,不在计算机上实际执行程序,通过人工或程序分析来证明软件的正确性;2.动态确认,通过执行程序做分析,测试程序的动态行为,以证实软件是否存在问题。软件测试的对象不仅仅是程序测试,软件测试应该包括整个软件开发期间各个阶段所产生的文档如需求规格说明、概要设计文档、详细设计文档,当然软件测试的主要对象还是源程序。

测试分类测试用例书写议程测试中需要注意的问题

软件测试基本概念软件内部结构和具体实现的角度划分白盒测试黑盒测试灰盒测试白盒测试也称结构测试或逻辑驱动测试按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作白盒测试主要是想对程序模块进行如下检查:对程序模块的所有独立的执行路径至少测试一遍。对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍。在循环的边界和运行的界限内执行循环体。测试内部数据结构的有效性黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。黑盒测试主要是为了发现以下几类错误:是否有不正确或遗漏的功能?在接口上,输入是否能正确的接受?能否输出正确的结果?是否有数据结构错误或外部信息(例如数据文件)访问错误?性能上是否能够满足要求?是否有初始化或终止性错误?

灰盒测试是介于白盒测试与黑盒测试之间的,可以这样理解,灰盒测试关注输出对于输入的正确性同时也关注内部表现,但这种关注不象白盒那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出是正确的,但内部其实已经错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要采取这样的一种灰盒的方法。执行程序的角度静态测试静态方法是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。静态测试结果可用于进一步的查错,并为测试用例选取提供指导。动态测试动态方法是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率和健壮性等性能这种方法由三部分组成:构造测试实例、执行程序、分析程序的输出结果所谓软件的动态测试,就是通过运行软件来检验软件的动态行为和运行结果的正确性。目前,动态测试也是公司的测试工作的主要方式。软件开发的过程按阶段划分单元测试单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。单元测试是由程序员自己来完成,最终受益的也是程序员自己。可以这么说,程序员有责任编写功能代码,同时也就有责任为自己的代码编写单元测试。执行单元测试,就是为了证明这段代码的行为和我们期望的一致。集成测试集成测试(也叫组装测试,联合测试)是单元测试的逻辑扩展。它的最简单的形式是:两个已经测试过的单元组合成一个组件,并且测试它们之间的接口。从这一层意义上讲,组件是指多个单元的集成聚合。在现实方案中,许多单元组合成组件,而这些组件又聚合成程序的更大部分。方法是测试片段的组合,并最终扩展进程,将您的模块与其他组的模块一起测试。最后,将构成进程的所有模块一起测试。确认测试确认测试的目的是向未来的用户表明系统能够像预定要求那样工作。确认测试又称有效性测试。在模拟的环境下,运用黑盒测试的方法,验证被测软件是否满足需求规格说明书列出的需求。任务是验证软件的功能和性能及其他特性是否与用户的要求一致。对软件的功能和性能要求在软件需求规格说明书中已经明确规定,它包含的信息就是软件确认测试的基础。系统测试系统测试的目的是对最终软件系统进行全面的测试,确保最终软件系统满足产品需求并且遵循系统设计。系统测试是将经过测试的子系统装配成一个完整系统来测试。它是检验系统是否确实能提供系统方案说明书中指定功能的有效方法。(常见的联调测试)验收测试验收测试是部署软件之前的最后一个测试操作。验收测试的目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。验收测试是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是验收测试的任务,即软件的功能和性能如同用户所合理期待的那样。测试分类

测试用例书写议程测试中需要注意的问题

软件测试基本概念用例设计等价类划分边界值分析法错误推测法因果图方法正交表分析法场景分析方法等价类划分等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定.测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据.取得较好的测试结果.等价类划分可有两种不同的情况:有效等价类和无效等价类.边界值分析法边界值分析方法是对等价类划分方法的补充。大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部.因此针对各种边界情况设计测试用例,可以查出更多的错误.使用边界值分析方法设计测试用例,首先应确定边界情况.通常输入和输出等价类的边界,就是应着重测试的边界情况.应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据.错误推测法基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法.错误推测方法的基本思想:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例.因果图方法前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系,相互组合等.考虑输入条件之间的相互组合,可能会产生一些新的情况.但要检查输入条件的组合不是一件容易的事情,即使把所有输入条件划分成等价类,他们之间的组合情况也相当多.

因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例.

这就需要利用因果图(逻辑模型).因果图方法最终生成的就是判定表.它适合于检查程序输入条件的各种组合情况.正交表分析法有时候,可能因为大量的参数的组合而引起测试用例数量上的激增,同时,这些测试用例并没有明显的优先级上的差距,而测试人员又无法完成这么多数量的测试,就可以通过正交表来进行缩减一些用例,从而达到尽量少的用例覆盖尽量大的范围的可能性。场景分析方法指根据用户场景来模拟用户的操作步骤,这个比较类似因果图,但是可能执行的深度和可行性更好。

测试分类测试用例书写议程

测试中需要注意的问题

软件测试基本概念测试需要注意的问题为什么要开展软件测试工作?因为没有经过测试的软件很难在发布之前知道该软件的质量,就好比ISO质量认证一样,测试同样也需要质量的保证,这个时候就需要在团队中开展软件测试的工作。在测试的过程发现软件中存在的问题,及时让开发人员得知并修改问题,在即将发布时,从测试报告中得出软件的质量情况。测试需要注意的问题测试计划工作的目的是什么?测试计划工作的内容都包括什么?其中哪些是最重要的?软件测试计划是指导测试过程的纲领性文件,包含了产品概述、测试策略、测试方法、测试区域、测试配置、测试周期、测试资源、测试交流、风险分析等内容。借助软件测试计划,参与测试的项目成员,尤其是测试管理人员,可以明确测试任务和测试方法,保持测试实施过程的顺畅沟通,跟踪和控制测试进度,应对测试过程中的各种变更。测试计划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术。所以其中最重要的是测试测试策略和测试方法(最好是能先评审)测试需要注意的问题您认为做好测试计划工作的关键是什么?1.明确测试的目标,增强测试计划的实用性编写软件测试计划得重要目的就是使测试过程能够发现更多的软件缺陷,因此软件测试计划的价值取决于它对帮助管理测试项目,并且找出软件潜在的缺陷。因此,软件测试计划中的测试范围必须高度覆盖功能需求,测试方法必须切实可行,测试工具并且具有较高的实用性,便于使用,生成的测试结果直观、准确2.坚持“5W”规则,明确内容与过程5W”规则指的是“What(做什么)”、“Why(为什么做)”、“When(何时做)”、“Where(在哪里)”、“How(如何做)”。利用“5W”规则创建软件测试计划,可以帮助测试团队理解测试的目的(Why),明确测试的范围和内容(What),确定测试的开始和结束日期(When),指出测试的方法和工具(How),给出测试文档和软件的存放位置(Where)。测试需要注意的问题3.采用评审和更新机制,保证测试计划满足实际需求测试计划写作完成后,如果没有经过评审,直接发送给测试团队,测试计划内容的可能不准确或遗漏测试内容,或者软件需求变更引起测试范围的增减,而测试计划的内容没有及时更新,误导测试执行人员。4.分别创建测试计划与测试详细规格、测试用例应把详细的测试技术指标包含到独立创建的测试详细规格文档,把用于指导测试小组执行测试过程的测试用例放到独立创建的测试用例文档或测试用例管理数据库中。测试计划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术。您认为做好测试用例设计工作的关键是什么?白盒测试用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果黑盒法用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。不可能做到完全测试,以最少的用例在合理的时间内发现最多的问题请尽可能的详细描述您以往的性能测试工作的完整过程。性能测试类型包括负载测试,强度测试,容量测试等负载测试:负载测试是一种性能测试指数据在超负荷环境中运行,程序是否能够承担。强度测试:强度测试是一种性能测试,他在系统资源特别低的情况下软件系统运行情况。容量测试:确定系统可处理同时在线的最大用户数在网站流量逐渐加大的情况下,开始考虑做性能测试了,首先要写好性能测试计划,根据运营数据得出流量最大的页面(如果是第一次的话,一般是首页,下载页,个人帐户页流量最大,而且以某种百分比).软件自动化测试技术

软件自动化测试原理

代码分析

GUI对象识别

DOM对象识别

捕获和回放

脚本技术自动比较技术自动化测试的实现方法,对于静态测试和动态测试有很大的不同:动态测试的自动化实现主要通过特定的程序来模拟软件的操作过程或操作行为,然后对软件所做出的反应或输出结果进行检查或验证。静态测试的自动化实现是按照代码规范和软件开发的最佳实践建立各种代码规则,然后依据这些规则对代码进行自动扫描,发现和规则不匹配的各种问题。软件测试自动化实现的原理和方法主要有:直接对代码进行静态和动态分析、测试过程的捕获和回放、测试脚本技术、自动比较技术、虚拟用户技术和测试管理技术等。软件自动化测试的原理代码分析类似于高级编译系统,一般是针对不同的高级语言去构造分析工具,在工具中定义类、对象、函数、变量和常量等各个方面的规则。在分析时,通过对代码进行扫描和解析,找出不符合编码规范的地方,从而给出错误信息和警告信息。还可以根据某种质量模型评价代码的质量,生成系统的调用关系图,评估代码的复杂度等。代码分析Findbugs是一个静态分析工具,它检查类或JAR文件,将字节码与一组缺陷模式(Java代码规范)进行对比以发现各种可能存在的问题。通过静态分析工具可以在不运行程序的情况下对软件进行测试,更早地发现软件中的缺陷。安装Findbugs(Findbugs可以独立运行,也可以作为Eclipse的插件)设置Java环境:安装JDK;配置环境变量安装Eclipse:下载Eclipse软件包并解压在Eclipse中安装Findbugs插件URL:/eclipse用Findbugs做Java代码的分析安装成功后,在Eclipse的“窗口”-->“首选项”中,展开“Java”后发现Findbugs项,从中可以发现Findbugs定义了很多种检查器(Detector),而且分为不同的模式(pattern)和类型(category):纠错(correctness)、不合理的(dodgy)、不好的实践(badpractice)、安全性(security)、性能(performance)和多线程纠错(multithreadedcorrectness)等问题。使用Findbugs:创建或打开一个Java项目选择该项目并单击右键,从菜单中执行“Findbugs”运行后的警告信息会显示在右下区域的Problems视图中双击某条警告信息会自动定位到编辑器中对应的源代码行用Findbugs做Java代码的分析(续)用Findbugs做Java代码的分析(续)上述例子中没有执行代码,而是通过对代码的逐行扫描来分析代码,找出问题。这种静态测试是通过事先所建立的代码规则、由软件工具来自动执行。代码静态分析的关键是建立各种规则,而这种规则的建立依赖于相应编程语言的语法。利用这些规则可以找出Java源程序的许多问题,如:没有用到的变量、多余的变量创建操作、空的catch块等。为了提高代码分析的效率,会把Java源代码解析成抽象语法树(AbstractSyntaxTree,AST),由Java符号流(对象)构成树型层次结构(语义层)。对一个规则的检验,就是对相应的AST的一次遍历。代码分析的实现举例说明:下面是为一个简单的计算语句而设立的规则。计算:Times=n*a+1规则:Times(plus(Var(“a”),Var(“n”)),Int(“1”))它的操作过程可以抽象为如右图所示的抽象语法树:

代码分析的实现(续)还可以自定义一些代码规则来供静态分析工具使用。例如,代码复杂度和代码重复率是代码质量关心的主要问题之一。对于代码复杂度可能是含有过多的条件语句(if,while或for语句等)造成的,可通过圈复杂度的度量来检查。当圈复杂度为10或超过10时,一般就表明该方法过于复杂。所以,可设立如下的代码规则:<modulename=“CyclomaticComplexity”><propertyname=“max”value=“10”/></module>代码分析的实现(续)功能测试工具需要和用户界面打交道,就要能操作、控制用户界面上的各种对象,所以大部分功能测试工具是基于GUI对象识别技术来实现自动化测试的。安装功能测试工具AutoITv3工具下载URL:英文版:/site/autoit/downloads/中文版:AutoIT安装成功后,从“开始”-->“所有程序”-->“AutoITv3”菜单中,选择执行“AutoIT窗口信息工具(AutoITWindowInfo)”,就可以进行Windows对象识别的操作。GUI对象识别启动“AutoIT窗口信息工具”后,鼠标在Windows不同窗口或对象上移动,AutoIT窗口信息工具会显示鼠标所指向的对象信息。也可以移动查询工具来指定某个窗口、菜单、快捷键、按钮、输入框、文字信息等各种对象,从而获得如右图所示的信息。在操作中,会发现它可以识别工具栏,但不能识别工具栏的某个具体对象(如主页、打印机等图标),而对浏览器内的对象更是无能为力。用AutoIT识别GUI对象基于GUI对象识别和控制的自动化测试工具,一般在脚本语言中采用WindowsAPI(ApplicationProgrammingInterface,应用程序编程接口)函数调用的方法来实现。WindowsAPI涵盖了系统的管理、诊断、图形和多媒体、网络、安全性等各个方面,但在自动化测试工具中或对象识别中,主要使用WindowsUserInterface(用户界面)一类的API。这类函数封装了操作应用软件所需的接口函数,包括键盘和鼠标操作的捕获,以及窗口、按钮、选择项等的识别和操作。自动化测试工具可以基于这些API函数,来完成对象的识别和操作。如何实现Windows对象识别有些测试工具(如Selenium)直接访问Web浏览器,利用脚本语言操纵浏览器和Web页面,这时就需要对DOM(DocumentObjectModel,文档对象模型)对象进行识别,从而模拟用户控制浏览器中页面元素的操作。也只有获取DOM对象的属性,才可以验证页面实际的表现,即确定实际结果和期望结果是否一致。DOM定义了HTML的标准对象集合,是HTML文档的编程接口,与浏览器、平台、语言无关。DOM也就是定义了标准的访问和操纵HTML对象的方式,使得其他程序或软件可以访问页面的标准组件。DOM以层次结构组织节点、内容等相关信息,从而将一个Web页面转换为一个基于树或基于对象的多层次集合。DOM对象识别安装IEWebDeveloper工具下载URL:/dominspector使用IEWebDeveloper可以在IE浏览器内查看页面,获取完整的DOM信息。打开IE浏览器,点击“查看”-->“浏览器栏”-->“IEWebDeveloper”,启动后就可以看到当前页面的结构,并查看页面的各个元素,如下图所示。用IEWebDeveloper识别DOM对象安装Firebug(工具下载URL:)最好的DOM识别工具是Firebug,它可以JavaScript文件方式支持在IE、Opera和Safari等浏览器中运行,但推荐作为Firefox的一个插件使用。Firebug功能强大,集HTML查看和编辑、JavaScript控制台、CSS/script/DOM查看器、网络状况监视器、测试于一体,可从各个不同的角度剖析Web页面内部的细节层面。打开Firefox工具下的Firebug后,在浏览器载入任何页面时,Firebug都可以生成DOM树,点击HTML标签,鼠标只要停在某个对象上,浏览器页面上相应的对象就会被明显标识出来。点击某个对象属性的参数,Firebug还可以编辑HTML。如果点击DOM标签,可以更详细的了解页面的DOM结构及其元素。用Firebug识别DOM对象用Firebug识别DOM对象(续)代码分析是一种白盒测试的自动化方法,捕获和回放则是一种黑盒测试的自动化方法。捕获是将用户每一步操作都记录下来。这种记录的方式有两种:程序用户界面的像素坐标或程序显示对象(窗口、按钮、滚动条等)的位置,以及相对应的操作、状态变化或是属性变化。所有的记录转换为一种脚本语言所描述的过程,以模拟用户的操作。回放时,将脚本语言所描述的过程转换为屏幕上的操作,然后将被测系统的输出记录下来同预先给定的标准结果比较。这可以大大减轻黑盒测试的工作量,在迭代开发的过程中,能够很好地进行回归测试。捕获和回放关于自动化测试中的“录制-回放”技术目前的自动化负载测试解决方案几乎都是采用“录制-回放”的技术。所谓的“录制-回放”技术,就是先由手工完成一遍需要测试的流程,同时由计算机记录下这个流程期间客户端和服务器端之间的通信信息,这些信息通常是一些协议和数据,并形成特定的脚本程序(Script)。然后在系统的统一管理下同时生成多个虚拟用户,并运行该脚本,监控硬件和软件平台的性能,提供分析报告或相关资料。这样,通过几台机器就可以模拟出成百上千的用户对应用系统进行负载能力的测试。捕获和回放(续)脚本是一组测试工具执行的指令集合,也是计算机程序的一种形式。脚本可以通过录制测试的操作产生,然后再做修改,这样可以减少脚本编程的工作量;也可以直接用脚本语言编写脚本。自动化测试脚本和程序代码比较接近,包括指令和数据,还包括其他内容,如:同步,何时进行下一个输入;比较信息,是测试验证点所需要的,包括比较什么、如何比较及和谁比较;捕获何种屏幕数据及存储在何处;从何处读取测试数据;控制信息等。脚本技术测试脚本可以分为以下几类:线性脚本:是录制手工执行的测试用例得到的脚本。结构化脚本:类似于结构化程序设计,具有各种逻辑结构。共享脚本:是指某个脚本可被多个测试用例使用。数据驱动脚本:将测试输入存储在独立的数据文件中。关键字驱动脚本:是数据驱动脚本的逻辑扩展。线性脚本是最简单的脚本,如同流水账那样描述测试过程,一般由自动录制得来;而结构化脚本是对线性脚本的加工,类似于结构化设计的程序,是脚本优化的必然途径之一。而数据驱动脚本和关键字驱动脚本可以进一步提高脚本编写的效率,极大地降低脚本维护的工作量。目前大多数测试工具都支持数据驱动脚本和关键字驱动脚本。测试脚本的分类线性脚本是直接基于手工操作而录制的脚本,这种脚本包含用户所做的所有键盘和鼠标操作。如果仅使用线性脚本技术,所有录制的测试用例可以通过脚本完整的回放。优点:不需要深入的工作或计划;可以加快开始自动化;对实际执行操作可以审计跟踪;测试用户可以不必是编程人员;提供良好的(软件或工具)演示。缺点:过程烦琐,一切依赖于每次捕获的内容;测试输入和比较是“捆绑”在脚本中的;无共享或重用脚本;容易受软件变化的影响;修改代价大,维护成本高;容易受意外事件的影响,引起整个测试失败。适用情况:演示或培训;执行量较少、且环境变化小的测试;数据转换。线性脚本线性脚本示例线性脚本结构不清晰,有很多重复脚本,很难维护,所以线性脚本不能真正应用于实际项目的自动化测试中,必须转换为结构化的脚本,或者直接开发出结构化的脚本。结构化脚本类似于结构化的程序,含有控制脚本执行的指令。这些指令或为控制结构,或为调用结构。控制结构中包括“顺序”、“循环”和“分支”,和结构化程序设计中的概念相同。调用结构是在一个脚本中调用另外的脚本,当子脚本执行完成后再继续运行父脚本。优点:健壮性好,具有很好的可重用性、灵活性,脚本易于维护,可通过循环和调用减少工作量。缺点:脚本较复杂,而且测试用例(测试数据)“捆绑”在脚本中。结构化脚本结构化脚本示例共享脚本是指脚本可以被多个测试用例使用,一个脚本可以被其他的脚本所调用。使用共享脚本可以节省脚本的生成时间和减少重复工作量,当重复任务发生变化时,只需修改一个脚本或几个共享的脚本。共享脚本可以是在不同主机、不同系统之间的共享脚本,也可以是在同一主机、同一系统之间的共享脚本。优点:以较少的开销实现类似的测试;维护开销低于线性脚本;能删除明显的重复。缺点:需要跟踪更多的脚本,给配置管理带来一定的困难;对于每个测试,仍然需要特定的测试脚本,维护费用比较高;共享脚本通常是针对被测软件的某部分,存在部分脚本不能直接运行。共享脚本数据驱动脚本将测试脚本(执行步骤)和数据进行分离,将测试输入数据存储在独立的数据文件中,而不是直接存储在脚本中。在脚本中引入变量,执行时通过变量来读取数据文件中的数据,脚本本身描述测试的具体执行过程。使用数据驱动脚本,同一个脚本可以针对不同的输入数据来进行测试,提高了脚本的使用效率和可维护性。优点:可以快速增加类似的测试;测试者增加新测试不必掌握工具脚本语言的技术;对第二个及以后类似的测试无额外的维护开销。缺点:初始建立的开销较大;需要专业(编程)支持;必须易于管理。数据驱动脚本数据驱动脚本示例关键字驱动脚本实际上是比较复杂的数据驱动技术的逻辑扩展。它将测试数据文件变成测试用例的描述,用一系列关键字指定要执行的任务。关键字驱动脚本实际上封装了各种基本的操作,每个操作由相应的函数实现,而在开发脚本时,不需要关心这些基础函数,直接使用已定义好的关键字,脚本编写的效率会大大提高,脚本也更易于维护。而且,关键字驱动脚本构成简单,脚本开发按关键字来处理,可以看作是业务逻辑的文字描述,每一个测试人员都能开发脚本。关键字驱动脚本的数量不随测试用例的数量变化,而仅随软件规模而增加。这种脚本还可以实现跨平台的测试用例共享,只需更改支持脚本即可。关键字驱动脚本关键字驱动脚本示例没有验证点的自动化测试就不能被称为测试,验证某个测试用例的结果,实质上就是将实际结果(输出)与期望结果进行比较。自动化测试时,预期输出是事先定义的,要么插入脚本中或记录在数据库、数据文件中,然后在测试过程中运行脚本,将捕获的结果和预期的输出进行比较,从而确定测试用例是否通过。通过自动比较技术,验证实际获得的测试结果和事先定义的期望结果是否一致。如果不一致,将记录所执行的具体日志(log),报告错误。

自动比较技术自动比较可以是最简单的数字比较,也可能是比较复杂的图像比较。例如,自动比较有两类模式——验证(Verify)和断言(Assert)。它们所具有的功能(命令)是非常相近的,只是对验证结果的处理不同。当Assert失败时,则退出当前测试;而当Verify失败时,测试会继续运行。

Web功能测试工具Selenium中Verify验证失败的界面

Web功能测试工具Selenium中自动比较的命令自动比较还可以对比分析屏幕或屏幕区域图像、比较窗口或窗口上控件的数据或属性、比较网页、比较文件等。自动比较技术的实现图片或自绘窗口特效的验证是自动化测试中的难点。虽然有些自动化测试工具提供了验证图片的功能,但稳定性都不是很好。一般图片验证的原理是首先截取并保存正确的图片,然后将脚本运行时截取的图片与保存的图片进行比较。由于这种比较是在像素级上进行的。极微小的差异都会被认为是不同的,这可能导致同样的脚本在不同物理机器(显卡、OS等不同)上运行时,常常会因为显示上的微小差异而导致检查结果失败,但用户是可以接受的。有的测试工具可以设定阈值,允许存在微小的差异,高于阈值的被认为是“差异明显存在”,认定验证失败;低于或等于阈值的差异将被忽视,认定验证通过。这样,测试结果会比较稳定、可靠。如果阈值可以根据实际情况或用户的特定要求进行自动调整,则可以称为“智能比较”。自动比较技术的实现(续)从自动比较的方式和技术看,自动比较可分为以下四类:静态比较和动态比较——动态比较是在测试过程中进行比较;静态比较是通过另外一个单独的工具进行结果比较。简单比较和复杂比较——简单比较要求实际结果和期望结果完全匹配;复杂比较是一种智能比较,允许实际结果和期望结果有一定的差异。敏感性测试比较和健壮性测试比较——敏感性测试比较要求比较尽可能多的信息;健壮性测试比较只比较最少量、最需要的信息。比较过滤器——对实际输出结果和期望输出结果进行预先处理,执行过滤任务之后再进行比较。自动比较技术的分类Junit介绍2/7/202367开源的Java测试框架主要特征:测试代码与产品代码分开提供了编写测试类的框架通过与Ant结合,易于集成到程序的构建过程中,实施增量开发源代码公开,易于二次开发可扩展性强下载地址/JUnit2/7/2023681997年ErichGamma和KentBeck为Java语言创建了一个简单有效的单元测试框架ErichGamma《设计模式》作者之一KentBeck提出软件开发方法“极限编程”《重构:改善既有代码的设计》的作者Eclipse2/7/202369开源软件基于Java的可扩展开发平台仅提供框架,通过插件的方式构筑开发环境前身是IBM公司开发的VisualAgeforJava,2001年11月贡献给开源社区,现在由非营利软件供应商联盟Eclipse基金会管理下载地址:Eclipse的版本变迁2/7/2023702003年,Eclipse3.0选择OSGi服务平台规范为运行时架构2007年6月,稳定版3.3发布2008年6月发布代号为Ganymede的3.4版2009年7月发布代号为GALILEO的3.5版2010年6月发布代号为Helios的3.6版2011年6月发布代号为Indigo的3.7版2011年8月6日Eclipse基金会为支持JAVA7发布Eclipse3.8M12/7/2023南通大学计算机科学与技术学院71在Eclipse中使用JUnit2/7/202372建立一个被JUnit测试的类建立对应的JUnitTest类针对自动生成的代码进行修改执行测试用例建立一个被JUnit测试的类2/7/202373建立对应的JUnitTest类2/7/202374JUnit4新的特征针对自动生成的代码进行修改2/7/202375测试用例执行通过2/7/202376GreenBarKeepthebargreentokeepthecodeclean测试用例执行失败2/7/202377Assert方法(测试用例预期输出)2/7/202378assertArrayEquals判断两个数组是否相等assertEquals判断两个对象是否相等assertFalse和assertTrue判断布尔变量是否为False或TrueassertNotNull和assertNull判断一个对象是否为空assertNotSame判断两个引用是否指向同一个对象Fail让测试用例失败Exception测试2/7/202379对@Test传入expected参数值,即可测试异常暂时忽略这个测试用例测试用例集的构造2/7/202380使用方法创建一个空类作为测试用例集入口用@RunWith、@SuiteClasses注释修饰这个空类;将Suite.class作为参数传入@RunWith注释,以提示JUnit将此类指定为运行器;将需要测试的类组成数组作为@SuiteClasses的参数。2/7/202381参数化测试2/7/202382为参数化测试类用@RunWith注释指定特殊的运行器:Parameterized.class;在测试类中声明几个变量,分别用于存储期望值和测试用的数据,并创建一个使用着几个参数的构造函数;创建一个静态(static)测试数据供给(feed)方法,其返回类型为Collection,并用@Parameter注释以修饰;编写测试方法(用@Test注释)。

2/7/202383Ant2/7/202384基于Java的build工具类似于Unix中的make工具配置文件基于XML主要优点跨平台操作简单易于集成到各种开发环境内典型的项目层次结构2/7/202385src目录:存放文件。bin目录:存放编译后的文件。lib目录:存放第三方JAR包。dist目录:存放打包,发布以后的代码。2/7/202386Antbuild.xml实例2/7/202387运行结果2/7/202388<project>标签2/7/202389每个构建

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论