[转]如何进行单元测试

一、单元测试步骤

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

  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
版权声明:本文为作者原创文章,转载请附上博文链接!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/285713.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WPF 基础控件之 TabControl样式

其他基础控件1.Window2.Button3.CheckBox4.ComboBox5.DataGrid 6.DatePicker7.Expander8.GroupBox9.ListBox10.ListView11.Menu12.PasswordBox13.TextBox14.RadioButton15.ToggleButton16.Slider 17.TreeView TabControl 实现下面的效果1&#xff09;TabControl来实现动画&…

开发团队测试的难与易

做了多年的研发工程师&#xff0c;在所处的环境中&#xff0c;所接触的开发人员中很少有看重对自己代码进行测试这项工作的。大多研发人员往往是写好了代码运行起来&#xff0c;简单做下测试&#xff0c;甚至不去测试就抛给接口使用者或者质量管理人员。而且理由很充分“没时间…

C语言试题八十八之实现选冒泡排序算法

📃个人主页:个人主页 🔥系列专栏:C语言试题200例目录 💬推荐一款刷算法、笔试、面经、拿大公司offer神器 👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 C语言实现冒…

两个数值交换位置

2019独角兽企业重金招聘Python工程师标准>>> 先说非计算机专业都能理解的。 int a 10; int b 20; 方法一&#xff1a; int c a; a b; b c; System.out.println("a"a",b"b); 方法二&#xff1a; a a b; b a - b; a a - b; System.out…

教你如何在Android 6.0上创建系统悬浮窗

郭霖大神的文章:http://mp.weixin.qq.com/s?__bizMzA5MzI3NjE2MA&mid2650235949&idx1&sn0f7eded67f834d38b02f8872768cb68a&scene0#wechat_redirect今天周二&#xff0c;又该跟大家分享由我执笔的文章了。从之前我写的deep links、通知栏微技巧这两篇文章中&a…

【CC精品教程】任务三:CC刺像控点,提交空三,新建重建项目(三维格网、三维点云、DOM和DSM)

《无人机航空摄影测量精品教程》合集目录(Pix4d、CC、EPS、PhotoScan、Inpho) 【CC精品教程】任务一:CC新建工程、添加照片、相机参数设置、选择坐标系统 【CC精品教程】任务二:导入像控点、差分POS,空三平差权重设置,提交自由空三 主要任务是准确的刺像控点,提交空三,…

官宣.NET 7 预览版5

点击上方蓝字关注我们&#xff08;本文阅读时间&#xff1a;12分钟)今天我们发布了 .NET 7 预览版 5。.NET 7 的这个预览版包括对通用数学的改进&#xff0c;方便了 API 作者&#xff0c;使其更轻松&#xff0c;一个新的 ML.NET 文本分类 API&#xff0c;增加了最先进的深度学习…

[转]Android产品研发(十九)

转载请标明出处&#xff1a;一片枫叶的专栏 上一篇文章中我们讲解了webview中问题集锦&#xff0c;讲解了webview的性能优化、webview种入Cookie信息、activity退出的时候清除webview信息报错、如何通过java代码和js代码相互交互、webview如何下载文件以及腾讯的X5浏览服务等知…

C语言试题八十九之实现插入排序算法

📃个人主页:个人主页 🔥系列专栏:C语言试题200例目录 💬推荐一款刷算法、笔试、面经、拿大公司offer神器 👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 C语言实现现…

【CC精品教程】ContextCapture 10.17安装教程(附CC10.17安装包下载)

《无人机航空摄影测量精品教程》合集目录(Pix4d、CC、EPS、PhotoScan、Inpho) CC10.17相比之前的版本有了好的新的功能和优点,在倾斜摄影测量中有了更多的优势,精度和运行速度有了很大的提升。本文讲解CC的安装,附CC10.17安装包下载,是您航测倾斜摄影测量的入门必备。 文…

centos7 kickstart 使用小结

