第6章 单元测试的实用技术
软件测试 第6章 单元测试

6.1 单元测试的目标与内容
单元测试的内容
单元测试的内容是对单元的功能、性能、接口、 局部数据结构、独立路径、错误处理、边界条件 和内存使用情况进行测试。 对软件单元接口的测试通常是先于其他内容 的测试进行的。
6.1 单元测试的目标与内容
(1)接口测试 对接口的测试通常包括以下内容 ● 调用、被调用的实形参 ● 全局变量的使用 ● 输入/输出语句和文件的使用 ● 缓存区的使用
6.3 单元测试的策略
4.路径覆盖 路径覆盖是指测试用例中执行到的路径数量占被测试模块 所有可能的执行路径的比率。在路径覆盖中,我们只考虑 所有可能的执行路径,对于不可能执行的路径,我们是不 需要考虑的。而且对于一些大型程序,其包含的路径总量 是非常庞大的,如果要把所有路径都找出来去覆盖也是不 现实的。因此我们可借助以下一些方法来寻找程序中的路 径。
6.3 单元测试的策略
6.3.3 单元测试的自动化意义 单元测试要求设置实际而有效的测试套件,借助自动化 测试工具来帮助开发者自动搭建测试框架,自动生成桩函 数和测试用例,这能在一定程度上减轻开发者的工作。 单元测试通常将静态分析与动态测试相结合,首先利 用自动化测试工具或人脑来完成代码的静态分析或代码审 查,然后再采用动态测试方法进行补充性测试。
6.2 单元测试环境
桩模块的使用条件如下。 (1)被测试模块必须要调用桩模块; (2)必须能够正确接收来自被测试模块传递的各 项参数; (3)桩模块要能够对接收到的参数的正确性进行 判断; (4)桩模块对外的接口定义必须要符合被测试模 块调用的说明; (5)桩模块必须要向被测试模块返回一个结果。
6.2 单元测试环境
6.3 单元测试的策略
6.3.2 单元测试的覆盖率 1.语句覆盖 语句覆盖指的是代码中所有的语句都至少执行一遍,用 于检查测试用例是否有遗漏。原则上讲,单元测试中的语 句覆盖率必须达到100%,尤其是对一些对质量要求较高 的软件,如电信设备软件、航天软件、医用设备软件等, 就要求软件中的所有语句都必须执行到;对质量要求不高 的软件,根据实际项目情况,语句覆盖率也应达到90%以 上,否则单元测试的效果会大打折扣。
【免费下载】软件测试 第6章单元测试

对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力根通保据过护生管高产线中工敷资艺设料高技试中术卷资,配料不置试仅技卷可术要以是求解指,决机对吊组电顶在气层进设配行备置继进不电行规保空范护载高与中带资负料荷试下卷高问总中题体资,配料而置试且时卷可,调保需控障要试各在验类最;管大对路限设习度备题内进到来行位确调。保整在机使管组其路高在敷中正设资常过料工程试况中卷下,安与要全过加,度强并工看且作护尽下关可都于能可管地以路缩正高小常中故工资障作料高;试中对卷资于连料继接试电管卷保口破护处坏进理范行高围整中,核资或对料者定试对值卷某,弯些审扁异核度常与固高校定中对盒资图位料纸置试,.卷保编工护写况层复进防杂行腐设自跨备动接与处地装理线置,弯高尤曲中其半资要径料避标试免高卷错等调误,试高要方中求案资技,料术编试交写5、卷底重电保。要气护管设设装线备备置敷4高、调动设中电试作技资气高,术料课中并3中试、件资且包卷管中料拒含试路调试绝线验敷试卷动槽方设技作、案技术,管以术来架及避等系免多统不项启必方动要式方高,案中为;资解对料决整试高套卷中启突语动然文过停电程机气中。课高因件中此中资,管料电壁试力薄卷高、电中接气资口设料不备试严进卷等行保问调护题试装,工置合作调理并试利且技用进术管行,线过要敷关求设运电技行力术高保。中护线资装缆料置敷试做设卷到原技准则术确:指灵在导活分。。线对对盒于于处调差,试动当过保不程护同中装电高置压中高回资中路料资交试料叉卷试时技卷,术调应问试采题技用,术金作是属为指隔调发板试电进人机行员一隔,变开需压处要器理在组;事在同前发一掌生线握内槽图部内纸故,资障强料时电、,回设需路备要须制进同造行时厂外切家部断出电习具源题高高电中中源资资,料料线试试缆卷卷敷试切设验除完报从毕告而,与采要相用进关高行技中检术资查资料和料试检,卷测并主处且要理了保。解护现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
软件测试 第6章单元测试

