• 3
  • 1
分享

  摘要:单元测试(unit testing)是人为规定的最小的被测功能模块,单元测试的质量会直接影响到软件的后期测试,最终在很大程度上影响到产品的质量。测试过程中应该从可自动化,可重复独立的执行。

  单元测试可以说是软件测试的基础单元,单元测试的质量会直接影响到软件的后期测试,最终在很大程度上影响到产品的质量。

  测试成本:在单元测试阶段,某些问题是很容易发现的,如果忽略了单元测试,在后期的测试中所花的成本将成倍的上升。图表摘自<<实用软件度量>>(Capers Jones,McGraw-Hill 1991),这些数据显示单元测试的成本效率大约是集成测试的两倍 系统测试的三倍(参见条形图)。

  单元测试是直接对最小的模块进行测试的,我们都知道盖房子地基是很重要的,而单元测试是所用测试的基础,将单元测试做好,在做集成测试和系统测试将会变的容易很多。

  既然说单元测试如此的重要,那么该如何确保单元测试的质量呢?下面就从几方面进行讲述。

  1、自动化

  单元测试需要能够自动化的执行。应该包含执行测试自动化和检查结果自动化。

  对于单元测试人员,你做的事情将是成天或者日复一日的去执行你所写的单元测试,你要确保你的单元测试是易于调用的。因此要运行单元测试不能比按下按钮或者提示符输入一行的命令来的更复杂。可以将单元测试设置成后台持续的运行,可以用脚本去驱动它运行等等。

  对于这个自动化,需要注意的是任何时候不要引入需要手动去执行的步骤而破坏这个自动化的测试过程。比如说数据库,按钮等,当遇到这些时需要让这些也成为自动化组成的一部分。

  另一方面,要让测试自己是判断pass or fail。如果说测试专门找出一个人去读取测试的输出,在去验证这个用例是否通过,这是我们不希望看到的,浪费了资源不说,对结果判断的准确度也带提高,而且对于后期的回归测试带来很大的不便。所以说自动的检查结果是必不可少的一个环节。

  2、可重复

  对于测试,应该能够随机的执行每一个测试,且其产生的结果都应该保持一致。这就要求你的测试系统不依赖任何的外部因素,独立于周围的环境。

  在必要的时候,在测试中可以引入桩函数,将测试的外界因素隔离,使测试能够独立于开发环境。比如说系统的时间,在测试的不同时刻获取到的时间是不一样的,这是我们不愿意看到的,这时你可以写个函数代替这个系统的时间。如果说你一定要用到一些外界的因素,比如说数据库,这时你该确保数据库不会受到开发环境的影响,是完全由你控制的。

  如果测试结果不具备重复性,你可能对你的测试结果感到惊讶,结果可能是一个随机的值。这时候你无法判断它是不是一个真正的bug,而只是测试本身的问题,这时候会花费大量的时间去追溯测试自身的问题。所以应当确保测试每次执行都有相同的结果。

  3、独立的

  对于单元测试要举要针对性的,并且独立于环境同时与其他测试独立开来。

  在编写单元测试的过程中应该确保一次只测试一个东西,一个测试函数应该专注于产品代码的一个函数、一个类或者合起来实现某一特性/功能的一组函数。

  一个测试函数有可能只测试了一个复杂函数中的一小部分,你可能需要多个测试用例才能测低的验证该函数,当一个测试失败时,你可以定位到bug的位置。

  独立的还意味着不依赖于任何的其他测试,测试可以在任何时刻运行任何一个测试,而不会因为某一个测试的失败而影响到后面的测试。

  综上所述,单元测试是构筑产品质量的基石,我们不要因为节约单元测试的时间不做单元测试或随便做而让我们在后期浪费太多的不值得的时间,我们也不愿意因为由于节约那些时间导致开发出来的整个产品失败或重来!


作者:甘彩凤   

