单元测试过程定义研究

发表于:2010-4-06 13:37

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:寻找出路的苍蝇(Javae    来源:51Testing软件测试网采编

  自述:论述单元测试文章已经很多很多了,但是单元测试是否已经真正成为软件开发过程中不可或缺的一个重要活动呢?我不知道其他公司的情况如何,我知道起码在我们公司还不是的,目前我们基本上还处于没有任何单元测试的水平上。而这种情况带来的痛苦实在是让人心惊胆战,我不知道自己写的代码什么时候就会蹦出个Bug来挑战自己的神经。本文是我为了推动单元测试在公司内的普及所写的一篇文章,我对单元测试的认识基本都来自网上,也有部分是我和我的同事们在平常工作中认识到的。本文没有多少创新的观点,贴出来是希望能得到做过单元测试推广工作的朋友们的建议,也希望为那些需要做单元测试推广工作的朋友们提供一点帮助。

  1、概述

  1.1    单元测试概述

  所谓单元测试,是指对软件设计的最小单位,进行正确性检验的测试工作。而检验的方法,一般来说是由开发人员编写一小段测试代码,根据被测目标代码的应用场景,设计拥有合理覆盖度的输入条件,调用执行目标代码,然后判断输出结果是否与预期一致。被测试目标代码一般应具体到类的方法层面上。

  总之,单元测试是一个方法层级上的测试,单元测试也是最细粒度的测试,用于测试一个类的每一个方法都已经满足了方法的功能需求。

  单元测试的目的在于发现目标代码中可能存在的错误。单元测试一般与编码同步进行,以便及时发现编码过程中可能存在的缺陷并使其尽早得以修正。当然,在开发后期也可以开展单元测试活动,用以保证代码质量,支持后续的代码重构。

  在现代软件开发周期中,以拥抱需求变化、倡导快速开发等理念日益获得业界重视的敏捷开发过程十分推崇单元测试,已经把单元测试作为贯穿整个开发周期的一个重要的开发活动。在敏捷开发过程中,有持续集成和渐进提交的方法论,已经总结出了非常好的单元测试理论和实践。如TDD实践的提出,将单元测试提升到与需求分析一致的地位,直接弱化设计阶段,它认为可以通过单元测试活动来驱动整个开发过程。

  注:此处参考袁光东的文章《程序员为什么不写单元测试?》

  1.2    本文档目的

  阐明单元测试的重要意义,定义单元测试的实施过程,依据公司的OSSP规范,对OSSP中与单元测试有关的论述进行补充,积极探索改进软件开发过程的方法,为公司OSSP规范的完善和进化提供有益支持。

  2、公司的OSSP规范

  2.1    OSSP概述

  OSSP是指Organization’s Set of Standard Process,即组织标准软件过程,描述组织中所有项目的软件开发过程中必须满足的一些需求。OSSP的目的是在组织的各项目中建立起公共过程,支持过程的度量、持续性和改进。

  公司已经通过CMMI3认证,因此也已经建立起一套适合公司实际情况的OSSP规范,对公司所有项目的研发过程进行了明确划分和定义,并同时提出了对各项活动过程进行裁剪的指导建议。其中涉及单元测试的部分有如下两个过程:

  ① 测试过程

  在测试(Test)过程中定义了单元测试的活动,指出其目的是:对软件各模块进行单元测试,寻找并改正缺陷,保证软件质量;并指出单元测试一般由开发人员完成,制定开发计划时应该考虑包含实施单元测试的测试计划;同时还规定了单元测试活动的输出是《单元测试检查表》。

  ② 技术解决过程

  该过程共分成五个子过程,“编码与单元测试”是最后一个子过程,其中明确要求“对每个单元、关键类、关键算法、关键业务进行单元测试”。

  下面我们来详细分析一下这两个过程对单元测试的论述。

  2.2    测试过程

  2.2.1    测试过程对单元测试活动的论述

  目的(Purpose)

  对软件各模块进行单元测试,寻找并改正缺陷,保证产品质量。单元测试一般由开发人员来完成。

  角色和职责(Roles and Responsibility)

  角色      职责

  项目经理  制定单元测试计划。

  开发人员  编写测试用例,执行测试,修改错误。

  进入条件(Entry Criteria)

  * 按测试计划的安排,项目进行到单元测试阶段。

  * 程序可进行测试。

  活动流程图(Activity Flow Diagram)

  任务描述(Task Description)

  ① 制定单元测试的测试计划,可以包含在项目开发计划中;

  ② 开发人员首先撰写单元测试检查表(测试用例)。

  ③ 开发人员根据“单元测试计划”和相应的“单元测试检查表”来测试同伴或自己的代码;

  ④ 记录测试结果,分析测试结果,对Bug进行纠正并记录。

  ⑤ 在单元测试结束时做成“单元测试检查报告”。

  输出(Outputs)

  * 《单元测试检查表》

  2.2.2    测试过程对单元测试活动论述的不足之处

  * 进入条件描述比较模糊

  理论上,编写单元测试代码应该与编写被测目标代码同步进行,甚至可以先于目标代码编写。笼统地说“按测试计划的安排,项目进行到单元测试阶段”缺少具体的指导意义。

  当然,单元测试也可以在目标代码全部完成之后进行,这主要用于监控目标代码的变动。

  *   该活动更适合对单元模块进行的功能测试

  从活动流程图、任务描述和输出的单元测试检查表中可以发现,此处单元测试更多地遵循功能测试的思路,而不是从代码测试角度来制定本过程。

51/512345>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号