• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

软件工程师必知的12个单元测试技巧

发布: 2009-5-21 09:44 | 作者: 网络转载 | 来源: 测试时代采编 | 查看: 42次 | 进入软件测试论坛讨论

领测软件测试网 软件工程师必知的12个单元测试技巧

单元测试是敏捷软件开发的一个重要组成部分。这种方法最初由Kent Beck引入,现在已经深入人心在很多企业系统中使用。单元测试可以帮助开发人员降低漏洞数量,减少花费在调试上的时间,有助于开发更健壮更稳定的软件。

    在本篇文章中我们将介绍软件工程师都可以使用的12个单元测试技巧,适用于任何编程语言和编程环境。

1、使用单元测试降低风险

    新手可能会问“为什么我应该编写测试代码?”的确,很多人会这样想:测试工作不是应该由进行验收工作的测试人员来完成吗?这种想法在现代软件工程学中已经没有立足之地。软件团队的目标是开发高质量的软件。无论是个人用户,还是企业用户,已经无法接受上世纪80年代和90年代充满漏洞的软件。

    现在你可以使用丰富的类库资源、Web服务和支持重构及单元测试的综合开发环境,在软件中再出现漏洞就没有任何借口可找了。

    单元测试背后的思想是,为每一个软件单元、模块和构建创建一个测试代码。单元测试让软件持续测试变得很简单;与手动测试不同,你可以轻松的重复执行单元测试。

    随着你的软件规模变大,单元测试部分也随之变大。每一个测试都是系统正常运行的保障。代码中存在漏洞就意味着软件具有潜在风险。通过利用一系列单元测试,开发者可以大大降低漏洞的数量,降低未经实际运行验证的程序的风险。

2、为每一个主要构件编写一个测试用例

    当人们开始使用单元测试时,常常会先问“我应该编写什么测试?”

    人们最初的想法可能是要编写大量的功能测试,也就是对系统不同的功能进行测试验证。其实这种想法这是不对的。正确的做法应该是为每一个主要构件创建一个测试用例。

    测试的重点应该是一个构件。在每一个构件内找到它的所有接口,也就是这个组件对外公开的方法集。然后你才应该为每一个公开的方法编写一个测试。

3、创建抽象测试用例和添加测试工具

    无论任何程序,都有一些共性的东西需要你对其进行测试。那么你首先应该为你的语言寻找一个单元测试。

    举个例子来说,很多Java开发者使用Junit来进行单元测试,它是一个简单但强大的测试框架。它具有一个TestCase类,是所有测试的基类。

    在你的开发环境中增加方便的方法和可用的工具。这样所有你的测试用例可以具有共同的基础构架,维护起来就非常容易。

4、编写敏捷测试

    测试工作非常耗时,因此请确保你的测试是有效的。好的测试应该针对每个模块的核心功能,而不是事无巨细挨个测试。

    举个例子来说,你没有理由来为Java Bean的Setter和getter方法来单独编写测试代码,因为它们肯定会测试中被涉及到的。

    相反,你应该针对软件系统的行为来编写测试代码。你不需要面面俱到;为现在想到的东西先创建测试,然后想到别的再回来增加更多测试。

5、为每一个测试创造干净的环境

    软件工程师们总是很在乎效率,视效率如生命。因此如果你告诉他们,每一个测试需要单独创建的话,他们会认为比较浪费时间。

    然而这一点是非常重要的,如果一个测试因为使用了一些其它测试的老数据而失败,显然这是你最不想发生的事情。因此请确保每一个测试被正确的创建,而不要担心所谓的效率。

    如果你所有的测试具有一个共同的环境,它并不随着测试的运行而改变,那么你可以在你的测试基类中增加一个静态的创建区。

6、使用模拟对象(Mock Objects)进行有效测试

    建立测试并不总是一件简单的事情,在有些时候你的第一感觉往往是没有办法进行测试。

    举个例子来说,如果在你的程序中使用了Amazon Web服务,如何在不影响真实系统的前提下在测试中模仿它呢?

    其实有很多方法可用。你可以创建一些虚假的数据,然后在测试中使用它们。在有用户的系统中,可以创建一系列专门用于测试的账号。

    对一个生产系统进行测试是一件非常危险的做法:如果发生点什么错误,你可能会误删真正的用户数据。一个可行的办法就是使用假数据,又叫做模拟对象(stubs or mock objects)。

    模拟对象实现了特定的接口,但是返回预先定义好的结果。举个例子来说,你可以为Amazon S3创建一个模拟对象,它只从你的本地硬盘中读取预先设置好的数据,而不去使用真实服务数据。

    在对具有很多构件的复杂系统进行测试的时候,模拟对象是非常有用的。在JavaScript中有几个框架可以非常方便的创建模拟对象,其中最出名的是JMock。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

TAG: 单元 技巧 软件工程师

21/212>

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网