第6章单元测试1.单元测试概述1什么是单元⏹传统软件对“单元”一词有着不同的定义单元是可以编译和执行的最小软件组件单元是决不会指派给多个设计人员开发的软件组件⏹“单元”与被测软件系统所采用的分析设计方法以及在其开发过程中采用的实现技术有关函数、子程序、紧密相关的一组函数、类、复杂类中的单个方法、紧密相关的一组类……⏹基本单元必须具备一定的基本属性,有明确的规格定义,以及包含与其他部分接口的明确定义等从软件工程的角度来说,具有功能的独立性、符合高内聚和低耦合的特性能够清晰地与同一程序中的其他单元划分开来2什么是单元测试?⏹通常而言,单元测试是在软件开发过程中要进行的最低级别的测试活动⏹或者说是针对软件设计的最小单位即程序模块、函数、类或方法所进行的正确性检验的测试工作⏹其目的在于发现每个单元内部可能存在的错误或缺陷单元测试的主要工作分两个步骤:2.1人工静态检查(静态测试)保证代码算法的逻辑正确性(尽量通过人工检查发现代码的逻辑错误)、清晰性、规范性、一致性、算法高效性尽可能地发现程序中可能存在的错误或缺陷2.2动态执行跟踪(动态测试)通过设计测试用例,执行待测程序来跟踪比较实际结果与预期结果来发现错误或缺陷3什么时候进行单元测试3.1单元测试越早越好3.2在测试驱动开发(TDD, Test Driven Development)中,先编写测试代码,再进行开发3.3在实际过程中,先写函数的框架,再针对函数的功能编写测试用例,然后编写函数的实现代码。
一边编写代码,一边测试,往往会有比较好的效果。
4单元测试由谁来执行4.1一般情况下由程序员完成单元测试工作单元测试也可以看作是编码工作的一部分,在编码的过程中考虑测试问题,得到的将是更优质的代码所以,单元测试有时也称自测试许多集成开发环境(IDE)可以集成各种单元测试工具帮助编码人员进行单元测试,如Eclipse环境中集成Junit4.2必要时可以由测试团队专门进行单元测试5单元测试的一般流程5.1开发小组承担单元测试5.2在开发负责人(Leader)的监督下进行5.3根据单元测试计划和测试说明文档,设计测试用例,执行充分的测试,达到覆盖要求5.4建议专人负责监控测试过程5.5单元测试具有回归性6单元测试的实质⏹主要是证明代码的行为和我们的期望是否一致在进行单元测试时常常并不关心整个产品或系统的确认、验证及其正确性等方面主要侧重于功能有时也关注性能方面的问题⏹只有所有单元的行为都通过了验证,确保它和我们的期望一致,才能开始进行集成测试⏹所以,足够的单元测试的好处在于:使开发工作变得更轻松对设计工作也能提供帮助大大减少了花费在调试上面的时间7单元测试的目标⏹验证开发人员所编写的代码是否产生预期结果、是否符合设计的要求,最终确保单元符合需求⏹代码的质量、可复用性、代码的可维护性及代码的可扩展性的检查也是单元测试的目标⏹符合需求的单元代码通常具备以下性质正确性:代码逻辑正确,能实现预期功能清晰性:代码简明、易懂,注释准确规范性:代码符合规范一致性:代码在命名上、风格上保持统一高效性:尽可能减少执行时间可复用性:代码尽量标准化,便于复用8为什么要进行单元测试⏹未经测试覆盖的单元代码可能会存在大量的错误或缺陷这些错误或缺陷可能是严重的,可能是微小的或表面的但是,这些错误或缺陷可能会相互影响尤其在开发后期,错误或缺陷可能会扩展⏹这些暴露的错误或缺陷难于定位,结果会大幅度提高后期测试和维护成本,降低了开发商的市场竞争力9单元测试在软件测试中的作用和地位⏹单元测试被认为是集成测试的基础:只有通过了单元测试,才能将各个单元集成在一起进行集成测试⏹单元测试通常在项目的详细设计阶段已经开始了,贯穿于项目开发的生命周期中⏹单元测试已经不仅仅是只有编码完成以后才能进行的工作了2.单元测试的环境及过程1驱动模块(Driver)1.1扮演被测模块的主程序1.2接收测试数据,将数据传递给被测模块,最后输出实际测试结果1.3作用接受测试输入对输入进行判断将输入传给被测单元,驱动被测单元执行接受被测单元执行结果,并对结果进行判断将判断结果作为用例执行结果并输出测试报告2 桩模块(Stub )2.1 代替被测模块需要调用的子模块2.2 可以进行少量的数据操作,不需要实现子模块的所有功能2.3 根据需要实现或代替子模块的一部分功能2.4 桩模块是一次性模块,主要是为了配合调用它的父模块2.5 被测模块和与它相关的驱动模块和(或)桩模块共同构成了一个“测试环境”3 单元测试的过程3.单元测试的策略4.单元测试分析1.单元测试分析是单元测试用例设计的基础,全面地分析才能设计出合理的测试用例涉及详细设计、代码、功能业务需求、非功能业务需求、组件内部数据结构、组件接口等方面2.单元测试分析的9条指导原则检查详细设计是否通过评审并验证其和代码逻辑的一致性,为代码审查和白盒测试用例设计服务分析单元组件涉及到的所有功能点和非功能需求,为功能性和非功能性用例设计服务 分析单元组件是否满足所有的边界条件,为经典的边界值方法设计用例服务对强制发生的一些错误情况进行分析,为意外情况设计补充用例服务分析被测单元组件接口分析模块内部的数据结构分析基路径覆盖,为基路径覆盖设计用例服务分析其他覆盖,为基本覆盖设计用例服务分析单元出错处理的正确性,为设计出错处理用例服务5.单元测试用例的设计1.静态测试技术用于单元测试1.1一般不需要设计具体的测试用例1.2按照静态测试技术的要求完成相关工作即可2.动态测试技术用于单元测试2.1黑盒方法:单元最小功能点覆盖,边界值法……2.2白盒方法:对单元的内部逻辑进行测试3黑盒测试—最小功能点覆盖3.1以ATM取款单元组件为例,其功能点有:(1)正常取款,(2)输入的取款金额是否合法,(3)检查超出当天的最大取款(假设为2000RMB),(4)余额不足(假设账号余额为1500RMB)(5)打印收据各功能点各一次,前提是银行卡和密码为有效4非功能性测试4.1非功能特性一般实现为特定的功能对排序算法效率的测试首先要实现排序功能,然后对其数据量、时间进行测试系统登录的安全性通过完成多次密码输入错误后拒绝登录来实现,因此首先也要实现密码多次错误的检查功能。
实用软件工程第6章