1、添加参数使网卡名称变为eth 1bootloader --locationmbr --append"net.ifnames0 biosdevname0 rhgb quiet" 2、psize使用说明&#xff1a;修改vg PE16m 默认4m 支持256G磁盘&#xff0c;适当的调整pesize,可以更多的使用磁盘空间 1volgroup Vol1--pesize16384 pv.…

IOS-网络(文件上传)

1 //2 // ViewController.m3 // IOS_0206_文件上传4 //5 // Created by ma c on 16/2/6.6 // Copyright © 2016年 博文科技. All rights reserved.7 //8 9 #import "ViewController.h"10 #define BWFileBoundary "----------BowenKeJi"11 #define…

mac SecureCRT设置

参考&#xff1a; http://www.2cto.com/os/201407/320292.html SecureCRT 设置 1&#xff09;每次登陆都要输入密码&#xff1a; Global Option -> General 取消&#xff1a;Use Keychain前面的勾 2&#xff09;Logon Actions Logon Actions很强大&#xff0c;和python里…

【微服务专题之】.Net6下集成消息队列上-RabbitMQ

微信公众号&#xff1a;趣编程ACE关注可了解更多的.NET日常实战开发技巧&#xff0c;如需源码 请公众号后台留言 源码;[如果觉得本公众号对您有帮助&#xff0c;欢迎关注].Net中RabbitMQ的使用超清观看视频哦~官网链接RabbitMQ代码演示-详细见代码注释&#xff0c;操作看上文视…

[转]总结:Apache/Tomcat/JBOSS/Jetty/Nginx区别 .

总结&#xff1a;Apache/Tomcat/JBOSS/Nginx区别 . 1、Apache是Web服务器&#xff0c;Tomcat是应用&#xff08;Java&#xff09;服务器。Tomcat在中小型系统和并发访问用户不是很多的场合下被普遍使用。Apache支持静态页&#xff0c;Tomcat支持动态的。 2、Jetty:Tomcat内核作…

华为云GaussDB,11.11让企业无后顾之忧

每年11.11大促对于数据库而言都是一场生死考验&#xff0c;如何保障系统的稳定可靠&#xff0c;如何平稳度过业务流量洪峰期&#xff0c;如何高效扩容&#xff0c;成为每个参与活动客户的一大痛点。本文将通过5个常见的大促问题及分析&#xff0c;看看华为云GaussDB是如何解决这…

【CC精品教程】ContextCapture(CC)集群处理环境部署图文教程

《无人机航空摄影测量精品教程》合集目录(Pix4d、CC、EPS、PhotoScan、Inpho) 鉴于CC其三维构建运算的本质,海量数据的解析运算会使用大量的计算机资源,而再好的单台计算机也无法胜过多台计算机的并行运算能力,故而借助局域网内多台计算机设备进行三维构建运算,可以节省大…

Linux-PAM PAM-MySQL的总结

1、理论知识 1.1、PAM模块 1.1.1、PAM的介绍 Pluggable Authentication Modules简称PAM&#xff0c;是一个微缩的可插入认证模块&#xff08;PAM is an acronym for Pluggable Authentication Modules&#xff09; 1.1.2、PAM的结构 1)模块层(PAM服务模块) - PAM结构最底层 作用…

ubuntu下配置jdk(离线压缩包方式)

2019独角兽企业重金招聘Python工程师标准>>> 1&#xff0c;下载jdk压缩包 2、解压后得到名字为jdk1.7.0_21的文件夹&#xff0c;将其复制到 /usr/lib/jvm下&#xff08;需要新建jvm文件夹&#xff09;。3、配置jdk环境变量&#xff1a;在启动终端并输入 gedit /e…

【PhotoScan精品教程】PhotoScan简介、安装教程(附PhotoScan1.4.5安装包下载)

《无人机航空摄影测量精品教程》合集目录(Pix4d、CC、EPS、PhotoScan、Inpho) PhotoScan在无人机航空摄影测量空三运算中,具有运行速度快、精度高等特点。PhotoScan空三运算的结果可以导入CC等进行模型构建。【PhotoScan精品教程】讲解利用PhotoScan软件进行航测内业空三运算…