软件测试及工具培训白盒及黑盒测试软件测试的重要性软件的开发方法有一定的缺陷软件是一个特殊的产品,是人脑力劳动的产物。但人不可避免地会犯一些错误,所以做出的产品也就会存在一些缺陷,这就需要我们进行软件测试来发现软件内部存在的这些缺陷或错误是保证软件产品质量的一个重要手段其专业化、系统化、规范化、严密的测试能最大限度地发现软件中的错误,从而提高软件产品的可靠性不是万能的完全的软件测试是不现实的,如果做彻底的测试需要投入大量的人力和物力。所以需要在有限的投入中获得最大的产出不能发现所有的错误测试不能取代其他的软件质量保证手段,如软件开发中的过程管理以及QA等黑盒测试功能测试,数据驱动测试是在已知软件产品具有何种功能的前提下,用来检验每个功能是否能够正常使用的一个测试方法。测试的方法和原理把程序看成是一个不能打开的黑盒子,在不考虑程序内部结构的情况下,测试人员用操作接口的方式进行测试,检查程序能否按照需求指定的功能接收输入数据产生正确的结果。白盒测试结构测试,逻辑驱动测试前提:知道软件产品内部工作过程目标:通过测试来检测软件产品内部动作是否按照规格说明书的规定正常进行重点:按照软件内部的结构测试程序,软件中的每条通路是否都能按预定要求正确工作白盒与黑盒测试比较f(x)XYY=f(X)白盒与黑盒测试比较PINOUT白盒测试:黑盒测试:调试与白盒测试从广义上讲调试是白盒测试的一个子集相同点目的相同检查基础相同方法相同(静态、动态、代码跟踪)不同点侧重点(排除错误------发现错误)范围不同(语法、功能--------内部结构、内存泄露等)执行人员不同(开发人员--------测试人员)白盒测试的内容代码检查(语法、逻辑、书写)静态结构分析(内部关系如系统结构、函数调用关系等)功能确认与接口分析逻辑覆盖率分析(内部的执行路径、提高软件的可靠性)性能与效率分析内存分析(内存泄露、内存越界等)白盒测试的方法静态测试不执行程序来寻找代码中存在的错误或评估代码的过程。由人工来进行,发挥了人的逻辑思维的优势或测试经验。能够批量性地发现问题,并直接定位到缺陷或错误的具体位置。用静态测试来进行代码检查、静态结构分析。动态测试必须生成测试数据来运行被测试程序,取得程序运行的真实情况、动态情况,进而进行分析测试质量依赖于测试数据生成测试数据、分析测试结果的工作量大,使开展测试工作费时、费力、费人代码跟踪静态测试------代码检查目的确保代码编程标准有效的被执行提高代码质量,减轻动态测试负担提高代码可重复使用,降低项目风险与经费增加程序的可理解性,降低维护成本方式桌面检查(由开发人员来检查代码的正确性)人工走查(由测试人员根据程序相关文档进行检查)代码审查(编译系统)静态测试------代码检查变量命名和类型审查变量初始值检查变量作用范围检查程序逻辑审查程序语法检查程序结构检查静态测试------代码检查排除违背程序编写标准的问题排除违背程序编程风格的问题确保代码和设计的一致性确保代码的逻辑表达的正确性确保代码结构的合理性找出程序中不可移植部分发现程序中不安全、不明确和模糊的部分实践表明,人工走查平均能查出被测程序的30%~70%的逻辑设计和编码缺陷文件结构版权和版本声明、预处理块、函数和类结构声明、头文件的引用、程序的实现体书写格式空行、空格、缩进、注释变量命名变量和参数、常量、静态变量、全局变量、类名和函数名、类的数据成员、其他与零比较布尔变量、整型变量、浮点变量、指针变量循环循环体内循环变量、case语句、多重循环、循环体内逻辑判断内存分配malloc或new申请内存、free或delete释放内存、数组和动态内存、动态内存的申请与释放、数组或指针的下标静态测试代码检查-编码规则示例动态测试------测试内容功能测试与接口测试验证程序和详细设计说明的一致性;检验每个软件单元模块能否正确的实现其功能,满足其性能和接口要求逻辑覆盖率分析依据被测程序的逻辑结构设计测试用例,驱动被测程序运行完成测试。语句覆盖StatementCoverage判定覆盖DecisionCoverage条件覆盖ConditionCoverage分支条件组合覆盖Condition/DecisionCoverage多条件覆盖MultipleConditionCoverage修正条件/判定覆盖MC/DC路径覆盖PathCoverage动态测试------测试内容性能与效率分析单个函数的性能分析函数的调用频率分析代码执行频率分析响应时间并发性内存分析了解程序内存分配的真实情况监测内存使用情况,发现对内存的不正常使用在系统崩溃前发现内存泄露错误发现内存分配错误精确显示发生错误时的上下文情况指出发生错误的原由在问题出现前发现征兆动态测试------内存错误内存分配未成功,却使用了它内存分配虽然成功,但是尚未初始化就引用它内存分配成功并且已经初始化,但操作越过了内存的边界忘记了释放内存,造成内存泄露释放了内存却继续使用它自动测试和分析工具随着软件测试的地位逐步提高,测试的重要性逐步显现,测试工具的应用已经成为了普遍的趋势。目前用于测试的工具已经比较多了,这些测试工具一般可分为白盒测试工具黑盒测试工具性能测试工具用于测试管理(测试流程管理、缺陷跟踪管理、测试用例管理)的工具。应用测试工具的目的提高测试质量;减少测试过程中的重复劳动实现测试自动化在测试中应用测试工具,可以发现正常测试中很难发现的缺陷测试工具的分类白盒测试工具白盒测试工具一般是针对代码进行测试,测试中发现的缺陷可以定位到代码级,根据测试工具原理的不同,又可以分为静态测试工具和动态测试工具。代表工具有Rational的TestRealtime.黑盒测试工具黑盒测试工具的一般原理是利用脚本的录制(Record)/回放(Playback),模拟用户的操作,然后将被测系统的输出记录下来同预先给定的标准结果比较。黑盒测试工具可以大大减轻黑盒测试的工作量,在迭代开发的过程中,能够很好地进行回归测试。黑盒测试工具的代表有MI公司的winrunner、Rational的robot测试工具的分类性能测试工具是通过模拟大数据量或多用户并发情况,对被测系统进行性能指标的采集。代表工具有MI公司的LoadRunner测试管理工具测试管理工具用于对测试进行管理。一般而言,测试管理工具对测试计划、测试用例、测试实施进行管理,并且,测试管理工具还包括对缺陷的跟踪管理。代表工具有Rational公司的TestManager,MI公司的TestDirector等RationalTestrealtime测试工具RationalTestRealTime概述代码级的白盒测试工具帮助开发人员创建测试脚本、执行测试用例和生成测试报告,并提供对被测代码进行静态分析和运行时分析功能。利用该工具,开发人员可以大大提高测试的效率。特点代码静态分析,功能测试和运行时分析相集成。代码编辑、测试和调试相集成。测试执行后自动生成测试报告和各种运行时(runtime)报告。测试报告展示通过或失败的测试用例,而运行时分析报告包括代码覆盖分析报告,内存分析报告、性能分析报告和执行追踪报告。运行RTRT的服务器安装于10.110.0.154(计费测试机)上.客户端PC机上要安装x-windows客户端在服务器上指定DISPLAY环境变量exportDISPLAY=IP:0在服务器端运行/real/start_testrt.sh后,在指定IP的PC机客户端就会启动RTRT的主界面.如下图.创建测试项目1.在RTRT的主菜单中点击”NEWPROJECT”2.输入新的测试项目名称3.选择这个测试项目的存储路径4.选择编译器类型:IBMAIXC5.点击”finish”,测试项目建立完成.具体操作见演示:1.RTRT环境设置和创建一个测试项目.avi创建并设置一个测试应用设置编译参数1.首先要设置这个测试项目编译的参数2.在设置完成这个编译参数后,在这个测试项目下的所有测试应用都可以自动应用这些设置的参数,不必每个测试应用都重新指定.3.其中设置参数注意一点是在AIX5L正式编译环境中,需要指定以64位编译模式(-q64).但在RTRT环境中,不能以64位编译模式进行编译,否则在读目录中将不能正常将文件系统的文件读到程序变量中,造成非程序因素的异常.创建并设置一个测试应用增加测试应用1.在该测试项目上点右键,在出现的快捷菜单中选择addchild-Application选项2.输入新的测试应用名称3.选中新的测试应用并点右键,在出现的快捷菜单中选择addchild-Files选项4.在目录中选择需要测试的源程序文件.创建并设置一个测试应用设置应用的运行参数1.选中该测试项目,选择setings…2.在Build项目中的Execution选项中的CommandLineArguments栏目中输入该测试应用程序运行时需要的参数列表.(该列表与测试环境运行时一致).3.注意在测试源程序中要进行如下的改造:程序不要常驻内存运行,要在没有文件处理时退出创建并设置一个测试应用编译应用程序并进行测试1.在该测试项目上点右键,在出现的快捷菜单中选择build选项2.RTRT会按照前几步设置的编译参数进行编译3.在编译完成后,程序会自动运行并产生结果.4.在运行过程中,RTRT会产生程序运行时过程调用的序列图.RTRT的各种分析报告运行时内存报告(memoryprofile)分析程序运行时内存使用情况和是否存在内存泄露等的问题内存使用大小的峰值文件描述符的使用和分配情况RTRT的各种分析报告程序运行性能报告(performanceprofile)最耗时的三个过程时间分布每个过程的执行调用次数,执行总时间等运行效率信息通过这个报告我们可以对调用次数多,执行时间长的过程进行专门的优化,增加应用处理的效率,减少执行时间RTRT的各种分析报告程序代码覆盖情况报告(codecoverage)每次测试中代码执行的覆盖情况通过这个报告可以针对程序中没有执行到的情况,增加测试用例,保证对每个业务逻辑的代码达到100%的覆盖;避免了因某种业务逻辑没有覆盖到,导致程序上线后产生的错误或问题.WinRunner测试工具WinRunner概述黑盒测试工具通过自动捕获、检测和重放用户的交互操作,WinRunner可自动执行功能测试。可以辨认错误,确保应用程序顺利布署,并且能够维持其长时间的可靠运行减少测试人员重复性劳动,提高测试效率和准确性回归测试:可以对测试数据进行管理,每次的测试工作能建立在过去测试数据的基础上,而不必每次测试都从头开始准备测试数据,提高测试效率和准确率.测试过程通过录制测试动作创建测试插入检查点文本的、GUI、位图和数据库数据驱动(DataDriver)测试测试结果报告(TestResult)