实用软件工程第6章在实用软件工程中,第 6 章往往涵盖了一些关键且重要的概念和方法。
这一章可能会涉及到软件开发过程中的特定阶段、技术或者管理策略。
假设这一章的主题是“软件测试与质量保证”。
软件测试是软件开发中至关重要的环节,它的目的是发现软件中的缺陷和错误,以确保软件产品能够满足用户的需求和期望,并且能够在各种预期的环境中正常运行。
软件测试并不仅仅是在软件开发完成后进行的一项活动,而是应该贯穿于整个软件开发的生命周期。
在软件测试中,有多种不同的测试类型。
其中,单元测试是针对软件中的最小可测试单元,通常是函数或方法进行的测试。
开发人员在编写代码的同时,就应该编写相应的单元测试用例,以确保每个单元的功能正确性。
集成测试则是将多个模块组合在一起进行测试,检查它们之间的接口和交互是否正常。
系统测试是在整个系统完成集成后进行的,包括对功能、性能、安全性等方面的测试。
而验收测试则是由用户或客户参与,以确认软件是否满足他们的业务需求。
测试用例的设计是软件测试中的一个关键环节。
好的测试用例应该具有较高的覆盖率,能够覆盖到各种可能的情况,包括正常情况和异常情况。
等价类划分、边界值分析、因果图等都是常用的测试用例设计方法。
等价类划分是将输入数据划分为若干个等价类,从每个等价类中选取一个代表性的数据进行测试。
边界值分析则着重于输入和输出的边界值,因为在这些地方往往容易出现错误。
因果图则用于分析输入条件之间的组合关系,从而设计出更全面的测试用例。
除了测试用例的设计,测试的执行和管理也非常重要。
测试执行需要严格按照测试计划和测试用例进行,并且要对测试结果进行详细的记录和分析。
如果发现了缺陷,需要及时进行报告和跟踪,确保缺陷得到修复。
在测试过程中,还需要对测试环境进行有效的管理,确保测试环境与实际的生产环境尽可能相似,以提高测试结果的准确性和可靠性。
质量保证则是一个更广泛的概念,它不仅仅关注软件产品的质量,还包括软件开发过程的质量。
软件测试技术_韩永国_第六章单元测试

