软件测试之如何编写单元测试用例

qftesting qftesting     2023-01-15     631

关键词:

单元测试是以程序设计说明书为指导,测试模块范围内的重要控制路径,以揭露错误。

当程序编好以后,将它录制在媒体上,或者直接由终端键盘输入到机中进行调试。测试的相对复杂性和所发现的错误受到单元测试所限定的范围的限制。它在执行的过程中紧密的依照程序框架对模块进行测试(调试),测试包含入口和出口的参数,输入和输出信息,错误处理信息,部分边界数值测试。需要在6个方面对所测模块进行检查。

 

1模块接口测试

模块接口测试是单元测试的基础当模块通过外部设备进行输入/输出操作时只有在数据能正确流入、流出模块的前提下,模块才能完成的功能

模块接口测试应考虑下列因素:

★ 调用其他模块时所给的输入参数与模块的形式参数在个数、属性、顺序上是否匹配;

★ 调用其他模块时所给实际参数的个数是否与被调模块的形参个数相同; 

★ 调用其他模块时所给实际参数的属性是否与被调模块的形参属性匹配; 

★ 调用预定义函数时所用参数的个数、属性和次序是否正确; 

★ 输入的实际参数与形式参数的个数是否相同;

★ 输入的实际参数与形式参数的属性是否匹配; 

★ 输入的实际参数与形式参数的量纲是否一致; 

★ 是否修改了只做输入用的形式参数;

★ 是否存在与当前入口点无关的参数引用; 

★ 是否修改了只读型参数; 

★ 对全程变量的定义各模块是否一致; 

★ 是否把某些约束作为参数传递。 

★ 输出给标准函数的参数在个数、属性、顺序上是否正确;

★ 限制是否通过形式参数来传送

★ 文件属性是否正确;

★ OPEN/CLOSE语句是否正确; 

★ 格式说明与输入输出语句是否匹配; 

★ 缓冲区大小与记录长度是否匹配; 

★ 文件使用前是否已经打开; 

★ 是否处理了输入/输出错误; 

★ 输出信息中是否有文字性错误

★ 在结束文件处理时是否关闭了文件

 

 2局部数据结构测试

局部数据结构是为了保证临时存储在模块内的数据在程序执行过程中完整、正确的基础。模块的局部数据结构往往是错误的根源力求发现最常见的几类错误:

★ 不合适或不相容的类型说明; 

★  变量无初值; 

★  变量初始化或省缺值有错; 

★  不正确的变量名(拼错或不正确地截断); 

★   出现上溢、下溢和地址异常。 

 

3路径测试

应对模块中重要的执行路径进行测试。由于错误的计算、不正确的比较或不正常的控制流而导致执行路径的错误。路径错误应考虑下列因素:

★ 运算的优先次序不正确或误解了运算的优先次序;

★ 运算的方式错,即运算的对象彼此在类型上不相容;

★ 算法错;

★ 初始化不正确;

★ 浮点数运算精度问题而造成的两值比较不等;

★ 关系表达式中不正确的变量和比较符号表示不正确

★ 不正确地多循环一次或少循环一次;

★ 错误的或不可能的循环终止条件;

★ 当遇到发散的迭代时不能终止的循环;

★ 不适当地修改了循环变量等

 

4边界条件测试

边界条件测试是单元测试中最重要的一项任务。软件经常在边界上失效,边界条件测试是一项基础测试,也是后面系统测试中的功能测试的重点,边界测试执行的较好,可以大大提高程序健壮性。边界条件测试应考虑下列因素:

★ 程序内有一个n次循环,n次循环1~n, 出错0~n;

★ 小于、小于等于、等于、大于、大于等于、不等于确定的比较值出错

★   出现上溢、下溢和地址异常。

 

5错误处理测试

  比较完善的模块设计要求能预见出错的条件,并设置适当的出错处理,以便在一旦程序出错时,能对出错程序重做安排,保证其逻辑上的正确性。这种出错处理也应当是模块功能的一部分。错误处理测试应考虑下列因素:

★ 出错的描述难以理解;

★ 出错的描述不足以对错误定位,不足以确定出错的原因;

★ 显示的错误与实际的错误不符;

★ 对错误条件的处理不正确

