一、单元测试步骤

代码编写完成后的单元测试工作主要分为两个步骤:

  1. 人工静态检查

人工静态检查是测试的第一步,这个阶段工作主要是保证代码算法的逻辑正确性(尽量通过人工检查发现代码的逻辑错误)、清晰性、规范性、一致性、算法高效性。并尽可能的发现程序中没有发现的错误。

  1. 动态执行跟踪

执行待测程序来跟踪比较实际结果与预期结果来发现错误。经验表明,使用人工静态检查法能够有效的发现30%到70%的逻辑设计和 编码错误。但是代码中仍会有大量的隐性错误无法通过视觉检查发现,必须通过跟踪调试法细心分析才能够捕捉到。所以,动态跟踪调试方法也成了单元测试的重点 与难点。

二、人工检查

通常在人工检查阶段必须执行以下项目的活动:

第一、 检查算法的逻辑正确性;确定所编写的代码算法、数据结构定义(如:队列、堆栈等)是否实现了模块或方法所要求的功能。

第二、 模块接口的正确性检查;确定形式参数个数、数据类型、顺序是否正确;确定返回值类型及返回值的正确性。

第三、 输入参数有没有作正确性检查;如果没有作正确性检查,确定该参数是否的确无需做参数正确性检查,否则请添加上参数的正确性检查。经验表明,缺少参数正确性检查的代码是造成软件系统不稳定的主要原因之一。

第四、 调用其他方法接口的正确性;检查实参类型正确与否、传入的参数值正确与否、个数正确与否,特别是具有多态的方法。返回值正确与否,有没有误解返回值所表示 的意思。最好对每个被调用的方法的返回值用显湿代码作正确性检查,如果被调用方法出现异常或错误程序应该给予反馈,并添加适当的出错处理代码。

第五、 出错处理;模块代码要求能预见出错的条件,并设置适当的出错处理,以便在一旦程序出错时,能对出错程序重做安排,保证其逻辑的正确性,这种出错处理应当是 模块功能的一部分。若出现下列情况之一,则表明模块的错误处理功能包含有错误或缺陷:出错的描述难以理解;出错的描述不足以对错误定位,不足以确定出错的 原因;显示的错误信息与实际的错误原因不符;对错误条件的处理不正确;在对错误进行处理之前,错误条件已经引起系统的干预等。

第六、 保证表达式、SQL语句的正确性;检查所编写的SQL语句的语法、逻辑的正确性。对表达式应该保证不含二义性,对于容易产生歧义的表达式或运算符优先级 (如:《 、=、 》、 &&、||、++、 --等)可以采用扩号“()”运算符避免二义性,这样一方面能够保证代码的正确可靠,同时也能够提高代码的可读性。

第七、 检查常量或全局变量使用的正确性;确定所使用的常量或全局变量的取值和数值、数据类型;保证常量每次引用同它的取值、数值和类型的一致性。

第八、 表示符定义的规范一致性;保证变量命名能够见名知意,并且简洁但不宜过长或过短、规范、容易记忆、最好能够拼读。并尽量保证用相同的表示符代表相同功能,不要将不同的功能用相同的表示符表示;更不要用相同的表示符代表不同的功能意义。

第九、 程序风格的一致性、规范性;代码必须能保证符合企业规范,保证所有成员的代码风格一致、规范、工整。例如对数组做循环,不要一会儿采用下标变量从下到上的 方式(如:for(I=0;I++;I<10)),一会儿又采用从上到下的方式 (如:for(I=10;I--;I>0));应该尽量采用统 一的方式,或则统一从下到上,或则统一从上到下。建议采用for循环和While循环,不要采用do{}while循环等。

第十、 检查程序中使用到的神秘数字是否采用了表示符定义。神秘的数字包括各种常数、数组的大小、字符位置、变换因子以及程序中出现的其他以文字形式写出的数值。 在程序源代码里,一个具有原本形式的数对其本身的重要性或作用没提供任何指示性信息,它们也导致程序难以理解和修改。对于这类神秘数字必须采用相应的标量 来表示;如果该数字在整个系统中都可能使用到务必将它定义为全局常量;如果该神秘数字在一个类中使用可将其定义为类的属性(Attribute),如果该 神秘数字只在一个方法中出现务必将其定义为局部变量或常量。

第十一、 检查代码是否可以优化、算法效率是否最高。如:SQL语句是否可以优化,是否可以用1条SQL语句代替程序中的多条SQL语句的功能,循环是否必要,循环中的语句是否可以抽出到循环之外等。

第十二、 检查您的程序是否清晰简洁容易理解。注意:冗长的程序并不一定不是清晰的。

第十三、 检查方法内部注释是否完整;是否清晰简洁;是否正确的反映了代码的功能,错误的注释比没有注释更糟;是否做了多余的注释;对于简单的一看就懂的代码没有必要注释。