自底向上的单元测试
方法:先对最底层的基本单元进行测试,模拟 调用该单元的单元做驱动模块。然后再对上面 一层进行测试,用下面已被测试过的单元做桩 模块。依此类推,直到测试完所有单元。
Software Testing
自底向上的单元测试(续)
优点:在集成测试前提供系统早期的集 成途径。不需要开发桩模块。
单元测试环境
测试用例
驱动模块 被测模块
测试结果
桩模块1
桩模块2
桩模块3
Software Testing
举例:
A
D
B
待测试模块 E
C
Software Testing
举例:
测试用例
驱动模块 (模拟模块A)
被测模块B
测试结果
桩模块 (模拟模块E)
Software Testing
讨论
通常,在单元测试中需要必要的桩模块和 驱动模块。桩模块和驱动模块的设计都需 要一定的研发成本。
Checklist :
调用本模块的输入参数是否正确; 本模块调用子模块时输入给子模块的参数是否正
确; 全局量的定义在各模块中是否一致;
Software Testing
一、模块接口测试(续)
在做内外存交换时要考虑:
文件属性是否正确; OPEN与CLOSE语句是否正确; 缓冲区容量与记录长度是否匹配; 在进行读写操作之前是否打开了文件; 在结束文件处理时是否关闭了文件; 正文书写/输入错误; I/O错误是否检查并做了处理。
缺点:随着测试的进行,测试过程越来 越复杂。
总结:比较合理的单元测试策略,但测 试周期较长。
Software Testing
孤立单元测试
软件测试实用技术与常用模板(第2版)

