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