软件自动化测试环境

软件自动化测试环境
作为保证软件质量和可靠性的关键技术手段,软件测试正日益受到广泛的重视。但如何进行测试,如何提高测试的质量和效率,从而确保软件产品的质量和可靠性,仍是令人深感困扰的问题。
在这一部分实验中,我们简要介绍软件测试的基本过程,以及一些常用的技术手段、测试策略和准则等,并介绍一些富有特和具有代表性的软件测试支持工具,以期读者能在认识软件测试重要性的同时,进一步了解如何正确选择和有效地运用各种测试方法、技术和工具,提高软件工程的应用水平和提高软件产品的质量与可靠性。
1. 测试方法概述
软件测试方法可以分为:
1) 白盒测试:通过详细设计文档、代码构造测试用例进行测试。
2) 黑盒测试:通过需求分析文档和软件外部特性构造测试用例进行测试。
3) 静态测试:通过代码审查、正规检视的方式来测试。
4) 动态测试:通过执行程序 (系统运转) 的方式来验证、测试功能和特性。
5) 自动化测试:借助于测试工具、测试规范,局部或全部地代替人工进行测试及提高测试效率。测试工具是软件开发工具的重要组成部分,在产品开发中及过程管理中起着广泛作用。
2. 基于GUI的自动化测试
基于图形用户界面 (GUI) 的自动化测试工具在软件测试自动化领域中发挥着巨大的作用。它的基本原理是:在测试者运行应用程序的同时,把他的所有动作,包括键盘操作、鼠标点击等捕获下来,生成一个脚本文件,这个脚本以后可以被“回放(playback) ,也就是按照上一次的所有动作重复执行一遍,实现自动运行和测试。在实际测试过程中,通常脚本按同一动作连续执行的意义并不大,而是要根据测试需求进行一些必要的修改,如选择不同的测试数据、脚本中插入检查点 (check point) 进行跟踪调试等。所以,为使自动测试能够被高效执行,还要依赖于前期所做的充分、周密的准备和定制工作。
罗丹明b基于GUI的自动化测试在实际应用中会存在很多问题,其中最直接的一个问题是:测试主要针对程序界面进行,一旦界面有任何改动,就需要手工修改已经录制好的测试脚本,或者重新进行新的录制。这些改动有可能引起大量测试工作的返工,造成测试脚本的日常维护工作量急剧增大。
为解决这个问题,可以在被测应用程序和录制生成的测试脚本之间增加一个抽象层,它将程序界面上的所有元素映射成相对应的一个逻辑对象,测试就针对这些逻辑对象进行,而不依赖于界面元素的变化。另外,可以把一些公共函数进行封装,做成可重用的函数库; 还可以把测试执行过程中所需的测试数据做成文件形式,测试脚本在运行时能够随时从此文件读取预先定制好的数据,使脚本和数据可以独立地进行维护。
3. 自动化测试工具的特征
自动化测试工具的关键特征包括:
(1) 支持脚本化语言 (scripting language)
脚本语言具有与常用编程语言类似的语法结构,可以对已录制好的脚本进行编辑修改。一
般应该具备以下功能:
1) 支持多种常用的变量和数据类型。
2) 支持数组、列表、结构,以及其他混合数据类型。
3) 支持各种条件逻辑 (IF、CASE等) 。
4) 支持循环 (FOR、WHILE等) 。
5) 支持函数的创建和调用。
自动友情链接    当然,脚本语言的功能越强大,就越能够为测试开发人员提供更灵活的使用空间,而且有可能写出比被测软件还要复杂得多的测试系统。所以,首先必须确信脚本语言的功能是否可以满足测试的需求。
如果能够通过命令行方式运行测试脚本,则可以为测试的执行带来更大的灵活性。
(2) 对程序界面中对象的识别能力
测试工具必须能够区分并标识程序界面中的所有对象,使录制的测试脚本具有较好的可读性、灵活性和更大的修改空间。如果只支持通过位置坐标来区分对象,其灵活性就要差多了。
对于一些用比较通用的开发工具编写的程序,例如PB、Delphi、MFC等,大多数测试工具都能区分和标识出程序界面里的所有元素。因此,在测试工具选择方面,对开发语言的支持也是很重要的一项。当然程序难免会存在一些比较难于标识的对象,如位图对象 (bitmap) 等,而这些对象在程序中可能还要完成一些功能或者执行相应的操作,那么在软件设计阶段就应该仔细考虑,是一定要这样来实现软件功能,还是为保证软件的可测试性而采取一些折中的处理方法。
极速互联(3) 支持函数的可重用
如果支持函数调用,就可以建立一套比较通用的函数库,一旦程序做了修改,只需把原脚本中的相应函数进行更改,而不用把所有可能的脚本都改动,可以节省很大工作量。
为此,首先要确保脚本能够比较容易地实现对函数的调用;还要支持脚本与被调函数之间
的参数传递。比如:对于用户登录函数,每次调用时可能都需要使用不同的用户名和口令,此时就必须通过参数的传递将相关信息送到函数内部执行。
(4) 支持外部函数库
除了针对被测系统建立库函数外,一些外部函数同样能够为测试提供强大的功能,如Windows程序中对DLL文件的访问,C/S结构程序中对数据库编程接口的调用等。例如,对完成向数据库插入一条记录的操作,程序可以提示已插入成功,但数据是否正确写入数据库中,通常需要手工去数据库里进行检查,以确认功能的正确实现;如果能够在测试脚本中插入检查点,通过调用数据库提供的编程接口检查刚才的操作是否执行正常,这样就无需人工检查,测试程序可以自动完成一些校验的功能。
(5) 抽象层
抽象层用于将程序界面中存在的所有对象实体逐一映射成逻辑对象,帮助减少测试维护工作量。有些工具称这一层叫Test Map、GUI Map或Test Frame等。
(6) 支持分布式测试
一个软件测试项目,通常需要多名测试人员协同工作。而在自动测试中,当两项测试任务要同时打开一个文件时,会出现资源竞争问题,因此,如果测试工具不支持分布式测试 (distributed test) ,将很难保障这种协同测试工作的开展。分布式测试最大的好处是可以事先定制任务执行的时间表,例如在指定时间、指定设备上执行指定测试任务。
(7) 支持数据驱动测试
即支持对操作系统文件的读写操作。在数据驱动测试 (data-driven test) 中,测试脚本通过从事先准备好的数据文件中读取或写入数据,来保证测试流程的正常执行,这样,只需编制少量的脚本,准备大量的测试数据,测试工具可以自动重复完成大量的测试工作。
(8) 错误处理
测试工具应有一套较好的错误处理系统,以帮助当测试中出现问题时,跳过该错误或对系统进行复位,然后继续执行后面的任务。
(9) 调试器
调试器 (debugger) 可以帮助更有效地对测试脚本的执行进行跟踪核对,迅速定位问题。通常调试器与测试脚本的开发环境集成在一起,支持脚本单步运行、设置断点、核对变量返回结果等。
(10) 源代码管理
类似于版本管理,源代码的管理对于任何一个软件开发系统来说都是很重要的。源代码可以帮助我们进行测试脚本库的倒入、倒出,回退到以前版本、比较不同版本间的差别,以及同时对几个项目进行跟踪等,这些在团队开发中尤其必要。可以对测试数据文件、测试脚本、对象抽象层进行统一管理。
4. 自动化测试工具的分类
按测试功能分,测试工具包括:
1) 单元测试。有针对不同语言的单元测试工具,比如JUnit。
2) 功能测试。主要有Mercury Interactive (MI) 的WinRunner、Compuware的QARun、Rational的SQA Robot等。
3) 负载 (压力) 测试。例如MI的Astra LoadTest和LoadRunner、Compuware的QA Load、Rational的SQA Load和Visual Quantify等。
4) Web测试工具。例如MI的Astra系列、RSW的E-Test Suite以及WorkBench、Web Application Stress Tool (WAS) 等。
5) 数据库测试工具。如TestBytes。
6) 回归测试工具。如Rational TeamTest、MI WinRunner。
7) 性能测试工具。如Rational Performance。
8) 页面链接测试工具。如Link Sleuth。
狮子分肉记9) 测试流程管理工具。如Test Plan Control。
10) 测试管理工具。例如MI的TestDirector、Rational的Test Manager、Compuware的QADirector和Silicon Valley Networks的TestExpert等。
11) 缺陷跟踪工具。如TrackRecord。
12) 嵌入式测试工具。例如ATTOLTestware的ATTOLTestware、Applied,Microsystems的CodeTest、TeleLogic的LogiScope等。
13) 其他测试工具包。
以测试方法分,测试工具可以分为白盒测试和黑盒测试。
1) 白盒测试工具。主要有:
 内存资源泄漏检查:例如Numega BounceChecker、Rational Purify等。
     代码覆盖率检查:例如Numega TrueCoverage、Rational PureCoverage、TeleLogic LogiScope、Macabe等。
 代码性能检查:如Numega Truetime、Rational Quantify。
 代码静态度量分析质量检查工具:如LogiScope、Macabe。