12.1性能测试概述 12.2性能测试的基本要求 12.3性能测试的方法 12.4性能测试的执行流程 12.5性能测试常用的测试用例 12.6自动化性能测试实训
13.1自动化测试框架举例 13.2自动化测试概述 13.3自动化测试技术的使用 13.4自动化测试执行需要解决的问题
第四部分软件测试文档写作模板
9.1回归测试概述 9.2回归测试的策略 9.3回归测试用例库的维护 9.4回归测试的方法 9.5人工回归测试实训 9.6自动化回归测试实训
10.1验收测试概述 10.2应用系统验收测试 10.3外包软件的验收测试 10.4验收测试的组织过程 10.5验收测试实训
11.1功能测试概述 11.2功能测试的重点 11.3功能测试的常见方法 11.4人工功能测试实训 11.5自动化功能测试实训
作者介绍
这是《软件测试实用技术与常用模板(第2版)》的读书笔记模板,暂无该书作者的介绍。
谢谢观看
第5章对本书测试平 台的介绍
第6章单元测试的实 用技术
第7章集成测试的实 用技术
第8章系统测试的实 用技术
第9章回归测试 1
的实用技术
第10章验收测 2
试的实用技术
3 第11章功能测
试的实用技术
4 第12章性能测
试的实用技术
5 第13章自动化
测试的实用技 术
5.1引言 5.2程序系统的结构 5.3对密码修改模块的设计说明 5.4对详细查询功能模块的设计说明
软件测试实用技术与常用模板(第 2版)
读书笔记模板
01 思维导图
03 读书笔记 05 精彩摘录
目录
02 内容摘要 04 目录分析 06 作者介绍
思维导图
关键字分析思维导图
单元测试的主要测试技术

单元测试的主要测试技术单元测试是软件开发过程中至关重要的环节,通过针对软件中的最小可测试单元进行测试,确保这些单元的功能和逻辑正确性。
在进行单元测试时,我们通常会运用以下主要测试技术:1. 测试桩和桩件测试桩和桩件(Mocking and Stubbing)是在单元测试中常用的技术之一。
通过创建虚拟的对象来替代系统依赖项,可以模拟系统的行为,从而使得测试更加简单和可控。
测试桩模拟了外部系统的调用,而桩件则模拟了外部系统所返回的数据。
2. 断言断言(Assertions)是用于判断测试结果是否符合预期的关键技术。
在单元测试中,我们会编写各种断言来验证程序的输出是否与预期结果一致,如果不一致则会触发测试失败。
常见的断言包括相等断言、真假断言、异常断言等。
3. 测试驱动开发(TDD)测试驱动开发(Test-Driven Development)是一种软件开发方法,其核心思想是先编写测试用例,再编写代码使得测试用例通过。
采用TDD方式可以帮助开发人员更好地理解需求和代码,提高代码质量和稳定性。
4. 测试覆盖率测试覆盖率(Test Coverage)是评估测试用例覆盖代码的程度。
通过测试覆盖率工具可以分析哪些代码被测试覆盖,哪些代码没有被测试覆盖,帮助开发人员完善测试用例,提高测试质量。
5. 参数化测试参数化测试(Parametrized Testing)是一种通过在测试用例中使用不同的参数来运行多次测试的技术。
通过参数化测试可以有效地提高测试的覆盖率和效率,发现潜在的问题。
结语以上就是单元测试中常用的主要测试技术,每种技术都有其特点和适用场景。
在实际开发中,根据具体情况选择适合的测试技术,确保单元测试的全面性和有效性,从而提升软件质量和开发效率。
第6章 单元测试的实用技术

