误处理测试是检查软件在面对错误时,是否进行了正确的处理。错误处理测试的目的是要发现软件是否做了用户不期望的事情、发现软件在发生异常的时候是否有能力进行处理。此时,测试人员需要以否定的态度来思考问题。另外,在错误处理测试中发现的部分问题可能不会被修复。错误处理测试主要考虑典型的异常情况:如用户输入非法数据(不输入数据、输入无效数字数据,如负数和字母数字串、输入任何被认为是非法的数据类型格式、尝试不常用的数据组合、确保使用零值、输入超过或者短于要求长度的数据),在系统不支持的平台上运行,网络连接异常,数据文件(或者数据库)被破坏,数据文件(数据库)中有混乱的数据,计算机断电后启动,在用户界面上违反操作步骤的操作等。2.内存泄露测试内存泄漏是一种典型的程序缺陷,导致应用程序不断消耗系统内存(或虚拟存储器),使程序运行出现响应变慢、某些功能无法实现、甚至整个系统瘫痪等问题。尤其对于嵌入式系统这种资源比较匮乏、应用非常广泛,而且往往又处于重要部位的程序,内存泄漏将可能导致无法预料的重大损失。在某些语言(如C/C++语言)编写的程序中,内存泄露是一个极其普遍的问题。内存泄露测试可采用静态测试和动态测试技术,通过测量内存使用情况,可以了解程序内存分配的真实情况,发现对内存的不正常使用,在问题出现前发现征兆,在系统崩溃前发现内存泄露错误;发现内存分配错误,并精确显示发生错误时的上下文情况,指出发生错误的原因。MI Compuware公司的BoundChecker,IBM Rational的Purify就是一种典型的内存泄露检查工具。3.用户界面测试图形用户界面测试和评估的重点是正确性、易用性和视觉效果,界面中的文字检查和拼写检查也是用户界面测试的重要环节。用户界面测试的过程中,有时要依赖于测试人员的主观判断,但用户界面测试也要遵循一些基本原则,如:易用性、规范性、合理性、美观与协调性、菜单位置、独特性、快捷方式的组合、排错性考虑等。表8-4给出了界面测试的一些基本考虑。4.性能测试性能测试包括并发性能测试、强度测试、破坏性测试等。并发性能测试是评估系统交易或业务在渐增式并发情况下处理瓶颈以及能够接收业务的性能过程;强度测试是在资源受限的情况下,找出因资源不足或资源竞争而导致的错误;破坏性测试重点关注超出系统正常负荷若干倍的情况下,错误出现状态和出现比率以及错误的恢复能力。性能测试可以通过黑盒测试或者白盒测试方法来进行,一般要借助工具。如IBM Rational Performance Tester、Compuware QALoad以及HP Loadrunner等。在进行性能测试时,要求:测试程序在获得定量结果时程序计算的精确性;测试程序在有速度要求时完成功能的时间;测试程序完
成功能所能处理的数据量;测试程序各部分的协调性,如高速、低速操作的协调;测试软/硬件中哪些因素限制了程序的性能;测试程序的负载潜力;测试程序运行占用空间。性能测试应用场合有:软件中某个模块涉及到复杂的计算,特别是一些基于人工智能的分析;涉及到大量数据的读写、通信;涉及到数据检索,而被检索的数据具有很大的数据量;具有多个并发用户;软件在运行时,可用资源(特别是CPU和内存)可能在某些情况下很紧张。例如一些嵌入式系统软件。5.压力测试压力测试也叫负荷测试,即获取系统能正常运行的极限状态,如表8-5所示。压力测试用于检查软件在面对大数据量时是否可以正常运行。大数据量,往往是发生概率比较小的情况。压力测试所涉及的方面主要包括:数据库大小、磁盘空间、可用内存空间、数据通信量。表8-4界面测试指标指标检查项测试人员评价合适性和正确性用户界面是否与软件的功能相融洽是否所有界面元素的文字和状态都正确无误容易理解对于常用的功能,用户是否不必阅读手册就能使用是否所有界面元素提供(例如图标)都不会让人误解是否所有界面元素都提供了充分而必要的提示界面结构是否能够清晰地反映工作流程用户是否容易知道自己在界面中的位置,不会迷失方向是否有联机帮助及时反馈信息是否提供进度条、动画等反应正在进行的比较耗时间的过程是否为重要的操作返回必要的结果信息出错处理是否对重要的输入数据进行校验执行有风险的操作时,是否有\确认\、\放弃\等提示是否根据用户的权限自动屏蔽某些功能是否提供Undo功能用以撤销不期望的操作
(续表)指标检查项测试人员评价风格一致同类的界面元素是否有相同的视感和相同的操作方式字体是否一致是否符合广大用户使用同类软件的习惯适应各种水平的用户所有界面元素都具备充分必要的键盘操作和鼠标操作初学者和专家是否都有合适的方式操作这个界面色盲或者色弱的用户是否能正常使用该界面国际化是否使用国际通行的图标和语言度量单位、日期格式、人的名字等是否符合国际惯例合理布局和谐色彩界面的布局是否符合软件的功能逻辑界面元素是否在水平或者垂直方向对齐界面元素的尺寸是否合理?行、列的间距是否保持一致是否恰当地利用窗体和空间的空白,以及分割线条窗口切换、移动、改变大小时,是否界面正常界面的色调是否让人感到和谐、满意重要的对象是否用醒目的色彩表示色彩使用是否符合行业的习惯个性化是否具有与众不同的、让用户记忆深刻的界面设计是否在具备必要的\一致性\的前提下突出\个性化\设计表8-5压力测试模版极限名称A如\最大并发用户数量\前提条件输入/动作
输出/响应是否能正常运行如10个用户并发操作如100个用户并发操作6.回归测试回归测试是指对某些已经被测试过的内容进行重新测试,如软件增加新功能后影响软件的结构,软件修改考虑不周而引入问题。回归测试策略:测试人员可以按照实际情况选择回归策略,如每两周需要进行一次完整的回归测试;当修复的缺陷数量累计到50个时,进行一次完整的回归测试;在产品递交用户前5个工作日,进行完整的回归测试。回归测试通常可以使用自动化测试工具。8.8.7系统测试工具举例目前用于系统测试的主流测试工具主要有以下4类:1.负载压力测试工具这类测试工具的主要目的是度量应用系统的可扩展性和性能,是一种预测系统行为和性能的自动化测试工具。在实施并发负载过程中,通过实时性能监测来确认和查找问题,并针对所发现问题对系统性能进行优化,确保应用的成功部署。负载压力测试工具能够对整个企业架构进行测试,通过这些测试,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。1)LoadRunner特点a,支持的协议多且个别协议支持的版本比较高;特点b,负载压力测试方案设置灵活;特点c,丰富的资源监控;特点d,报告可以导出到Word、Excel以及HTML格式。2)QALoad测试接口多,可预测系统性能,通过重复测试寻找瓶颈问题,从控制中心管理全局负载测试,可验证应用的扩展性,快速创建仿真的负载测试,性能价格比较高。此外,QALoad不单单测试Web应用,还可以测试一些后台的东西,比如SQL Server等。只要它支持的协议,都可以测试。3)Benchmark Factory首先它可以测试服务器群集的性能;其次可以实施基准测试;最后可以生成高级脚本。4)E-Test Suite:由Empirix公司开发的测试软件,能够与被测试应用软件无缝结合的Web应用测试工具。工具包含e-Tester、e-Load和e-Monitor,这三种工具分别对应功能测试、压力测试以及应用监控,每一部分功能相互独立,测试过程又可彼此协同。5)JMeter是一个专门为服务器负载测试而设计、100%的纯Java桌面运行程序。早期它是为Web/HTTP测试而设计的,但是它已经扩展,以支持各种各样的测试模块。它和HTTP和SQL(使用JDBC)的模块一起运行。它可以用来测试服务器运行情况,可以用来模拟服务器或网络系统在重负载下的运行情况。它也提供了一个可替换的界面用来定制数据显示,测试同步及测试的创建和执行。6)WAS是Microsoft提供的免费的Web负载压力测试工具,应用广泛。WAS可以通过一台或者多台客户机模拟大量用户的活动。WAS支持身份验证、加密和Cookies,也能够模拟各种浏览器和Modem速度,它的功能和性能可以与数万美元的产品媲美。7)ACT或称MSACT它是微软的Visual Studio和Visual
Studio.net自带的一套进行程序压力测试的工具。ACT不但可以记录程序运行的详细数据参数,用图表显示程序运行情况,而且安装和使用都比较简单,结果阅读也很方便,是一套较理想的测试工具。8)OpenSTA它的全称是Open System Testing Architecture。OpenST的特点是可以模拟很多用户来访问需要测试的网站,它是一个功能强大、自定义设置功能完备的软件。但是,这些设置大部分需要通过script来完成,因此在真正使用这个软件之前,必须学习好它的script编写。如果需要完成很复杂的功能,script的要求还比较高。当然这也是它的优点,一些程序员不会在意编写script的。9)PureLoad一个完全基于Java的测试工具,它的script代码完全使用XML。所以,编写script很简单。它的测试包含文字和图形并可以输出为HTML文件。由于是基于Java的软件,因此PureLoad可以通过Java Beans API来增强软件功能。10)网站压力(负载)测试工具Webserver Stress Tool可以模拟任何人数在同一时间内进站或是迅速进站时Server的反应表现。只要输入网站的URL网址以及模拟的上站人数,就可以看出Server在这种压力测试下的评比,用条状图明白地表示出Server反应时间、传递速率等相关数据。除了Http的网页外,还支持CGI或ASP等语言撰写的程序。支持Proxy设定、密码输入、Cookies与ASP的Session-IDs等功能。2.功能测试工具通过自动录制、检测和回放用户的应用操作,将被测系统的输出记录同预先给定的标准结果比较,功能测试工具能够有效地帮助测试人员对复杂的企业级应用的不同发布版本的功能进行测试,提高测试人员的工作效率和质量。其主要目的是检测应用程序是否能够达到预期的功能并正常运行。1)WinRunner WinRunner是企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行,自动执行重复任务并优化测试工作,从而缩短测试时间。通过自动录制、检测和回放用户的应用操作,从而提高测试效率。2)QARun QARun是一款自动回归测试工具,与Winrunner相比较学习成本要低很多。不过要安装QARun必须安装.net环境,另外它还提供与TestTrack Pro的集成。3)IBM Rational Robot IBM Rational Robot是人们经常使用的测试工具,属于IBM Rational TestSuite中的一员,对于Visual studio 6编写的程序支持得非常好,同时还支持Java Applet、HTML、Oracle Forms、People Tools应用程序。要支持Delphi程序的测试还必须下载插件。IBM Rational Robot的语法使用Basic语法,它的语言使用SQABasic。4)Functional Tester Functional Tester是IBM Rational Robot的Java实现版本,在Rational被IBM收购后发布的。在Java的浪潮下,Robot被移植
到了Eclipse平台,并完全支持Java和.net。可以使用VB.net和Java进行脚本的编写。由于支持Java,使得用测试脚本进行测试也成为了可能。更多的信息请到IBM developerworks上查看,另外还提供试用版本下载。5)QuickTest Professional QuickTest Professional是一个B/S系统的自动化功能测试的利器,软件程序测试工具。Mercury的自动化功能测试软件(现已被HP收购),可以覆盖绝大多数的软件开发技术,简单高效,并具备测试用例可重用的特点。是一款先进的自动化测试解决方案,用于创建功能测试和回归测试。它自动捕获、验证和重放用户的交互行为,为每一个重要软件应用和环境提供功能和回归测试自动化的行业最佳解决方案。6)SilkTest SilkTest是面向Web应用、Java应用和传统的C/S应用,进行自动化的功能测试和回归测试的工具。它提供了用于测试的创建和定制的工作流设置、测试计划和管理、直接的数据库访问及校验等功能,使用户能够高效率地进行软件自动化测试。为提高测试效率,SilkTest提供多种手段来提高测试的自动化程度,包括:从测试脚本的生成、测试数据的组织、测试过程的自动化、测试结果的分析等方面。在测试脚本的生成过程中,SilkTest通过动态录制技术录制用户的操作过程,快速生成测试脚本。3.\白盒\测试工具\白盒\测试工具一般是针对代码进行测试,测试中发现的缺陷可以定位到代码级。根据测试工具原理的不同,又可以分为静态测试工具和动态测试工具。静态测试工具直接对代码进行分析,不需要运行代码,也不需要对代码编译链接和生成可执行文件。静态测试工具一般是对代码进行语法扫描,找出不符合编码规范的地方,根据某种质量模型评价代码的质量,生成系统的调用关系图等。动态测试工具一般采用\插桩\的方式,在代码生成的可执行文件中插入一些监测代码,用来统计程序运行时的数据。它与静态测试工具最大的不同是,动态测试工具要求被测系统实际运行。\白盒\测试工具有Logiscope,PRQA,Xunit系统如Junit、Cunit,DevPartner,IBM Rational Purify,Jprob等,这些工具的使用在网上有很多资料。4.测试管理工具一般而言,测试管理工具对测试需求、测试计划、测试用例、测试实施进行管理,并且测试管理工具还包括对缺陷的跟踪管理。测试管理工具能让测试人员、开发人员或其他的IT人员通过一个中央数据仓库,在不同的地方交互信息。1)TestDirector MI的测试管理工具,可以与winrunner、Loadrunner、QuickTestPro进行集成。除了可以跟踪Bug外,还可以编写测试用例、管理测试进度等,是测试管理的首选软件。2)TestManager IBM Rational Testsuite中的一员,可以用来编写测试用例、生成Datapool、生成报表、管理缺陷以及
系统测试续一



