`
ihuashao
  • 浏览: 4721200 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

单元测试之组织保障

阅读更多

这几天一直都在思考新项目中,如何促使公司能够最终真正使用上单元测试。前几天发的一篇《单元测试之关键问题解答 》主要写的是我在实践过程中,针对我遇到的一些非技术问题的思考。后来我看到一篇和我博文一样标题的文章《单元测试之关键问题解答》。拜读了之后,发现他对我的思考方向有些误解。虽然这样,因为这些导致他的失望,我还是表示十分的道歉。补充一下,这篇文章不错,推荐大家阅读一下。

前几天和我的微软同学聊起微软的自动化测试的时候,他向我提到了几个概念BVT(Build Verification Test)和Smoke Test,这让我注意到一个问题,TDD中并没有解决好复杂系统的全面测试问题。要知道大多数人的单元测试概念,是有KENT BECK的测试驱动开发中带来的。但是,要让单元测试完整应用起来,是需要相当的组织结构保障的。

在聊天的过程中,有一点非常值得关注,那就是微软的Software Design Engineer in Test (SDET)角色。据他讲,在微软,SDET和开发的待遇是一样的。显然,微软是非常重视测试的。

在开篇提到的另一篇同名称的文章中,也对单元测试做了诠释,而且从文章来看,他应该是一位咨询师。我这里不说其他,但从单元测试需要咨询,就说明了一个问题,单元测试不是只靠技术和理念的认识就能简单做起来的。

从很多公司的尝试未果,就可以看出,我们相对于微软这类成功应用了自动化测试的公司相比,我们并没有很好的组织保障。让公司里的开发来做测试,一来会感觉实在浪费,二来重复性工作和创造性工作的不一样,会让很多人止步。

这两年,我一直被领导困扰着。他们在思考问题的时候,总是说什么组织结构。而我却更重视技术解决问题。想想看,如果能完全靠技术解决问题,那么就不需要管理那么麻烦了。我相信很多人也会和我有同样的观点。

可是,不要忘了,单元测试的主体是人。大凡是人,就必须有管理。我这里所说的管理,不是领导的管理,而是组织结构的保障。在最近的工作过程中,我逐步意识到了保障的力量。忽视组织保障,团队的工作会变得松散而无方向;反之,大家会知道做什么会得到鼓励,做什么会得到批评。

因此,相对于大讲那些测试理论,最先要解决的是组织结构。这才是保障单元测试成功实施的重要措施。我这里主要是从推动单元测试的工作入手的。因此考虑其组织结构,可以由公司的技术高手成立,辅助项目开发。这个组织在项目相对独立,直接对项目经理负责,而不对项目进度负责。

在组织结构问题中,我重点说明一下进度和质量的问题。大家很容易明白,项目中对进度的反应是如何的强烈。事实上,由于质量的衡量标准相对比较复杂和不明确,导致质量在进度面前,经常容易被牺牲。反过来,我们现在的单元测试就是要从质量入手,因此其组织机构一定要相对独立于保障进度的组织。这样,我们的工作才容易进行下去。

以前单元测试往往是开发的Leader提出来的,但是,Leader往往需要对进度负责,单单从这点来看,单元测试往往会以失败告终是不足为怪的。

在建立了单元测试机构之后,就是建立测试流程规范。在推广初期,并不一定需要建立完备的流程。只需要考虑好几个关键点,让单元测试工作起来。好多机制就是越转越好!否则,再完备的机制也容易因为磨合不好而最终失败。

重要的是,建立单元测试报告的优先处理机制。对于单元测试的失败,应该有考核机制来保障必须在第一时间得到处理。在初期,细节的处理,并没有那些测试理论中讲得那么重要。关键要与你的现有组织磨合顺利。

等到你的项目中的单元测试成功运作之后,再重新考虑如何优化流程。流程和组织一般来说是相辅相成的。可能在优化流程的时候,再修改组织结构。

关于微软如何进行自动化测试,推荐大家阅读我整理转载的《微软的软件测试方法》。

分享到:
评论

相关推荐

    单元测试

    单元测试是一种软件开发过程中的...总的来说,单元测试是保障软件质量的重要手段,它需要结合合适的测试框架、设计原则和工具来实施。通过深入理解并熟练运用这些知识点,开发者可以构建出更加健壮和可靠的软件系统。

    Pragmatic Unit Testing (单元测试之道)

    《Pragmatic Unit Testing(单元测试之道)》是《Paagmatic Starter Kit(程序员修炼三部曲)》系列中的一个重要组成部分,专注于教导开发者如何高效、实际地进行单元测试。单元测试是软件开发过程中的关键环节,它...

    .NET单元测试 《C#单元测试.pdf》和《使用Visual Studio 2005 Team System进行单元测试.pdf》

    在.NET环境中,单元测试可以帮助开发者确保代码的质量,减少错误,提高可维护性,并且为持续集成和持续部署提供保障。这两份PDF文档,即《C#单元测试.pdf》和《使用Visual Studio 2005 Team System进行单元测试.pdf...

    单元测试之道Java版-使用JUnit

    《单元测试之道Java版-使用JUnit》是一本深入讲解如何在Java开发中运用JUnit进行单元测试的专业指南。单元测试是软件开发过程中的重要环节,它能够确保代码的正确性、可维护性和稳定性。JUnit作为Java领域最流行的...

    java单元测试之道

    单元测试之道在于理解和掌握如何有效地编写和组织这些测试,以便它们能有效地服务于整个项目生命周期。 单元测试是对软件中的最小可测试单元进行检查和验证,对于Java来说,这通常是单个方法或类。通过单元测试,...

    数据库单元测试总结~~单元测试

    2. **代码质量保障**:单元测试有助于确保每个组件的功能正确,避免因修改代码而引入的意外错误。 3. **易于调试**:定位问题时,小规模的单元测试比大规模的集成测试更容易复现问题,节省调试时间。 4. **持续集成...

    有效的单元测试.md

    ### 有效的单元测试 #### 单元测试的意义 单元测试是一种软件开发技术,它通过自动化的测试用例来验证软件的各个组成部分(通常是函数或方法)是否按预期工作。单元测试的目标是确保每个代码单元都能独立正确地...

    敏捷开发必要技巧12:单元测试

    “第12章单元测试.pdf”文件很可能包含了更深入的单元测试技术,如测试驱动开发(TDD)和行为驱动开发(BDD),以及如何设计和组织测试用例。TDD强调先编写测试用例,再实现功能代码,而BDD则关注从用户视角描述软件...

    白盒测试单元测试理论精要

    2. **重构保障**:在进行代码重构时,单元测试可以作为安全网,确保改动不会引入新的问题。 3. **团队协作**:团队成员可以依赖于通过单元测试的代码,降低集成风险。 4. **持续集成**:单元测试是持续集成流程的...

    单元测试计划

    单元测试是一种重要的软件质量保证活动,它通过独立地测试软件中的最小可测试单元来验证代码功能的正确性。单元测试计划通常由开发人员和测试人员共同参与,旨在尽早发现和修复错误,提高软件的可靠性和稳定性。以下...

    Go-Golang单元测试快速入门

    Go语言的单元测试基于其标准库中的`testing`包,该包提供了编写、组织和执行测试的基本框架。下面我们将深入探讨`testing`包的使用方法,以及如何编写高效的单元测试。 1. **创建测试文件** - Go的测试文件通常与...

    单元测试与IPlatform

    单元测试通常在开发阶段进行,可以早期发现错误,提高代码质量,并且为后期的维护和重构提供保障。 在【IPlatform】项目中,单元测试的策略可能包括以下几个方面: 1. **覆盖率**:确保测试覆盖了IPlatform中的...

    JUnit—Java单元测试必备工具

    JUnit是Java编程语言中最常用的单元测试框架之一,它为开发者提供了强大的测试支持,使得代码的质量得到保障。单元测试是软件开发过程中的重要环节,通过编写针对代码模块的独立测试用例,可以确保代码功能的正确性...

    jest单元测试教程

    在现代 JavaScript 开发中,单元测试是保障代码质量、稳定性和可维护性的重要手段。Jest 是 Facebook 推出的一款功能强大的 JavaScript 测试框架,它以其易用性、全面的功能和良好的社区支持赢得了开发者们的青睐。...

    软件测试组织与管理及测试系列方法培训

    通过"软件测试组织与管理及测试系列方法培训"的学习,可以提升对软件测试的理解,掌握专业的方法和技巧,从而在实际工作中更有效地保障软件质量。无论是对于个人的职业发展还是团队的整体效能,这样的培训都将带来...

Global site tag (gtag.js) - Google Analytics