第十四、 检查注释文档是否完整;对包、类、属性、方法功能、参数、返回值的注释是否正确且容易理解;是否会落了或多了某个参数的注释,参数类型是否正确,参数的限 定值是否正确。特别是对于形式参数与返回值中关于神秘数值的注释,如:类型参数 应该指出 1.代表什么,2.代表什么,3.代表什么等。对于返回结果集(Result Set)的注释,应该注释结果集中包含那些字段及字段类型、字段顺序等。

---------------------
作者:Roda的博客
来源:CSDN
原文:https://blog.csdn.net/weixin_42343424/article/details/90763843
版权声明:本文为作者原创文章,转载请附上博文链接!

[转]如何进行单元测试相关推荐

  1. springboot项目使用junit4进行单元测试,maven项目使用junit4进行单元测试

    首先,maven项目中引入依赖 <dependency><groupId>junit</groupId><artifactId>junit</ar ...

  2. 写算子单元测试Writing Unit Tests

    写算子单元测试Writing Unit Tests! 一些单元测试示例,可在tests/python/relay/test_op_level3.py中找到,用于累积总和与乘积算子. 梯度算子 梯度算子 ...

  3. 写单元测试应该注意什么

    写单元测试应该注意什么 转载于:https://www.cnblogs.com/yishenweilv/p/10899695.html

  4. Atitti mybatis的单元测试attilax总结

    Atitti mybatis的单元测试attilax总结 版本mybatis 3.2.4 /palmWin/src/main/java/com/attilax/dao/mybatisTest.java ...

  5. java 中的单元测试_浅谈Java 中的单元测试

    单元测试编写 Junit 单元测试框架 对于Java语言而言,其单元测试框架,有Junit和TestNG这两种, 下面是一个典型的JUnit测试类的结构 package com.example.dem ...

  6. android 找不到类文件,Android Studio单元测试找不到类文件!

    就是一个方法里面逻辑比较多,查数据库,循环等等.比较复杂,我想测试一下他.是没有返回值的,我想看运行完成之后看看最后里面的变量是不是对的 如果跑整个程序的话就太慢了, 编译,运行, 登陆 等等.太长了 ...

  7. java单元测试启动类配置_Springboot 单元测试简单介绍和启动所有测试类的方法

    最近一段时间都是在补之前的技术债,一直忙着写业务代码没有注重代码的质量,leader也在强求,所有要把单元测试搞起来了 我把单元测试分为两种 一个是service的单元测试,一个是controller ...

  8. JUnit单元测试依赖包构建路径错误解决办法

    JUnit单元测试依赖包构建路径错误解决办法: 选中报错的项目文件夹→右击选择属性(ALT+Enter)→java构建路径→库→添加库→JUnit→选择合适的Junit库版本.

  9. kotlin + springboot 整合redis,Redis工具类编写及单元测试

    参考自:  https://www.cnblogs.com/zeng1994/p/03303c805731afc9aa9c60dbbd32a323.html 1.maven依赖 <?xml ve ...

  10. Java中单元测试中:@BeforeClass,@Before,@Test,@After,@AfterClass中的问题详解

    在Junit4中还有的测试注解有:  @BeforeClass ,@Before,@Test,@After,@AfterClass 1.其中:@BeforeClass,@AfterClass是Juni ...

最新文章

  1. 这 2 种程序员的惊人差距,实在不忍直视...
  2. Python 2 和 3 的区别及兼容技巧
  3. RASPBERRY PI 3 MODEL B 安装使用
  4. 每日英语:Delayed Development: 20-Somethings Blame The Brain
  5. 【CyberSecurityLearning 74】DC系列之DC-5渗透测试
  6. 数据结构:哈希表函数构造和冲突解决方法
  7. C#设计模式(7)-Singleton Pattern
  8. nodejs总结之redis模块
  9. tcp连接python_python网络编程--TCP连接的三次握手(三报文握手)与四次挥手
  10. 2018 初入IT十年(上)----成为一名优秀的程序员
  11. Android 自定义实现倒三角图片
  12. hp计算机如何重装win7,惠普笔记本重装Win7系统过程详解
  13. mac笔记本怎么外接显示屏_Mac电脑外接显示器全攻略
  14. GitHub图片不能正常显示的解决办法
  15. ubuntu 安装jdk 1.8
  16. 百度ocrapi接口的示范
  17. Java练习题-龟兔赛跑
  18. C语言课程设计(1)-学生成绩管理系统
  19. YOLOv7 | 模型结构与正负样本分配解析
  20. html 特殊符号怎么打出来,怎么打出进度条 电脑上的特殊符号怎么打出来的?

热门文章

  1. SSH远程终端连接数问题
  2. FreeBSD 下的 MySQL 备份方案
  3. 基于C#的计时管理器
  4. 6张图,带你深入理解GitOps,真硬核!
  5. 公开征集 | 每个人都可以成为 COSCon'21 主论坛的开源明星
  6. 基于事件驱动架构构建微服务第7部分:在仓储上实现事件溯源
  7. 全部换新-微软复兴.NET,C#10 .NET6 VS2022各个强势!
  8. ABP vNext IOC替换原有Service实现
  9. 【.Net core】EFCore——Code First生成数据库与表
  10. BeetleX之Websocket服务使用