★  异常处理不当。         

 

 6.代码书写规范

代码书写规范应考虑下列因素:

★ 模块设计程序框架流程图;

★ 代码书写规范,对齐方式;

★ 代码的注释;

★ 参数类型,数据长度,指针,数组长度大小;

★ 输入输出参数和结果。

单元测试是对每个程序的单体调试。主要有以下几步:

程序语法检查;

程序逻辑检查。

在程序的逻辑检查之前,首先需要制作测试数据;即假设一些输入数据和文件数据。测试数据直接影响了程序的调试工作,所以制作的数据应该满足以下几个条件:

数据应能满足设计上要求的上下限及循环次数;

数据应满足程序中的各种检验要求的错误数据;

数据应能适宜于人工对程序的检查工作。

测试数据的内容包含4个方面:

正常的数据

不同的数据

错误的数据

大量的数据

通过以上不同角度的数据检验,证明程序逻辑是对的,程序的调试也就结束了。

在程序测试期,评价模块的五个主要特性是:

★ 模块接口;

★ 局部数据结构;

★ “重要”的执行路径;

★ 错误处理路径;

★ 影响上述几点的界限条件。

在其它任何测试开始之前,需要测试横穿模块接口的数据流。如果数据不是正确地进入和退出,其它的测试就谈不上。

在程序测试中接口测试的清单如下:

⑴ 输入参数的数目是否等于变元的数目

⑵ 参数与变元的属性是否匹配

⑶ 参数与变元的单位是否匹配

⑷ 传送给被调用模块的变元数是否等于参数的项目

⑸ 传送给被调用模块的变元属性是否同参数属性一致

⑹ 传送给被调用模块的变元单位是否同参数的单位一致

⑺ 属于内部的函数属性数目及变元次序是否正确

⑻ 对参数的任何访问是否与当前的入口点无关

⑼ 输入是否改动变元

⑽ 跨模块的全程量定义是否相容

⑾ 限制是否作为变元来传送

⑿ 参数是否被重复定义

 

表 测试说明书

 

程序名

 

功能名

 

调试日期

测试结果

 

 

 

 

 

 

数据制作方法:

测试方法:

测试问题:

                         .单体程序测试问题

                         .功能程序测试问题

                         .子系统程序测试问题

                         .系统测试问题

如何使用 Jasmine 为以下 javascript 函数编写单元测试用例

】如何使用Jasmine为以下javascript函数编写单元测试用例【英文标题】:HowtowriteUnitTestCaseforbelowjavascriptfunctionusingJasmine【发布时间】:2019-04-1303:24:37【问题描述】:如何使用Jasmine为下面的javascript函数编写单元测试用例?functionGetURL... 查看详情

为 Preact 编写单元测试用例

...相同的用途,但我每次都会遇到错误。谁能推荐一些关于如何在Preact上编写单元测试用例的博客或教程?【问题讨论】:什么错误给了你?现在我正在研究使用酶,因为第3版已经 查看详情

软件测试之测试用例编写及编写规范

一、什么是测试用例    为实施测试,向被测试系统所提供的输入数据,操作或各种环境设置以及期望结果的一个特定的集合  就是解决什么,怎么解决和如何衡量的问题二、测试用例编写规范   主要分为三大部分... 查看详情

如何使用 Kafka Streams 为应用程序编写单元测试用例

】如何使用KafkaStreams为应用程序编写单元测试用例【英文标题】:HowtowriteunittestcaseforapplicationusingKafkaStreams【发布时间】:2021-08-2114:52:06【问题描述】:我们正在构建一个将使用KafkaStreams的应用程序。我们正在寻找示例示例,该... 查看详情

如何设计单元测试用例

如何编写单元测试用例(白盒测试)。一、单元测试的概念        单元通俗的说就是指一个实现简单功能的函数。单元测试就是只用一组特定的输入(测试用例)测试函数是否功能正常,并且返回了正... 查看详情

如何为 JWT 策略编写单元测试用例

】如何为JWT策略编写单元测试用例【英文标题】:HowtowriteunittestcaseforJWTstrategy【发布时间】:2020-09-1909:05:55【问题描述】:我是新来的passport.js,并试图涵盖我的JWT策略的单元测试用例。任何人都可以建议如何做到这一点?//Setup... 查看详情

