<th id="v9g6b"><track id="v9g6b"></track></th>

  • <em id="v9g6b"><acronym id="v9g6b"></acronym></em>
    <progress id="v9g6b"><pre id="v9g6b"></pre></progress>
    <tbody id="v9g6b"></tbody>
    <button id="v9g6b"><acronym id="v9g6b"></acronym></button>
    <rp id="v9g6b"><ruby id="v9g6b"></ruby></rp>

        <dd id="v9g6b"></dd>

        <em id="v9g6b"></em>

          B/S开发框架测试驱动开发(TDD)指导书(四)

          本指导书详细介绍了敏捷实践——TDD的各个方面。TDD是提升单元测试有效性的工程方法,Web开发框架中遵循测试先行、小步快跑和及时重构的原则,能有效减少过度设计,促进降低开发成本、以及提高软件质量和设计效率。另外,本指导书还对遗留系统的TDD,以及TDD工具的选择给予参考性建议,B/S开发框架并通过大量的实践案例引导你充分体验TDD的魅力。

          旁证博引

          1.1 TDD的成熟度标准

          B/S开发框架TDD的成熟度划分为三个阶段,分别代表不同等级的水平,下面介绍每个阶段,以及当前阶段的困难和解决方法。

          1.1.1  起步阶段

          困难在于转变,大家对理论已经比较了解,但是不能自觉、有意识地去做,缺少成功的经验和尝试的勇气。

          敏捷是要求从code a little, test a little到test a little, code a little的转变(精益与敏捷大师Craig Larman)。而且实际情况是:

          code much, test much

          code much, test a little

          only code, no test

          如果做不到“code a little, test a little”,是很难转到“test a little, code a little”的,这就要求首先提高测试技能(如UT技术)。

          起步阶段,切勿大面积实施TDD,要循序渐进:先从局部功能开始做,先做黑盒测试,跟结对编程相结合。

          既定则严,对选择实施TDD的人和功能要严格要求,督促按照要求执行,同时进行辅导和案例讲解。

          这个阶段的要求:熟练掌握TDD方法,自觉有意识地按照TDD过程进行开发。

          1.1.2  熟练阶段

          B/S开发框架已经掌握TDD方法和过程,这个阶段需要克服的是急于求成。

          往往对TDD充满幻想,期望能够速成,或者希望照搬现成,不愿步步积累。还是想急于看到运行结果,急于看到测试快速通过,追求高通过率、高覆盖率,追求短期效果。

          小规模的程序和演练是有限的,效率和质量是积累出来的,早期无法提高效率,但可以培养自信。

          必须消除幻想,持续循序渐进地跟踪,TDD实施范围可以扩大到所有人和所有模块,仍需要严格检查代码提交情况。

          B/S开发框架中基于对TDD的熟练应用,提升了开发人员的测试设计能力,在进行Story分析写作时,能够充分考虑到Smart化的应用场景,Story写作思路会更加清晰,能够更好的指导后续TDD的开发。

          这个阶段的要求:循序渐进地实施TDD,逐渐覆盖全部场景,不断积累经验和信心。

          1.1.3  巩固阶段

          B/S开发框架对TDD方法和过程已经很熟悉,而且已经全面展开。由于TDD的成本较高,用例多,需求变化快,频繁更改用例和代码,随之带来很大的工作量,实践者往往坚持不下去,容易放弃。

          B/S开发框架TDD的好处是通过精简的测试用例推出简洁的功能代码,如果工作量很大,更新频率很高,说明TDD的方法不正确,策略不合理。比如用例的测试单元划分小到函数,日常没有及时重构,测试用例仍旧以验证为目的而没有引导设计,等等。

          因此,要不断地反思和改进,尝试——>反思——>改进:调整方法和策略——>再实践。

          做TDD的过程中,实现测试用例时,不用过多地考虑验证,因为验证是机械的、自动的。

          这个阶段的要求:能够灵活运用TDD,产品代码精简、结构优良,TDD成为日常开发主要活动。

          1.2 TDD工具

          1.2.1  工具选型依据

          B/S开发框架选择TDD工具需要考虑一下因素:

          1、 选择TDD环境的成本。我们想要能够再一两个小时之内从无到有,把测试环境搭建起来,让一个简单的测试用例执行通过。如果做不到这一点,就证明这个工具太复杂,或者易用性不好。

          2、 编写测试用例的成本。编写测试用例的语言,一定要跟被测代码一直,如果测试代码和被测代码的语法不一样,将很难使用。再测试用例中,要能够方便地构造输入输出,构造桩函数,检查测试结果。

          3、 调试测试用例的成本。测试用例也会出错,因此测试用例需要能够很方便的调试。

          4、 执行测试用例的成本。执行测试用例要易操作、速度快,能够集成到持续集成环境。

          5、 生成测试报告。测试报告最好是一个通用的格式,能够灵活展示。

          6、 统计测试覆盖率。不是必须的,但有找个功能会很不错。

          从语言层面来讲,B/S开发框架开发语言Java基本统一认可使用Junit做单元测试;C++则存在多种选择,业界和公司使用较多的是CPPUnit,从长期发展来看Google Test也许是不错的选择;C语言公司较多使用MTT,或者将CPPUnit、Cxxtest改造使用。虽然C/C++对工具的选择不尽相同,但可以根据相同的原则进行选择:

          l  易使用,工具容易上手,或者有良好的使用基础和充分的技术支持;

          l  成本低,包括单元测试环境的搭建和维护,测试脚本的学习、编写和调试,测试用例的执行等各项成本平均维持在较低水平。

          l  功能强,可提供用于管理和跟踪的各类报表,可与如持续集成、缺陷电子流等其他相关工具对接。

          1.2.2 C/C++测试工具

          C++缺少Java和.Net平台语言的反射机制,所以无法枚举测试方法,必须手工添加,或者使用一些特别的宏,弄得代码非常难看。

          Web开发框架再加一个MockCPP&TestCPP,这是TW公司顾问定制的一个框架,据说集成了CxxTest和GoogleTest的优势,效果怎么样,有待检验。

          再加一个,这是TW公司顾问定制的一个框架,据说集成了CxxTest和GoogleTest的优势,效果怎么样,有待检验。

           

          工具

          评价

          MTT

          采用Python编写测试用例,非常不方便,强烈反对。

          CPP Unit

          CPPUNIT是老牌的、经典的、开源的单元测试框架,有很多同族兄弟,统称xUnit。CPPUNIT是开源框架,有一些插件可以使用,也可以自行开发一些新功能,具有较好的可扩展性,但测试框架需要人工编写。使用时通常引入Mock对象将测试代码与外部隔离开来,但较易污染代码,并患上mock综合症。

          CXX Test

          结构框架相对简单,添加新的测试工作量非常小;无须注册测试用例;可移植性很好;便于装卸;控制异常、崩溃方面的能力也不错;拥有良好的断言功能;支持多种输出方式;支持测试套件。其最大的优点是编译即测试方式,并且可以双击结果行立即定位到相应的源代码,相当吸引人;并且支持多种输出,输出结果较为详细,编写测试简单。但CxxTest需要用到perl对测试代码进行文法扫描,生成可执行代码,需要用到makefile文件(不是必须),准备工作比较麻烦。

          Google Test

          Google觉得现有UT框架不能满足自己需求,便自己开发了一套。差不多是一年前开源的。也是基于xUnit架构的。使用也比较简单,可以在很多操作系统下用。在开源Google Test几个月后,又开源了Google C++ Mocking框架(Google Mock),使用BSD许可。

          MockCPP&TestCPP

          TW公司顾问定制的一个框架,据说集成了CxxTest和GoogleTest的优势。

           

          业界对B/S开发框架各类单元测试工具关注度曲线如下:

          1、 CppUnit关注度逐年下降;

          2、 google test自从开源后有一定的关注度,逐渐接近CppUnit;

          3、 CxxTest一直没太多人关注。

          B/S开发框架单元测试工具关注度曲线

                                                                                                         图1各单元测试工具关注度曲线

          1.2.3  JAVA测试工具

          工具

          评价

          JUnit

          JUnit是一个开源的java测试框架,它是Xuint测试体系架构的一种实现。在JUnit单元测试框架的设计时,B/S开发框架设定了三个总体目标,第一个是简化测试的编写,这种简化包括测试框架的学习和实际测试单元的编写;第二个是使测试单元保持持久性;第三个则是可以利用既有的测试来编写相关的测试。JUnit完全Free的。

          JTest

          JTest是parasoft公司推出的一款针对java语言的自动化白盒测试工具,它通过自动实现java的单元测试和代码标准校验,来提高代码的可靠性。Jtest先分析每个java类,然后自动生成junit测试用例并执行用例,从而实现代码的最大覆盖,并将代码运行时未处理的异常暴露出来;价格昂贵。

           

          业界对B/S开发框架各类单元测试工具关注度曲线如下:

          1、 JUnit关注度逐年下降;

          2、 JTest一直没太多人关注。

          B/S开发框架工具关注度曲线

                                                                                                         图2各单元测试工具关注度曲线


          标签: B/S开发框架测试驱动开发

          网站&系统开发技术学习交流群:463167176

          本站文章除注明转载外,均为本站原创或翻译,欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,共创和谐网络环境。
          转载请注明:文章转载自:软件开发框架 ? B/S开发框架测试驱动开发(TDD)指导书(四)
          本文标题:B/S开发框架测试驱动开发(TDD)指导书(四)
          本文地址:http://www.sajuice.com/OrgTec/Agile/0010.html

          相关文章: 模块动态加载和行为初始化

          电话
          电话 18718672256

          扫一扫
          二维码
          本港台开奖 <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>