1
6.1.2 单元测试所需文档资料
单元测试是以程序设计说明书为指导,测试模块范围内的重要控制路径,以揭露错误。 单元测试所需文档资料有: ★ 系统需求说明书; ★ 系统功能说明书; ★ 系统测试说明书; ★ 程序设计说明书; ★ 测试大纲。
6.2 单元测试的主要任务
单元测试的主要任务有:程序语法检查;程序逻辑检查;模块接口测试;局部数据 结构测试;路径测试;边界条件测试;错误处理测试;代码书写规范检查。 下面分别介绍如下:
6.2.4 局部数据结构测试
局部数据结构是为了保证临时存储在模块内的数据。 模块错误的根源往往是局部数据结 构,表现的形式主要有以下几点: (1)局部数据结构测试最常见的积累错误; (2)不适合或者不相容的类型说明; (3)变量无初值; (4)变量初始化或者缺省值有错; (5)不正确的变量名或不正确的截断; (6)出现上溢、下溢或地址异常。
2
(1)调用其他模块时所给的输入参数与模块的形式参数在个数、属性、顺序上是否匹 配? (2)调用其他模块时所给的实际参数的个数是否与被调用模块个数相同? (3)调用其他模块是所给实际参数的属性是否与被调模块属性相匹配? (4)输入的实际参数与形式参数的个数是否相同? (5)输入的实际参数与形式参数的属性是否匹配? (6)输入的实际参数与形式参数的量纲是否一致? (7)是否仅做输入用的形式参数? (8)模块中定义的变量是否与全程变量的定义一致? (9)数据库的 OPEN/CLOSE 语句是否正确? (10)格式说明与输入输出语句是否匹配? (11)缓冲区大小与记录长度是否匹配? (12)文件使用前是否已经打开? (13)是否处理了输入/输出错误? (14)在结束文件处理时是否关闭了文件?
6.1 单元测试的概述
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6.2.5
路径测试
路径测试对模块中重要的执行路径进行 测试,路径错误主要是由错误的计算,不 正确的比较或者不正常的控制流导致。
软件测试技术研究组· 中国信息大学
6.2.6
边界条件测试
边界条件测试是单元测试中最重要的一项任 务。边界条件测试是单元测试的一个部分。边界 测试执行的好,可以大大提高程序的质量。边界 测试要注意以下容易出现错误的因素:
软件测试技术研究组· 中国信息大学
6.2.8
代码书写规范检查。 代码书写规范检查。
代码书写规范应考虑下列因素:
(1) 模块设计程序框架流程图; (2) 代码书写规范,对齐方式; 2 (3) 代码的注释; (4) 参数类型,数据长度,指针,数组长度 大小; (5) 输入输出参数和结果。
软件测试技术研究组· 中国信息大学
• •
6.8.5 自动化单元测试案例 • 其它实际操纵部分内容详见本书第 6.85章节 章节
请您解答: 1. 简述单元测试的目的。 2. 简述单元测试的主要任务。 3. 单元测试主要需要测试哪8点? 4. 局部数据结构测试主要表现形式是哪6个 方面? • 5. 边界条件测试主要测试的是哪3点? • • • • •
软件测试技术研究组· 中国信息大学
6.1.2
单元测试所需文档资料
单元测试所需文档资料有:
★系统需求说明书; ★系统功能说明书; ★系统测试说明书; ★测试大纲。
软件测试技术研究组· 中国信息大学
6.2
单元测试的主要任务
单元测试的主要任务有:程序语法检查、 程序逻辑检查、模块接口测试、局部数据 结构测试、路径测试、边界条件测试、错 误处理测试、代码书写规范检查。
软件测试技术研究组· 中国信息大学
6.2.3
模块接口测试
模块接口测试是单元测试的第一步,模 块接口是·模块内与模块外联系的关键部位。 当模块通过外部调用时,数据必须能够正 确流入,当模块结束问题的处理返回调用 模块时,数据必须能够正确流出,这样, 模块才能完成它的功能。
软件测试技术研究组· 中国信息大学
• 当然还有其它一些可能会导致我们开发进度,工 作质量的问题,在此我们不作讨论。
• • •
• • •
选择单元测试自动化工具我们需要了解我们的测试环 境、待测系统类型、开发语言等等。如: 1)基于java语言开发的软件(包括 C/S 及B/S架构的 软件),我们可以选择免费开源的Junit 测试工具来进行 测试。Junit用于编写和运行可重复的测试。 2)基于C++ 语言开发的软件我们可以选择适用C++ Test 进行测试。C++ Tes 是Parasoft针对C/C++的一款自 动化测试工具。C++test支持编码策略增强,静态分析, 全面代码走查,单元与组件的 测试,为用户提供一个实 用的方法来确保其C/C++代码按预期运行。 C/C++ 3)基于微软C# .net框架开发的软件系统我们可以使 用.net unit 测试工具来测试 .netunitye 是基于Nunit系列的 单元测试软件之一,如果您有兴趣了解,请自行查阅资料。 单元测试工具种类繁多,我们再此就不一一列举。 在选择单元测试工具时,应根据实际情况来进行选择。 要考虑一些资金,测试进度等等因素。
谢谢
软件测试技术研究组· 中国信息大学
6.8.1单元测试现状 6.8.1单元测试现状
• 现在很多公司的开发人员都知道单元测试, 也“认为”单元测试有必要进行,但绝大 多数开发人员都执行单元测试,原因是什 么呢?
• 我个人总结了如下几点原因: • 很多程序员认为单元测试属于测试工作,应该由测试人员 来完成,所以单元测试不属于自己的职责范围内; • 单元测试是一种对代码的测试开发过程中开发工具的编译 检验足够了,不需要单独进行独立的测试; • 测试用例编写过于麻烦,单元测试工作可有可无; • 开发部门领导并未要求进行单元测试,写的每一个函数或 方法(Function)能够正常完成功能即可; • 单元测试最后结果并不能作为一种功绩。因单元测试结果 交由测试部门; • 很多开发人员在开发过程中,从未尝试过完整贯彻一次单 元测试,没有单元测试的经验; • 人工编写用例进行测试的概念一直在开发人员脑海中挥抹 不去,很多开发人员不了解使用自动化测试工具进行单元 测试。 • 以上误区是造成开发人员对单元测试认识不准确的原 因,还有一种就是人性的心里误区很多开发人员明明知道 单元测试能让以后省不少心,但他们宁愿使用进行单元测 试时间去敲代码开发。
6.8.3自动化单元测试中需要注意的问题 6.8.3自动化单元测试中需要注意的问题
• • • • • • • 任何测试的执行都需要按照测试计划来操作,测试计 划可以有效预防计划的风险,保障计划的顺利实施。 执行自动化单元测试的相关人员需要注意如下几点问 题: 根据项目开发计划及测试计划来进行测试工作; 开发人员要知道单元测试的目标有哪些; 对于没有测试经验的程序员应主动向有经验的前辈学习; 对于测试工具的掌握要保持在会用水平,并能举一反三学 习同类其他测试工具。 要走出开发人员不进行测试的误区;
第6章 单元测试的实用技 术
本章重点讨论以下内容: 本章重点讨论以下内容
– 单元测试的概述; – 单元测试的主要任务; – 单元测试的步骤; – 单元测试常用的工具。
软件测试技术研究组· 中国信息大学
6.1 单元测试的概述
单元测试是一种验证行为。程序中的每 一项功能都应测试。作为单元测试,需要 考虑以下内容。
软件测试技术研究组· 中国信息大学
6.1.1 单元测试目的
(1)检查单元模块内部的错误,为软件的评审验收提供 依据。 (2)单元测试是以程序设计说明书和之前所作的测试数 据(正常的和错误的)为指导,测试模块内重要的路径, 以检查出错误; (3)检验信息能否正确地流入和流出单元; (4)在单元测试工作过程中,其内部数据能否保持其完 整性,包括内部数据的形式、内容及相互关系不发生错 误,也包括全局变量在单元中的处理和影响。 (5)在为限制数据加工而设置的边界处,能否正确工作。 (6)单元的运行能否做到满足特定的逻辑覆盖。 (7)单元中发生了错误,其中的出错处理措施是否有效。
软件测试技术研究组· 中国信息大学
6.2.1
程序语法检查
程序语法从两个方面进行检查:一是通 过编译语言对程序进行检查;二是通过人 工检查。
图5-1 语法错误表
软件测试技术研究组· 中国信息大学
6.2.2
程序逻辑检查
• 序逻辑检查主要是检查程序的逻辑结构是 否正确? • 程序中所使用的循环语句的上下项以及循 环次数是否有问题? • 函数或子模块是否有自我调用问题?
6.7 单元测试的人工测试实训和操作 方法
• 6.1~6.6节的内容主要是介绍了软件测试中 有关单元测试的一些实用技术,下面我们 就要进入实际的动手操作环节。
• 其它实际操纵部分内容详见本书第 6.7章节 章节
6.8单元测试的自动化测试实训操作方法 6.8单元测试的自动化测试实训操作方法
• 本章前面介绍了单元测试的目的、单元测试的主要任务及 单元测试的步骤,了解单元测试这些基本点之后如何才能 使用自动化测试工具进行单元测试呢? • 在学习了解这些内容之前我们需要了解一些问题,主要问 题如下: 自动测试在单元测试中是否适用; • 如何选择合适的单元自动化测试工具; • 单元自动化工具如何使用; • 使用自动化工具进行单元测试需要注意哪些问题; • 自动化单元测试的重点及工作有局部数据结构是为了保证临时存储在模块 内的数据。模块错误的根源往往是局部数据结 构,表现的形式主要有以下几点: 1 (1)局部数据结构测试最常见的积累错误;
(2)不适合或者不相容的类型说明; (3)变量无初值; (4)变量初始化或者缺省值有错; (5)不正确的变量名或不正确的截断; (6)出现上溢、下溢或地址异常。
6.8.2选择适用的单元测试工具 6.8.2选择适用的单元测试工具
• 进行测试,当然,我们可以选择进行人工测试, 任何软件都可以进行人工测试,毕竟软件都是人 工堆敲代码砌起来的,但是使用人工进行测试你 有没有想过其中一些问题,如:
– – – – 回归性问题; 效率问题; 覆盖率问题; 数据可重用性。
6.6 单元测试的测试用例
• 单元测试的测试用例是软件测试的重中之重。我 们一般依据测试条件编写测试用例。用例的个数 为2n -1个。为了说明怎样设计测试用例,我们用 下面的一个例子说明之。其中,(0,0,0)组,表 示不输入任何内容,在实际的测试过程中,我们 没有必要编写这组测试用例,所以本例子的实际 测试用例为23 -1=7个。对于单元测试中所要编写 的测试用例,请按照本例子的做法,依此类推, 如有N个查询条件,则制作的测试用例个数就有 2n -1个。
6.8.4自动化单元测试工作重点 6.8.4自动化单元测试工作重点
• • • 单元测试基本点及其如何进行单元测试我们已经了解,下面来答 大致说一些使用自动化进行单元测试工作中的重点。 单元测试中单元模块的选择 单元测试基于源码的白盒测试,如何有效的使用测试工具进行单元测 试是我们测试工作中需要特别注意的问题,不同于人工测试,自动化 测试的执行需要工具消耗计算机系统资源进行测试,如果一次性执行 大量测试,不便于测试的记录及测试的执行。所以推荐以类为最小单 元模块进行单元测试。 测试用例数据的准备 任何测试用例的数据准备都是一个令人头疼的问题,进行白盒测试时 一般都需要根据路径、边界值、编码流程来进行测试用例数据的准备。 假如,您所选择的测试工具能够自动生成测试用例推荐使用工具自动 生成,然后再其自动生成用例的基础上进行编辑强化测试脚本。
6.3
单元测试的步骤
单元测试是对每个程序的单体调试。主 要有以下几步:
• 程序语法检查; • 程序逻辑检查。