软件测试之单元测试
按测试阶段,软件测试分为单元测试、集成测试、系统测试、验收测试。本篇经验介绍单元测试
操作方法
(01)单元测试的概念:单元测试就是对软件中最小的可测试单元进行检查和验证。
(02)如果一个公司里有一个职位是测试工程师,那么测试工程师一一般情况下是不会接触到单元测试的。单元测试一般是针对代码的,所以一般是由开发人员进行的。一个开发人员开发代码不仅仅是编码,其实是包括编码+单元测试。只有通过了单元测试后,才能将代码提交到SVN等上。所以,单元测试的一个特性是:单元测试一般是针对代码的,所以一般是由开发人员进行的。
(03)为什么要进行单元测试呢?一个BUG隐藏的时间越久,修复这个BUG的代价就越大,根据调查发现,一个BUG最后修复要比开始就修复的成本高10倍。而单元测试是最早发现BUG的一个阶段,也是修改BUG付出代价最小的一个阶段,所以单元测试是非常重要的。
(04)可是,许多软件项目在开发的过程中根本就没有单元测试,甚至许多开发人员从来没有写过单元测试,这是为什么呢?首先比较重要的一点是,现在许多软件项目都特别的强调进度,而单元测试的代码可能比实际项目的代码还要多,除去单元测试确实减少了很多时间,但却是以项目质量以及后续大量的产品维护为代价,其实是得不偿失的;而且,有许多开发人员就是为了写单元测试而写单元测试,就像是应付差事、应付领导,没有意识到单元测试的重要性,根本发现不了问题。种种原因导致,许多软件项目中单元测试都缺失了,这其实是项目管理的责任。
(05)单元测试是一个方法层面的测试,也是粒度最细的测试。用于测试每一个函数、每一个类以及类的每一个方法的功能。举例说明:类似于C的面向过程的,其测试单元为每一个函数,函数有输入数据的参数,也有返回值,我们做单元测试的目的就是保证不同的输入,其输出都正确,函数中的每一个逻辑,比如if、else等逻辑都可以走的到,确保这个函数的健壮性。如果是java这种面向对象,其测试单元就是每一个类,测试这个类包括里面的每一个方法的正确性。
(06)单元测试就是测试一个螺丝钉本身的功能。我们不会去关注这个螺丝钉具体用在什么地方,和其他零件是否能很好的匹配,我们只关心这个螺丝钉本身有没有问题,是否符合需求
(07)单元测试的另一个原则就是尽量保证各个测试用例是相互独立的。比如,我在一个函数A中调用了函数B,现在对函数A进行单元测试,结果出现了问题,那么问题到底是函数A导致的,还是函数B导致的呢?甚至函数B中又调用了函数C,那我还要去了解函数C的实现吗?肯定是不行的。所以我们一般会模拟函数B,写一个模拟b函数,这个函数b将模拟函数B返回一些值给函数A,保证我们写的函数b没有问题(只是返回一个值),从而保证在测试函数A的时候,不会受到函数B的影响。
(08)单元测试有非常多的好处:可以尽早的发现缺陷;有利于重构;简化集成,保证最小单元的稳定性和正确性,之后再搞系统测试的时候,就不需要花时间去确认单元内部是否有问题了;减少文档,现在提倡代码级文档,不需要手动去维护一个专门的文档,浪费大量的时间。
(09)下面简单介绍一下几种单元测试框架JUnit就是一个Java语言的单元测试框架,是一个开放源代码的Java测试框架,用于编写和运行可重复的测试。
(10)Instrumentation,是基于JUnit的一个测试框架,可用来测试android的组件。
(11)NunitNUnit是一个单元测试框架,专门针对于来写的,Nunit和JUnit看起来很像,其实Nunit就是基于JUnit而来的。
(12)PHPUnit看名字就知道,测试PHP的,它是一款轻量级的php测试框架,可以通过命令操控测试脚本,而且功能酷炫,使用起来还特别简单
(13)CppUnit目前针对C++项目的测试工具中,开源的CppUnit是最著名的测试工具之一。使用CppUnit做C++项目的单元测试非常的方便
特别提示
单元测试不可能覆盖全部的路径,不可能无休止的进行测试
-
adobe acrobat教程---5分钟轻松编辑文档
AdobeAcrobat的功能非常强大,只是很多人都没有去深入的使用它。AdobeAcrobat能轻松简化您的工作。它的主要功能有:1.将PDF转换为其它格式;2.编辑PDF;3.文档创建和分析表单;4.创建PDF文件;5.合并文件;6.简化审阅和审批;7.保护PDF文件;8.前后一致地准备文件。9.将...
-
无法定位程序输入点 于动态链接库上怎么办
很多朋友在系统软件启动时出现无法定位程序输入点于动态链接库上,提示的dll文件也是多种多样,那么该怎么去处理无法定位程序输入点于动态链接库上?小编给大家带来了处理方法。操作方法(01)我们首先在网上找一下出错的那个程序,找到目标并进入网站。(02)将下载的dll文件...
-
百度账号如何修改用户名?
最近加入了回享计划的预备班,心想着就尝试一下吧,一个点击便参加了。但是回头一下,怎么这用户名是英文字母跟数字的串和,也没有规律可言,又难记!主要是让别人看见了,这用户名感觉瞬间LOW了不是一点半点哦。就捣鼓着想更改一下,这时才发现原来这账号一旦注册了,用户名是...
-
微信怎么备份手机通讯录?
微信怎么备份手机通讯录?我们生活中有很多地方都会用到通讯录,有时候我们也需要备份通讯里,那么手机中如何备份通讯录呢?本就是为了解决大家的这个问题。iTunes(01)果粉们应该都知道iTunes的功能,它的功能十分强大,不仅可以播放音乐,同时也是可以帮助我们备份手机数据的...