软件测试技术PPT第4章 单元测试.pptx
《软件测试技术PPT第4章 单元测试.pptx》由会员分享,可在线阅读,更多相关《软件测试技术PPT第4章 单元测试.pptx(26页珍藏版)》请在文库网上搜索。
1、第4章 单元测试思维导图 基本单元必须具备一定的基本属性,有明确的规格定义,以及包含与其他部分接口的明确定义等,从软件工程的角度来说,具有功能的独立性、符合高内聚和低耦合的特性,并且能够清晰地与同一程序中的其他单元划分开来。对于结构化的编程语言而言,程序单元通常是指程序中定义的函数或子程序,单元测试就是指对函数或子程序所进行的测试。对于面向对象的编程语言而言,程序单元通常指特定的一个具体的类或相关的多个类,单元测试主要是指对类的测试。通常而言,单元测试是在软件开发过程中要进行的最低级别的测试活动,或者说是针对软件设计的最小单位即程序模块、函数、类或方法所进行的正确性检验的测试工作,其目的在于发
2、现每个单元内部可能存在的错误或缺陷。4.1 单元测试概述 在单元测试活动中,软件的独立单元是在与程序的其他部分相隔离的情况下进行测试,主要工作分为两个步骤:人工静态检查(静态测试)和动态执行跟踪(动态测试)。前者主要是保证代码算法的逻辑正确性(尽量通过人工检查发现代码的逻辑错误)、清晰性、规范性、一致性、算法高效性,并尽可能地发现程序中可能存在的错误或缺陷。后者就是通过设计测试用例,执行待测程序来跟踪比较实际结果与预期结果来发现错误或缺陷。一般情况下应该由程序员完成单元测试工作,并且在提交产品代码的同时也提交测试 代码。当然,为了确保软件质量,测试部门可以对其测试工作做一定程度的抽样测试和审核
3、,必要时可以由测试团队专门进行单元测试。4.1 单元测试概述 单元测试的目标就是验证开发人员所编写的编码是否产生预期结果、是否符合设计的要求,最终确保单元符合需求。同时,代码的质量、可复用性、代码的可维护性及代码的可扩展性的检查也是单元测试的目标。符合需求的单元代码通常应该具备以下性质:正确性、清晰性、规范性、一致性、高效性、可复用性等。正确性:代码逻辑必须正确,能够实现预期的功能。清晰性:代码必须简明、易懂,注释准确没有歧义。规范性:代码必须符合企业或部门所定义的共同规范,包括命名规则,代码风格等。一致性:代码必须在命名上(如:相同功能的变量尽量采用相同的标识符)、风格上都保持统一。高效性:
4、代码不但要满足以上性质,而且需要尽可能减少代码的执行时间。可复用性:代码尽量做到可复用、标准化,便于以后重用。4.1 单元测试概述 由于一个模块、函数、类或类中的一个方法(Method)并不是一个能单独运行的独立程序,在进行测试时需要同时考虑该单元和外界的接口,因此要用到一些辅助模块来模拟与所测模块相连的其他模块。一般把这些辅助模块分为两种:(1)驱动模块(driver):其作用相当于所测模块的主程序。它接收测试数据,把这些数据传送给所测模块,最后再输出实际测试结果。驱动模块的作用为:接受测试输入 对输入进行判断 将输入传给被测单元,驱动被测单元执行 接受被测单元执行结果,并对结果进行判断 将
5、判断结果作为用例执行结果并输出测试报告4.2 单元测试环境及过程 单元测试环境(2)桩模块(stub):其代替所测模块调用的子模块。桩模块可以进行少量的数据操作,不需要实现子模块的所有功能,但要根据需要来实现或代替子模块的一部分功能。桩模块是一次性模块,主要是为了配合调用它的父模块工作。通过开发驱动器或(和)桩,被测试模块和与它相关的驱动模块或(和)桩模块共同构 成了一个“测试环境”,如图所示。4.2 单元测试环境及过程 单元测试环境为了确保可以高质量地完成单元测试,在设计桩模块和驱动模块时最好多考虑一些环境因素,如开发环境及测试工具的集成、系统时钟、文件状态(假如,单元模块需要从外部读入数据
6、文件,文件的位置、格式等必须按照要求准备完毕)、单元加载地点、甚至外部设备,以及与实际环境相同的编译器、操作系统、计算机等。在面向对象的系统中,一般以类为测试单元,有时也会以类内方法作为单元。对于包 或子系统而言,可以设计一个测试模块类来做驱动模块,用于测试包中所有的待测试类。最好不要在每个类中用一个测试函数的方法来测试跟踪类中所有的方法。4.2 单元测试环境及过程 单元测试环境单元测试的主要过程如下:(1)详细设计说明书(规约)通过评审。(2)编制单元测试计划(测试经理)。(3)编制子系统单元测试计划(如果需要的话)(开发组)。(4)编写测试代码并开发单元测试用例(开发组)。(5)代码审查(
7、开发组或测试组)。(6)测试用例评审(开发组或测试组)。(7)测试执行(开发组)。(8)缺陷提交(开发组)。(9)缺陷跟踪(开发组或测试组)。(10)测试报告及评审(开发组或测试组)(未通过回到第(4)。4.2 单元测试环境及过程 单元测试过程做好单元测试,提高单元测试的质量,仅仅了解单元测试的技术还远远不够,选择合 适的单元测试策略也至关重要。单元测试的各个组件不是孤立的,是整个系统的组成部分,单元测试需要了解该单元组件在整个系统中的位置,它被哪些组件调用,该单元组件本身又调用哪些组件,最好的情况是在进行单元组件的测试时已经全面地了解了单元组件的层次及调用关系。传统结构化开发和面向对象开发的
8、单元测试的策略是不同的。4.3 单元测试策略 自顶向下的单元测试(1)以单元组件的层次及调用关系为依据,从最顶层开始,把被顶层调用的单元做成桩模块。(2)对第二层单元组件进行测试,如果第二层单元组件又被其上层调用,以上 层已测试的单元代码为依据开发驱动模块来测试第二层单元组件。同时,如果有被第二层单元组件调用的下一层单元组件,则还需依据其下一层单元组件开发桩,桩的数量可以有多个。(3)依此类推,直到全部单元组件测试结束。4.3 单元测试策略 传统结构化开发单元测试策略自顶向下的单元测试优点:因为单元测试是直接或间接地以单元组件的层次及调用关系为依据,所以可以在集成测试之前为系统提供早期的集成途
9、径。由于详细设计一般都是自顶向下进行设计的,这样自顶向下的单元测试策略在顺序上同详细设计一致,因此测试可以与详细设计和编码工作重叠或交叉进行。缺点:由于单元测试需要开发驱动器或(和)桩模块,随着单元测试的不断进行,测试过程也会变得越来越复杂,测试难度以及开发和维护的成本都不断增加;低层次单元组件的结构覆盖率也难以得到保证;由于需求变更或其他原因而必须更改任何一个单元组件时,就必须重新测试该单元下层调用的所有单元;低层单元测试依赖顶层测试,无法进行并行测试,使测试进度受到不同程度的影响,延长了测试周期。4.3 单元测试策略 传统结构化开发单元测试策略自底向上的单元测试(1)以单元组件的层次及调用
10、关系为依据,先对组件调用图上的最底层组件进行测试,模拟调用该组件的模块为驱动模块(器)。(2)对上一层单元组件进行单元测试,开发调用本层单元组件的驱动器,同时,要开发被本层单元组件调用的已经完成单元测试的下层单元组件的桩。驱动器的开发依据调用被测单元组件的代码,桩的开发依据被本层单元组件调用的已经完成单元测试的下层单元组件代码。(3)依此类推,直到全部单元组件测试结束。4.3 单元测试策略 传统结构化开发单元测试策略自底向上的单元测试优点:因为单元组件的层次越靠近下层,组件本身的调用或控制逻辑越少,最底层组件一般是完全处理实际业务的组件,首先进行底层单元组件的测试,无须太多依赖单元组件的层次和
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件测试技术PPT第4章 单元测试 软件 测试 技术 PPT