来源:51Testing软件测试网原创

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   以下总结以web测试为例,其他类型测试可参考。  步入正题之前,我提两个问题:  ·在工作中,你们发现“bug”是立马给开发提bug单还是先自己尝试排查一下bug产生的原因呢?  ·提bug单的时候,是怎么描述bug呢?  相信有不少人测试在发现bug之后,立马给开发提了bug,很少去排查bug产生的原因。  在开发准备修复bug的时候,发现测试提的“bug”描述不清,不知道如何复现,只能自己琢磨或者叫QA来演示一遍,最尴尬的是,可能在测试演示完之后,才发现这个并非bug,而是由于QA的不规范导致的。这样就会引起开发的不满,觉得测试在浪费他们的时间。  所以在我们发现问题的时候,首先要做的...
            10 11 2536
            分享
          •   大家都知道,开发人员都会有35岁年龄危机这一说,那么经常和开发人员放在一起比较的测试人员有没有年龄危机这一说呢,今天小编就来说一下近几年发展迅猛的软件测试行业到底有没有年龄危机这一说。要弄清楚这个问题就要知道测试和开发之间的工作到底有什么区别,小编简单总结了以下几点。  从工作内容强度来看  开发人员在项目开发过程和上线之后的人员配比悬殊巨大,比如在开发周期的时候,需要10个人来写代码,但在项目上线后,可能只需要两三个人来维护就可以,国内互联网软件公司开发与测试人员的配比基本一致呈现5:1的形式,人员数量上相差很大,因此相对来说,测试的稳定性要高于开发人员。  再者,开发人员加班强度远远大...
            0 0 584
            分享
          • 光明网乌镇11月9日电(记者孙满桃)在今天下午举行的2022年世界互联网大会乌镇峰会网络法治论坛上,《反电信网络诈骗倡议》(以下简称“倡议”)发布,为建设清朗网络空间贡献力量。随着通讯网络技术的快速发展与应用,电信网络诈骗活动呈高发频发势头,严重侵犯人民群众财产安全,严重侵蚀社会诚信根基,严重破坏社会和谐稳定。为此,倡议提出五点建议:积极参与,构建共建共治新格局;自律自觉,筑牢网络安全新基准;惩防并举,实现网络诚信新高度;提升素养,推进网络伦理新建设;加大宣传,培育全民反诈新意识。其中,倡议指出,要履行主体责任,加强自我约束,促进行业自律,加快数字法治体系建设,强化数据安全和个人信息保护,共筑...
            0 0 869
            分享
          • 01运行1)App安装完成后的试运行,可正常打开软件。2)App打开测试,是否有加载状态进度提示。3)App页面间的切换是否流畅,逻辑是否正确。4)注册  同表单编辑页面  用户名密码长度  注册后的提示页面  前台注册页面和后台的管理页面数据是否一致  注册后,在后台管理中页面提示5)登录  使用合法的用户登录系统  系统是否允许多次非法的登录,是否有次数限制  使用已经登录的账号登录系统是否正确处理  用户名、口令(密码)错误或漏填时能否登陆  删除或修改后的用户,原用户名登陆  不输入用户口令和重复点“确定/取消”按钮,是否允许登录  登陆后,页面中登录信息  页面中有注销按钮  登录超...
            12 12 2082
            分享
          •   为了回馈广大用户对51Testing软件测试网的支持,我们准备了一份价值398元的测试实战课程礼包,只需填写下方链接的行业调查问卷即可免费领取~ 链接:http://vote.51testing.com/   随着公司微服务体系服务越来越多,业务增长越来越迅速,版本迭代越来越快,而且对系统的可用性要求越来越高,传统的手工发布系统的方式已经完全无法满足日常运维的需求了,自动化构建发布的需求越来越强烈,但是自动化发布有个基础的环境,自动化测试,鉴于团队规模不大,测试人员的能力参差不齐,自动化测试我们选择了以开发测试一起搭建的方式,通过轻量级的工具postman进行自动化测试。  测试文件共享 ...
            1 1 1867
            分享
      • 51testing软件测试圈微信