python单元测试之unittest框架使用总结

...行正确性检验的测试工作。比如对于函数abs(),我们可以编写的测试用例为:(1)输入正数,比如1、1.2、0.99,期待返回值与输入相同(2)输入复数,比如-1、-1.2、-0.99,期待返回值与输入相反(3)输入0,期待返回0(4)输入非... 查看详情

如何编写 OCUnit 测试用例

】如何编写OCUnit测试用例【英文标题】:HowtowriteOCUnitTestCase【发布时间】:2013-01-1806:47:07【问题描述】:我想使用Apple的默认SenTestingKit为以下方法编写单元测试:-(NSDictionary*)getValueTagsreturn_tags;-(NSString*)getFlagNSString*jo=@"";for(NSString... 查看详情

如何编写脚本自动运行androidstudio测试用例

测试用例是什么,测试用例其实就是一段普通的程序代码,通常是带有期望的运行结果的,测试者可以根据最终的运行结果来判断程序是否能正常工作。单元测试是什么,单元测试是指对软件中最小的功能模块进行测试,如果软... 查看详情

如何编写单元测试?

】如何编写单元测试?【英文标题】:HowtowriteaUnitTest?【发布时间】:2012-02-0319:28:48【问题描述】:我有一个Java类。怎么unittest呢?在我的例子中,我有一个类进行二进制求和。它需要两个byte[]数组,对它们求和,然后返回一个... 查看详情

jmeter接口测试系列之测试用例编写和调用

在使用Jmeter进行接口测试时,首先需要根据接口定义,编写响应的接口测试用例,在编写接口测试用例时,我们根据测试的侧重点不同,使用不同的方式编译测试用例。一种是:整个请求参数作为一个变量,进行测试执行;一种... 查看详情

java示例代码_为此方法编写单元测试用例

java示例代码_为此方法编写单元测试用例 查看详情

如何在 Spring Boot 应用程序中为带有 @Configuration 注释的类编写单元测试用例

】如何在SpringBoot应用程序中为带有@Configuration注释的类编写单元测试用例【英文标题】:HowtowritetheunittestcasefortheClasseswhichareannotatedwith@ConfigurationinSpringBootapplication【发布时间】:2020-05-2619:08:47【问题描述】:我有一个配置类,它... 查看详情

我们如何为嵌套函数编写单元测试用例(Jasmine)?

】我们如何为嵌套函数编写单元测试用例(Jasmine)?【英文标题】:HowdowewriteUnittestcases(Jasmine)fornestedfunctions?【发布时间】:2017-05-2902:51:47【问题描述】:我正在为以下场景编写一个测试用例。代码覆盖率没有完全覆盖。不知道... 查看详情

如何在 Angular 7 中使用 Karma/Jasmine 为 App_Initializer 编写单元测试用例

】如何在Angular7中使用Karma/Jasmine为App_Initializer编写单元测试用例【英文标题】:howtowriteunittestcasesforApp_InitializerusingKarma/Jasmineinangular7【发布时间】:2019-06-3002:41:22【问题描述】:我已经在我的app.module.ts文件中导入了APP_INITIALIZER... 查看详情

unittest单元测试框架之测试套件(代码片段)

1.测试套件(注意:测试用例先添加先执行,后添加后执行,由此组织与设定测试用例的执行顺序)addTests:添加多个测试用例addTest:添加单个测试用例importunittestfromUnittestDemo.test_mathfuncimportTestMathFuncif__name__=="__main__":  suite=uni... 查看详情

Spring Boot:如何为删除其余模板编写单元测试用例

】SpringBoot:如何为删除其余模板编写单元测试用例【英文标题】:Springboot:Howtowriteunittestcasefordeleteresttemplate【发布时间】:2020-11-2120:51:14【问题描述】:我正在尝试为HttpHandler类编写单元测试用例,该类具有用于删除的其余模板... 查看详情

软件测试的分类&测试用例的设计&如何编写测试用例

...、需求分析3、软件设计(明确怎么做!)4、软件编码5、软件测试6、运行维护测试生命周期:单元测试:一般是开发完成时集成测试:单元测试之后,单元之间接口是否正确,数据是否正常传递。比如说注册和充值两个功能是... 查看详情