新書推薦:
《
直观的经营:哲学视野下的动态管理
》
售價:NT$
407.0
《
长高食谱 让孩子长高个的饮食方案 0-15周岁儿童调理脾胃食谱书籍宝宝辅食书 让孩子爱吃饭 6-9-12岁儿童营养健康食谱书大全 助力孩子身体棒胃口好长得高
》
售價:NT$
214.0
《
身体自愈力:解决内在病因的身体智慧指南
》
售價:NT$
449.0
《
非言语沟通经典入门:影响人际交往的重要力量(第7版)
》
售價:NT$
560.0
《
山西寺观艺术壁画精编卷
》
售價:NT$
7650.0
《
中国摄影 中式摄影的独特魅力
》
售價:NT$
4998.0
《
山西寺观艺术彩塑精编卷
》
售價:NT$
7650.0
《
积极心理学
》
售價:NT$
254.0
|
編輯推薦: |
本书为清华大学出版社出版的朱少民老师的《软件测试方法与技术》一书的配套实验类指导书,因此在内容与篇章结构上尽量与其一致。同时,本实验教材注重实践环节的积累,用具体的案例来讲述软件测试理论应用的具体方法,实用性和指导性强。本书是朱少民老师的《软件测试方法与技术》一书的实践教程和重要补充。
|
內容簡介: |
本书是计算机科学与技术专业、计算机软件专业以及其他相关专业学生学习软件测试理论时的配套实验教材。在介绍软件测试的主要方法的同时,以实验指导书的形式给出运用各种方法的软件测试案例,便于读者学习实践。 全书分为两篇: 第1篇介绍软件测试的原理与方法,着重介绍黑盒功能测试的等价类划分法、边界值法、判定表法和Pairwise方法以及白盒逻辑覆盖测试的实验原理及具体的实验案例; 第2篇介绍软件测试的技术,着重介绍单元测试、集成测试和系统测试的实验原理及具体的实验案例。 本实验教材具有一定的实用性和指导性,可以作为高等院校计算机、软件工程等专业高年级本科生和研究生学习软件测试的实验指导书,同时可供需要了解和学习软件测试的开发人员和广大科技工作者参考。
|
目錄:
|
目录
第1篇软件测试的原理与方法
第1章测试用例设计
1.1软件测试的基本理念
1.1.1软件质量
1.1.2软件缺陷
1.1.3软件测试
1.2测试用例设计
1.2.1测试用例的类型
1.2.2测试用例的一般结构
1.2.3设计测试用例需考虑的因素
第2章黑盒测试原理与方法
2.1黑盒测试概述
2.2等价类划分法
2.2.1等价类划分法的原理
2.2.2等价类划分法的实验
2.3边界值分析法
2.3.1边界值分析法的原理
2.3.2边界值分析法的实验
2.4判定表法
2.4.1判定表法的原理
2.4.2判定表法的实验
2.5Pairwise方法
2.5.1Pairwise方法的原理
2.5.2Pairwise方法的实验
第3章白盒测试原理与方法
3.1白盒测试概述
3.1.1语句覆盖
3.1.2判定覆盖
3.1.3条件覆盖
3.1.4判定条件覆盖
3.1.5条件组合覆盖
3.1.6基本路径覆盖
3.1.7白盒测试与黑盒测试的比较
3.2白盒测试实验
第2篇软件测试的技术
第4章单元测试
4.1单元测试概述
4.1.1什么是单元测试
4.1.2单元测试中的测试用例设计
4.1.3单元测试的过程
4.1.4单元测试的主要测试手段
4.2单元功能测试
4.2.1单元功能测试概述
4.2.2单元功能测试实验
4.3单元逻辑覆盖测试
4.3.1单元逻辑覆盖测试概述
4.3.2静态测试
4.3.3驱动程序和桩程序
4.3.4利用驱动程序和桩程序进行单元测试
4.3.5利用JUnit进行单元测试
4.3.6利用JUnit进行单元测试的实验
第5章集成和系统测试
5.1集成测试概述
5.2系统测试概述
5.3利用业务流进行集成和系统功能测试
5.4利用业务流进行集成和系统功能测试的实验
5.5系统性能测试
5.5.1性能测试定义与要点
5.5.2性能测试术语
5.5.3性能测试流程
5.5.4系统性能测试软件LoadRunner
5.5.5利用LoadRunner软件进行系统性能测试的实验
附录A管理信息系统单元测试共通点检查表
附录B实验设备管理系统程序安装说明
参考文献
|
內容試閱:
|
前言
软件测试是一门对于工程实践能力要求很高的课程,在整个计算机科学与技术学科的人才培养规划里,是一门偏重于实践的核心课程,旨在培养学生的计算机实际开发能力。目前,许多高校在计算机专业或软件工程专业开设了这门课程,可见软件测试课程的重要性。事实上,由于软件测试这门课程重在培养学生的工程实践能力的特点,从软件测试教学大纲和教学计划可以看出,所安排的实验节数非常多,应该是全部学时的一半以上,因为学生只有通过一个个软件测试案例的实验,才能够真正掌握软件测试的各种方法并且做到融会贯通。目前,软件测试课程的教材数量多而且质量都很好,但是基于培养软件测试实际动手能力的实验配套教材还不多,学生反映即使买到了合适的软件测试教材,但是很难买到真正实用的软件测试实验指导用书。原因是这类书籍由于偏重实践环节,所涉及的课题和实验的准备需要很长的时间,不像一般的理论教材那么好写,所以出书十分困难。但是学生要想掌握软件测试方法,在实际测试环节中,又迫切地需要好的、详细介绍实施软件测试方法具体步骤的实验教程。本人多年从事软件工程、软件测试及软件质量保证的研究并讲授相关课程,长期指导学生进行实际的软件测试活动,在软件测试的课堂上多年采用清华大学出版社出版、朱少民老师编写的《软件测试方法和技术》一书,按照朱老师教材的章节编写思路,结合自己多年辅导学生进行软件测试学习所积累的案例,编写了这本软件测试的实验教程。本书充实了软件测试方法和技术的实验环节案例,详细描述了各种软件测试常用的方法和技术在实践中应用的步骤和过程,由浅入深、循序渐进,有些章节的实验甚至分步骤详尽地做了阐述。所以,本书应该是一本容易入门的、浅显易懂的实验教材,特别适合作为一本学习软件测试的入门实验指导书。书中所涉及的所有案例都是笔者这些年在课堂上带着学生反复实践过的,相信会对学习软件测试的读者有所启发。本书设想成为清华大学出版社出版、朱少民老师编写的《软件测试方法和技术》一书的配套实验类指导书,因此在内容与篇章结构上尽量与朱老师的原书一致,可以说本书是《软件测试方法和技术》一书的实践教程和重要补充。同时,本书注重实践环节的积累,用具体的案例来讲述软件测试理论应用的具体方法,实用性和指导性很强。本书对软件测试的主要方法和重要技术均做了介绍,本着理论与实践相结合的原则,在介绍软件测试某个具体的方法之后,以实验指导书的形式相应地给出一个利用此方法的实验案例,便于读者学习实践。在各章的实验指导书中,除说明本次实验的目的、所要求的实验环境、本次实验的内容之外,对于实验相关的软件测试理论,都以【实验原理】的形式再次简明扼要地加以阐明; 对于软件测试初学者感觉困难的地方,都以【实验步骤】的形式予以具体讲解,读者只要按照实验步骤进行操作,就可以很容易地完成整个实验。提醒读者不要急于阅读【实验指导】部分,因为【实验指导】是类似习题答案的内容,因此为了培养和锻炼自己的软件测试能力,可以先不阅读【实验指导】,自己完成整个实验之后再阅读这一部分,看看自己的测试设计方法与【实验指导】有什么不同,从而达到学习提高的目的。对于初学者容易犯的错误都以【实验中需要注意的问题】的形式进行了概括总结。有些实验还有【实验拓展】部分,提出实验拓展问题,或者是需要进一步进行实验的内容。对于本实验教程的所有实验案例,读者都可以参阅书中的【实验指导】,自己进行相同的实验操作,所涉及的被测程序和相应的软件系统平台、测试工具软件,都可以从本书指定的配套网站下载使用。本书所涉及的多个测试实验均可被读者实际操作,相信许多读者凭借本书,可以真正摆脱只能学习软件测试理论,无法动手进行实际测试的困境。各章的实验指导阐述细致,浅显易懂。本书参考了软件测试的相关书籍以及互联网上的一些软件测试理论文章,特别是朱少民老师编写的《软件测试方法和技术》一书,对于各位作者表示深深的谢意。本书还参考了我的学生郭莹和范逸飞的毕业设计论文。作为毕业设计导师,向他们表示感谢。由于本人水平有限,尽管参照了很多的文献和听取多方的意见,但由于时间问题和本人能力问题,书中难免存在漏洞与误区,还望读者朋友指正。作者2017年1月
3白盒测试原理与方法
3.1白盒测试概述
白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,测试人员清楚盒子内部的东西以及里面是如何运作的。白盒测试的目的: 通过检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试; 检查程序的状态,以确定实际运行状态与预期状态是否一致。白盒测试的特点: 依据软件详细设计说明书进行测试,对程序内部细节进行严密检验,针对特定条件设计测试用例,对软件的逻辑路径进行覆盖测试。白盒测试的方法: 总体上分为静态方法和动态方法两大类。静态分析是一种不通过执行程序而进行测试的技术。静态分析的关键功能是检查软件的表示和描述是否一致,是否没有冲突或者没有歧义。动态分析的主要特点是当软件系统在模拟的或真实的环境中执行之前、之中和之后,对软件系统行为的分析。动态分析包含了程序在受控的环境下使用特定的期望结果进行正确的运行,它显示了一个系统在检查状态下是正确还是不正确。在动态分析技术中,最重要的技术是路径和分支测试。下面要介绍的6种覆盖测试方法属于动态分析方法。图31是一个被测模块的流程图,下面以此为例分别阐述几种白盒逻辑覆盖测试的原理。
图31一个被测模块的流程图
3.1.1语句覆盖1. 主要特点
语句覆盖是最起码的结构覆盖要求,语句覆盖要求设计足够多的测试用例,使得程序中每条语句至少被执行一次。2. 测试用例设计为了使语句都被执行,程序的执行路径应该是sacbed。只需要输入下面的测试用例数据实际上X可以是任意实数,如表31所示。A=2,B=0,X=4。
表31语句覆盖测试用例表
编号ABX路径1204sacbed
3. 优点可以很直观地从源代码得到测试用例,无需细分每条判定表达式。4. 缺点由于这种测试方法仅仅针对程序逻辑中显式存在的语句,对于隐藏的条件和可能到达的隐式逻辑分支,是无法测试的。在上面的例子中,两个判定条件都只测试了条件为真的情况,如果条件为假时处理有错误显然不能发现。语句覆盖对于多分支的逻辑运算是无法全面反映的,它只在乎运行一次,而不考虑其他情况。3.1.2判定覆盖1. 主要特点
判定覆盖又称为分支覆盖,它要求设计足够多的测试用例,使得程序中每个判定至少有一次为真值,有一次为假值,即程序中的每个分支至少执行一次。每个判断的取真、取假至少执行一次。2. 测试用例设计判定覆盖测试用例如表32所示。
表32判定覆盖测试用例表
编号ABX路径1403sacbd2211sabed
3. 优点判定覆盖测试了每个分支的情况,当然也就具有比语句覆盖更强的测试能力。同样,判定覆盖也具有和语句覆盖一样的简单性,无需细分每个判定中的每个条件就可以得到测试用例。4. 缺点往往大部分的判定语句是由多个逻辑条件组合而成如判定语句中包含AND、OR、CASE,若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然不易发现代码中的错误。3.1.3条件覆盖1. 主要特点
条件覆盖要求设计足够多的测试用例,使得判定中的每个条件获得各种可能的结果,即每个条件至少有一次为真值,有一次为假值。如图31中共有两个判定表达式,每个表达式中有两个条件,为了做到条件覆盖,选取的测试数据使得:① 在a点有下述各种结果出现: A1,A1,B=0,B0。② 在b点有下述各种结果出现: A=2,A2,X1,X1。只需要使用下面两组测试数据就可以达到上述覆盖标准:A=2,B=0,X=4满足A1,B=0,A=2, X1的条件; 执行路径sacbed。A=1,B=1,X=1满足A1, B0, A2, X1的条件; 执行路径sabd。2. 测试用例设计条件覆盖测试用例如表33所示。
表33条件覆盖测试用例
编号ABX路径1204sacbed2111sabd
3. 优点显然条件覆盖比判定覆盖要强,因为它使判定表达式中的每个条件都取得了各个不同的结果,判定覆盖却只关心整个判定表达式的值。例如,上面两组测试数据也同时满足判定覆盖标准。4. 缺点要达到条件覆盖,需要足够多的测试用例,但条件覆盖并不能保证判定覆盖。条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。虽然每个条件都取得了两个不同的结果,判定表达式却始终只取一个值。例如,如果使用表34的两组测试用例,则只满足条件覆盖标准,并不满足判定覆盖标准第2个判定表达式的值总是为真。A=2,B=0,X=1满足A1,B=0,A=2,X1的条件; 执行路径sacbed。A=1,B=1,X=2满足A1,B0,A2,X>1的条件; 执行路径sabed。
表34不满足判定覆盖的条件覆盖测试用例
编号ABX路径1201sacbed2112sabed
3.1.4判定条件覆盖既然判定覆盖不一定包含条件覆盖,条件覆盖也不一定包含判定覆盖,自然会提出一种同时满足这两种覆盖标准的逻辑覆盖,这就是判定条件覆盖。1. 主要特点设计足够多的测试用例,使得判定中每个条件的所有可能结果至少出现一次,每个判定本身所有可能结果也至少出现一次。2. 测试用例设计判定条件覆盖测试用例如表35所示。
表35判定条件覆盖的测试用例
编号ABX路径1204sacbed2111sabd
3. 优点判定条件覆盖满足判定覆盖准则和条件覆盖准则,弥补了二者的不足。4. 缺点判定条件覆盖准则的缺点是未考虑条件的组合情况。3.1.5条件组合覆盖1. 主要特点
条件组合覆盖是更强的逻辑覆盖标准,要求设计足够多的测试用例,使得每个判定中条件结果的所有可能组合至少出现一次。从流程图中可以看到,共有下列8种可能的条件组合。① A1,B=0。② A1,B0。③ A1,B=0。④ A1,B0⑤ A=2,X1。⑥ A=2,X1。⑦ A2,X1。⑧ A2,X1。和其他逻辑覆盖标准中的测试数据不同,X值是指在程序流程图第二个判定框b点的X值。下面的4组数据可以使得上面的8种条件组合的每种至少出现一次。A=2,B=0,X=4针对①、⑤两种组合; 执行路径sacbed。A=2,B=2,X=1针对②、⑥两种组合; 执行路径sabed。A=1,B=0,X=2针对③、⑦两种组合; 执行路径sabed。A=1,B=1,X=1针对④、⑧两种组合; 执行路径sabd。2. 测试用例设计条件组合覆盖测试用例如表36所示。
表36条件组合覆盖的测试用例
编号ABX路径
1204sacbed2221sabed3102sabed4111sabd
3. 优点显然满足条件组合标准的测试数据也一定满足判定覆盖、条件覆盖和判定条件覆盖准则。因此条件组合覆盖是前述几种覆盖标准中最强的。4. 缺点线性地增加了测试用例的数量。3.1.6基本路径覆盖1. 主要特点
设计足够的测试用例,覆盖程序中所有可能的路径。也就是说,使得程序的每条可能路径都至少执行一次。若流程图中有环,则每个环至少经过一次。2. 测试用例设计路径覆盖测试用例如表37所示。
表37路径覆盖的测试用例
编号ABX路径
1111sabd2112sabed3301sacbd4204sacbed
在上述程序流程图中,一共有四条可能的执行路径,即sabd、sabed、sacbd和sacbed。因此,对于这个例子,为了做到路径覆盖必须设计四组测试数据。上面的四组测试数据可以满足路径覆盖的要求。3. 优点路径覆盖是相当强的逻辑标准,它保证程序中的每条可能的路径都至少执行一次,因此这样的测试数据更有代表性,暴露错误的能力也比较强。这种测试方法可以对程序进行彻底的测试,比前面5种的覆盖面都广。4. 缺点由于路径覆盖需要对所有可能的路径进行测试包括循环、条件组合、分支选择等,那么需要设计大量、复杂的测试用例,使得工作量呈指数级增长。为了做到路径覆盖,只需考虑每个判定表达式的取值,并没有检验表达式中条件的各种可能组合情况。如果把路径覆盖和条件覆盖结合起来,可以设计出检错能力更强的测试数据。对于上述例子,只要把路径覆盖的第三组测试数据和前面给出的条件组合覆盖的四组测试数据联合起来,就可以做到既满足路径覆盖标准又满足条件组合覆盖标准。3.1.7白盒测试与黑盒测试的比较黑盒测试方法是把被测试对象看成一个黑盒子,测试人员完全不考虑程序内部结构和处理过程,只在软件的接口处进行测试。根据需求规格说明书,检查程序是否满足功能要求,因此,黑盒测试又称为功能测试或数据驱动测试。白盒测试方法是把测试对象看作一个打开的盒子,测试人员必须了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。另外,白盒测试一般是单元测试时必须做的基本测试,主要由程序开发人员来进行测试。黑盒测试则贯穿单元测试、集成测试和系统测试的整个过程,一般单元阶段的黑盒测试主要由程序开发人员来进行,集成测试和系统测试阶段的黑盒测试主要由专门的测试小组和质量保证人员进行,并由程序开发人员辅助完成。1. 白盒测试的优点(1) 迫使测试人员去仔细思考软件的实现。(2) 可以检测代码中的每条分支和路径。(3) 揭示隐藏在代码中的错误。(4) 对代码的测试比较彻底。(5) 最优化。2. 白盒测试的缺点(1) 昂贵。(2) 无法检测代码中遗漏的路径和数据敏感性错误。(3) 不验证规格的正确性。3. 黑盒测试的优点(1) 对于较大的代码单元,黑盒测试的效率更高。(2) 测试人员不需要了解程序的细节。(3) 测试人员和编码人员相对独立。(4) 从用户的视角进行测试,很容易被理解和接受。(5) 有助于暴露任何规格不一致或有歧义的问题。(6) 测试用例的设计可以不必等到编码完成,可以在规格完成之后马上进行。4. 黑盒测试的缺点(1) 只有一小部分可能的输入被测试到,要测试每个可能的输入几乎是不可能的。(2) 没有清晰、简明的规格,测试用例很难设计。
3.2白盒测试实验
【实验目的】1 掌握白盒测试的基本方法。2 利用语句覆盖、判定覆盖、条件覆盖、路径覆盖正确地设计白盒测试用例。【实验重点及难点】重点: 掌握白盒测试经典的语句覆盖、判定覆盖、条件覆盖、路径覆盖的测试方法。难点: 利用语句覆盖、判定覆盖、条件覆盖、路径覆盖各自的特点,用最少的测试用例进行测试。【实验原理】白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,考虑程序代码、代码结构以及内部设计流。通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。白盒测试的主要方法有静态测试和动态测试。白盒测试的方法有助于缩短缺陷引入程序代码和将其检测出来之间的延迟。由于白盒测试是一种被广泛使用的逻辑测试方法,是由程序内部逻辑驱动的一种单元测试方法,所以只有对程序内部十分了解,才能进行适度有效的白盒测试。但是贯穿在程序内部的逻辑存在着不确定性和无穷性,尤其对于大规模复杂软件,因此人们不能穷举所有的逻辑路径。正确使用白盒测试,就要先从代码分析入手,根据不同的代码逻辑规则、语句执行情况,选用适合的覆盖方法。任何一个高效的测试用例,都是针对具体测试场景的。逻辑测试不是片面的测试正确的结果或是测试错误的结果,而是尽可能地全面地覆盖每一个逻辑路径。逻辑覆盖的方法有很多种,包括语句覆盖、判定覆盖、条件覆盖和路径覆盖等。【实验内容】1 根据所给程序的流程图32,分别用最少的测试用例完成语句覆盖、判定覆盖、条件覆盖、路径覆盖的测试设计。
图32程序流程图
2 编写测试用例报告。【实验指导】1 将流程图32简化为图33,并加以分析。
图33简化后的程序流程图
可以看出,图33中有两个判定: 判定M={X0 and Y10}和判定N={X0: 取真时为T1,取假时为F1; 条件Y10: 取真时为T2,取假时为F2。判定N也包含了下列两个条件: 条件X0,Y10,执行Y=YX的逻辑。当X=-15,Y=-15时,即X0,Y10,执行Y=-Y X的逻辑。表39所示的测试用例完成了对程序中的语句的覆盖。
表39语句覆盖的测试用例
测 试 用 例具体取值条件覆 盖 语 句覆 盖 路 径
输入: {X=1,Y=15}
输出: {X=1,Y=15}X0,Y10
X-10,Y0Y=YXP1: 125输入: {X=-15,Y=-15}
输出: {X=-15,Y=-15}X0,Y10
X0 and Y10}
判定N={ X0,Y10,判定M=.T.,N=.F.。当X=-15,Y=-15时,即X0,Y10,判定M=.F.,N=.T.。如表310所示,判定M、N分别为真和假,就完成了对判定M、N的覆盖。
表310判定覆盖的测试用例
测 试 用 例具体取值条件覆 盖 判 定覆 盖 路 径
输入: {X=1, Y=15}
输出: {X=1,Y=15}X0,Y10
X-10,Y0M=.T.
N=.F.P1: 125输入: {X=-15,Y=-15}
输出: {X=-15,Y=-15}X0,Y10
X0: 取真时为T1,取假时为F1; 条件Y10: 取真时为T2,取假时为F2。判定N也包含了下列两个条件: 条件X0,Y10
X-10,Y0M=.T.
N=.F.T1,T2,F3,F4P1: 125输入: {X=-15,Y=-15}
输出: {X=-15,Y=-15}X0,Y10
X0,Y10
X-10,Y0M=.T.
N=.F.T1,T2,F3,F4P1: 125输入: {X=-15,Y=-15}
输出: {X=-15,Y=-15}X0,Y10
X
|
|