1、目录 第章软件测试概述 .1 第章软件测试方法与过程 .4 第章黑盒测试 .7 第章白盒测试方法 .13 第章软件测试管理及自动化测试基础 .18 第章 WINRUNNER 测试工具 .19 第章 LOADRUNNER 测 试工具 .21 第章 JUNIT.23 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 第 1 章软件测试概述 1. 简述软件测试的意义。 解:随着计算机技术的迅速发展和广泛深入的应用,软件质量问题已成为开发和使用软件人 员关注的焦点。而由于软件本身的特性,软件中的错误是不开避免的。不断改进的开发技术 和工具只能减少错误的发生,但是却不可能完全避免错误。
2、因此为了保证软件质量,必须对 软件进行测试。软件测试是软件开发中必不可少的环节,是最有效的排除和防治软件缺陷 的 手段,是保证软件质量、提高软件可靠性的最重要手段。 2. 什么是软件缺陷?它的表现形式有哪些? 解:从产品内部看,软件缺陷是软件产品开发或维护过程中所存在的错误、毛病等各种问题; 从外部看,软件缺陷是系统所需实现的某种功能的失效或违背。 软) 2;(能功的经标明中已未达到产品说明书软件) 1(:以下几种有表现形式主要的它 当但应虽未指出中未达到产品说明书软件) 3;(的错误会出现不指明中产品说明书了出现件 难为软件认软件测试人员) 5 范围;(的指出中产品说明书了超出能功软件) 4
3、 目 标;(的达到 以理解、不易使用,或者最终用户认为该软件使用效果不良。 3. 简单分析软件缺陷产生的原因,其中那个阶段引入的缺陷最多,修复成本又最低? 解:软件缺陷产生的主要原因有:需求规格说明错误;设计错误;程序代码有误;其他。其 中在需求分析阶段引入的缺陷最多,修复的成本又最低。 4. 当用户登录某网站购物完毕并退出后,忽然想查查购物时付账的总金额,于是按了浏览 器左上角的 “退回”按钮,就又回到了退出前的网页,你认为该购物软件有缺陷吗?如果 有,属于哪一 类? 解:有缺陷。其所属类别与软件产品说明书的要求有关。 5. 什么是软件测试?简述其目的与原则。 解:软件测试是为了尽快尽早地发
4、现在软件产品中所存在的各种软件缺陷而展开的贯穿整个 软件开发生命周期,对软件产品(包括阶段性产品)进行验证和确认的活动过程。 测试目的:( 1)证明:获取系统在可接受风险范围内可用的信心;尝试在非正常情况和 条件下的功能和特性;保证一个工作产品是完整的并且可用或可被集成。( 2)检测:发现 缺陷、错误和系统不足;定义系统的能力和局限性;提供组件、工作产 品和系统的质量信息。 ( 3)预防:澄清系统的规格和性能;提供预防或减少可能制造错误的信息;在过程中尽早 检测错误;确认问题和风险,并且提前确认解决这些问题和风险的途径。 测试过程中应注意和遵循的原则:( 1)测试不是为了证明程序的正确性,而是
5、为了证明 程序不能工作。( 2)测试应当有重点。( 3)事先定义好产品的质量标准。( 4)软件项目一启 动,软件测试也就开始,而不是等到程序写完才开始进行测试。( 5)穷举测试是不可能的。 ( 6)第三方进行测试会更客观,更有效。( 7)软件测试计划是做好软件测试 工作的前提。 1 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 ( 8)测试用例是设计出来的,不是写出来的。( 9)对发现错误较多的程序段,应进行更深 入的测试。( 10)重视文档,妥善保存一切测试过程文档。 6.件测试阶段是如何划分的? 解:软件测试的阶段划分为:规格说明书审查;系统和程序设计审查;单元测试;
6、集成测试; 确认测试;系统测试;验收测试。 7.简述软件开发的几个模式,并说明每种模式对软件 测试的影响。 解:大棒模式简单,计划、进度安排和正规开发过程几乎没有,其开发过程是非工程化的。 大棒模式的软件测试通常在开发任务完成后进行,很难回头修复存在的问题,测试工作只是 向客户报告软件经过测试后发现的情况。 边写边改模式通常最初只有粗略的想法就进行简单的设计,然后开始较长的反复编写、 测试和修复过程,在认为无法更精细地描述软件产品要求时就发布产品。该模式下,软件测 试人员将和程序员一起陷入可能是长期的循环往复过程。 瀑布模式将软件生命周期的各项活动规定为按照固定顺序相连的若干个 阶段性工作,
7、形如瀑布流水,最终得到软件产品。软件测试在后期展开,使得开发中出现的问题直到开发 后期才显露,失去了及早纠正的机会。 快速原型模式首先构造一个功能简单的原型系统,然后通过对原型系统逐步求精,不 断扩充完善得到最终的软件系统。原型系统在扩充完善过程中不断被检查、测试和修改。 螺旋模式是瀑布模式与边写边改模式演化结合的形式,并加入了风险评估所建立的软 件开发模式,其主要思想是在开始时不必详细定义所有细节,而是从小开始,定义重要功能, 尽量实现,接受客户反馈,进入下一阶段并重复 上述过程,直到获得最终产品。测试在每个 阶段都要进行,并从最初就参与。 8.简述软件测试过程。 解:软件测试过程主要包括如
8、下 6 个活动:测试计划;测试需求分析;测试设计;测试规程 实现;测试执行;总结生成报告。 9. “软件测试能够保证软件的质量”这句话对吗?软件测试和软件质量之间是什么关系? 解:不对。软件测试是保障软件质量的手段之一,但不是唯一手段。测试是产品高质量的必 要非充分条件,软件测试不能决定软件质量。 10.判断以下说法是否正确。 ( 1)软件 测试和软件调试是同一回事。 ( 2)软件测试是可以无穷尽的。 ( 3)测试是为了证明软件的正确性。 ( 4)测试过程中应重视测试的执行,可以轻视测试的设计。 ( 5)测试不能修复所有的软件故障。 ( 6)因为测试工作简单,对软件产品影响不大,所以可以把测试
9、作为新员工的一个过渡工 作,或安排不合格的开发人员做测试。 2 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 。正确) 5(错误,) 6)( 4)( 3)( 2)( 1(解: 11.简述软件开发进程与测试进程的关系。 解:软件测试是一个贯穿软件开发生命周期的活动,它可以是一个与开发并行的过程,也可 以是在开发完成某个阶段任务之后的活动。 3 PDF 文件使用 “pdfFactory Pro“ 试用版本创建 第 2 章软件测试方法与过程 1对软件测试的复杂性进行归纳分析。 解:软件测试的复杂性在于:无法对程序进行完全的测试;测试无法保证被测程序中无遗留 错误;不能修复所有
10、的软件故障。 2分别解释什么是静态测试、动态测试、黑盒测试、白盒测试、人工测试和自动化测试。 解:所谓静态测试是指不运行被测软件,仅通过分析或检查等其他手段达到检测的目的。 所谓动态测试是指通过运行被测软件,检查运行结果与预期结果的差异,并分析运行效 率和健壮性等性能。 黑盒测试是指在对程序进行的功能抽象的基础上,将程序划分成功能单元,然后对每个 功能单元生成测试数据进行测试。用这种方法进行测试时,被测程序被当作打不开的黑盒, 因而无法了解其内部构造,因此 又称为功能测试。 白盒测试又称为结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来 检测产品内部动作是否按照规格说明书的规定正
11、常进行,按照程序内部的结构测试程序,检 验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能。 广义上,人工测试是人为测试和手工测试的统称。人为测试的主要方法有桌前检查,代 码审查和走查。手工测试指的是在测试过程中,按测试计划一步一步执行程序,得出测试结 果并进行分析的测试行为。 自动化测试指的是利用测试工具来执行测试,并进行测试结果分 析的测试行为。 3如果没有软件规格说明或需求文档,可以进行动态黑盒测试吗?为什么? 解:不行。因为黑盒测试是基于软件规格说明的测试。 4在单元测试中,所谓单元是如何划分的? 解:单元测试的对象通常是软件设计的最小逻辑单元,单元的划分在面向过程的结构化
12、程序 中一般是函数或子过程,在面向对象的程序中可以是类或类的成员函数。 5简述单元测试的主要任务。 解:单元测试的主要任务是:模块接口测试;局部数据结构测试;路径测试;错误处理测试; 边界测试。 6如果开发时间紧迫,是否可以跳过单元测试而直接进行集成测试?为什么? 解:不可以。因为没有经过单元测试的模块会遗留大量的缺陷到集成测试阶段,而在集成测 试阶段对这些缺陷定位困难,导致后续工作展开困难,修复缺陷成本成指数级增长。 7什么是驱动模块和桩模块?为下面的函数构造一个驱动模块。 int divide(int a, int b) 4 PDF 文件使用 “pdfFactory Pro“ 试用版本创建
13、 int c; if (b=0) printf(“除数不能为 0“); return 0; c=a/b; return c; 解:驱动模块是用以模拟被测模块的上级模块,它接收测试数据,传送数据给被测模块,启 动被测模块,最后输出实测结果。 桩模块用以模拟被测模块工作过程中所调用的子模块。 函数驱动模块: void main( ) int x,y,z; scanf(“ %d%d” , z=divide(x,y); printf(“ %d” ,z); 8什么是回归测试?什么时候进行回归测试? 解:回归测试就是重新运行现有测试用例测试原有功能,以便确定变更是否达到了预期的目 的,检查变更是否损害了
14、原有的正常功能。每当软件发生变化时就应进行回归测试。 9集成测试有哪些不同的集成方法?简述不同方法的特点。 解:集成测试通常有一次性集成、自顶向下集成、自底向上集成和混合集成 4 种集成方法。 一次性集成方法需要的测试用例数目少,测试方法简单、 易行。但是由于不可避免存在 模块间接口、全局数据结构等方面的问题,所以一次运行成功的可能性不大;如果一次集成 的模块数量多,集成测试后可能会出现大量的错误,给程序的错误定位与修改带来很大的麻 烦;即使集成测试通过,也会遗漏很多错误进入系统测试。 自顶向下集成在测试的过程中,可以较早地验证主要的控制和判断点;一般不需要驱动 程序,减少了测试驱动程序开发和
15、维护的费用;可以和开发设计工作一起并行执行集成测试, 能够灵活的适应目标环境;容易进行故障隔离和错误定位。但是在测试时需要为每个模块的 下层 模块提供桩模块,桩模块的开发和维护费用大;桩模块不能反映真实情况,重要数据不 能及时回送到上层模块,导致测试不充分;涉及复杂算法和真正 I/O 的底层模块最易出问题, 在后期才遇到导致过多的回归测试。 自底向上集成可以尽早的验证底层模块的行为;提高了测试效率;一般不需要桩模块; 容易对错误进行定位。但是直到最后一个模块加进去之后才能看到整个系统的框架;驱动模 块的设计工作量大;不能及时发现高层模块设计上的错误。 混合集成具有自顶向下和自底向上两种集成策略的优点,但是在被集成之前,中间层 不 能尽早得到充分的测试。 10系统测试主要包括哪些内容? 解:系统测试主要包括强度测试、性能测试、恢复测试、安全测试、可靠性测试、安装测试、 5 PDF 文件使用 “pdfFactory Pro“ 试用版本创建