2) 黑盒测试工具。主要有WinRunner、QACenter、SQATeamTest、Rational Visual Test等。
湖南省校讯通
5. α、β测试
事实上,软件开发人员不可能完全预见用户实际使用程序的情况。例如,用户可能错误理解命令,或提供一些奇怪的数据组合,亦可能对设计者自认明了的输出信息迷惑不解,等等。因此,软件是否真正满足最终用户的要求,应由用户进行一系列验收测试。验收测试既可以是非正式的测试,也可以有计划、有系统的测试。有时,验收测试长达数周甚至数月,不断暴露错误,导致开发延期。
一个软件产品,可能拥有众多用户,不可能由每个用户验收,此时多采用称为α、β测试的过程,以期发现那些似乎只有最终用户才能发现的问题。因此,软件也通常有α测试版、β测试版及正式版三个版本。
α测试指内部测试版本。软件开发公司组织内部人员模拟各类用户行对即将面市软件产品 (α版本) 图书管理系统论文进行测试,试图发现错误并修正。α测试的关键在于尽可能逼真地模拟实际运行环境和用户对软件产品的操作并尽最大努力涵盖所有可能的用户操作方式。经过α测试调整的软件产品称为β版本。

本文发布于:2024-09-23 13:23:33,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/124370.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:测试   脚本   进行   测试工具   支持
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议