一、前期准备
前期在未进入项目的时候,需要明确项目将会进行单元测试,明确到每个开发工程师都需要对自己开发的代码进行单元测试。
同时通过单元测试计划,以书面的形式确定以下方面的内容,让单元测试有统一的指导思想:
l 测试目的
l 测试策略
l 测试范围
l 影响
l 测试方法
l 测试通过/失败的标准
l 测试技术/工具
l 交付物
l 角色职责
l 进度检查
l 风险与应急
通过单元测试计划,项目中成员会比较理解将要进行的工作,项目成员会很清楚单元测试进行的方式,验收标准等等。另外增加了冒烟测试提交的条件之一就是单元测试代码要100%通过,这得到了项目组成员的一致认同,这就对后期的单元测试工作的展开非常重要。
二、代码编写阶段
单元测试基础代码,环境问题的解决
项目中进行过程中需要有专人来为单元测试保驾护航,例如单元测试基础代码编写,环境问题排查,Hudson集成脚本的编写和平台的构建和每日运行检查的工作。这部分工作对单元测试的开展非常重要,很多同学怕麻烦,怕复杂就放弃了,同时他们也有理由不进行单元测试了。
单元测试基础代码和技术问题的排解在项目中我认为应该由技术经理或者对单元测试技术相对熟悉的同学担任。它的进展关系单元测试是否顺利。
我们摸索出了一种比较合适的测试框架组合,Spring Test+JMockit+Junit 4.5 (但统一用3.8的写法,JUnit4和Spring 2.5.6 TestContext框架不兼容)+封装过的DbUnit代码+自主开发的Tag测试基础代码来适应Hudson和Maven Surefire。
其他项目可以参考下,也可以使用下其他新的框架如JTester和其他版本。
单元测试代码的运行
单元测试代码的持续构建运行需要一个计划,一个规范。这个需要在项目过程中严格执行,这个的责任人在项目里面由测试同学担当。
单元测试的规范是包括运行规范,运行结果中失败修改时间点的约定,运行结果发送的规范,单元测试运行结果报告应该重点阐述什么内容,相信所有支持进行单元测试的同学,都不会仅仅把目光放在覆盖率上,还有运行中出现的失败的点,需要分析原因,运行中列出来的复杂度和一系列指标比较高的点,需要分析是否需要实现优化,还是需要增加用例保证质量,这个运行的结果,我们是可以进行分析的,需要大家的关注。
单元测试的代码也需要进行Review,保证测试代码的质量。单元测试的目的就是要尽早发现问题,如果测试代码质量不高,就无法有效保证业务代码的正确性。项目对测试代码仅进行了部分的Review,主要从测试代码正确性,消除有SMELL的测试代码,统一的测试代码基础方面。业务方面的Review测试相对少一些。
单元测试代码责任人需要保证对应单元测试代码运行通过。
三、测试执行阶段
根据单元测试计划,对于发现的Bug,项目组需要讨论是否有必要进行单元测试覆盖,或者是否需要增加测试用例去覆盖。在这个方面,项目组做的比较好,开发的同学是积极配合,补充了相关的测试用例。
四、项目发布后
项目发布后,虽然对单元测试已经没有明确的要求了。可是我发现有部分同学在持续的补充单元测试用例,继续改良测试用例的设计,还有同学学习他人编写的测试代码。这是我意料不到的。我想应该是同学们在项目中持续的受到了单元测试的影响,所以形成了自动的行为。这也提醒我们,不但要在项目中保证好的测试代码,在项目后期也要不断的维护它。
五、好的方面
1、 项目前期项目组对单元测试的开展思想一致。进行了单元测试计划,单元测试用例设计指导文档来指导后续的开发。
2、 项目组在思想和行动上对单元测试逐步重视的,也很积极配合这方面的工作。
3、 单元测试有专人跟进,清除技术问题,方便开发同学开展单元测试。项目过程中,与开发同学逐个商谈单元测试的难处,问题并且跟进解决。
4、 对单元测试代码进行了部分Review。
5、 对曾经产生过Bug的代码进行了检查和讨论,并为部分的Bug增加或者补充了单元测试代码。
6、 对单元测试代码有Owner心态,力求单元测试不会运行出错,也持续的改进。
六、需要改进的地方:
1、 单元测试的时间在前期没有得到很好的保障,在第一次迭代的时候没有做到单元测试计划的要求。
2、 项目约定中需要进行单元测试功能特性点比较粗,不好把控。
3、 单元测试代码很多时候是在开发代码完成的阶段才去编写,应该在开发过程中就边开发边编写测试代码来保证功能的完好性。
4、 对单元测试代码在业务上是否正确的Review做的比较少。
七、总结
总的来说,在项目单元测试做了一个比较好的尝试,虽然暂时不能直接看到单元测试带来的收益,但是无形中增强了我们的质量意识。我相信,只要在维护阶段有产品功能的修改或者代码的重构,现有的单元测试代码就可以很快的做一个功能的回归,保证代码的质量,这样就会逐步提高我们的信心。
分享到:
相关推荐
**软件项目单元测试报告知识点详解** 一、**编写目的** 单元测试报告的撰写目的在于整合与汇总单元测试的结果,形成规范化文档,确保软件开发过程中每个独立的软件单元均达到预期的功能和性能标准。此报告不仅作为...
"基于VisualUnit的...本文通过对基于VisualUnit的Linux项目单元测试方法的研究,总结和分析了VisualUnit的功能特色和使用过程中的技巧及问题,旨在提高软件测试人员的工作效率和工作质量,提高软件的质量和可靠性。
- **术语与缩略语**:为了便于理解和沟通,测试总结中会列出项目中用到的专业术语和缩写,如单元测试、集成测试、系统测试、回归测试等,以便读者能够准确理解报告内容。 - **参考与引用文档**:列出在测试过程中...
4. 确保项目进度:软件单元测试报告能够确保项目进度,记录软件单元测试的结果和过程,方便项目管理人员的决策。 四、软件单元测试报告的应用 软件单元测试报告在软件开发过程中有广泛的应用,包括: 1. 软件测试...
单元测试是软件开发过程中的重要环节,它允许开发者对代码的各个部分进行独立验证,确保它们按照预期工作。...在Web开发项目中,单元测试应被视为最佳实践,以确保每个功能的正确性,减少后期维护的难度。
以下是对MicroMOe项目和校园招聘系统测试总结报告中涉及的关键知识点的详细说明: 1. **测试概述** - **编写目的**:明确报告的编写是为了回顾测试活动,评估测试效果,识别问题,提出改进建议,以提升未来项目的...
总结来说,.NET单元测试案例涉及到选择合适的测试框架、遵循最佳实践编写测试用例、使用mocking技术来隔离测试以及集成到开发工作流中。通过有效的单元测试,开发者可以提高代码质量,减少缺陷,增强代码的可维护性...
总结来说,Spring Boot多模块项目中Service层的单元测试是一个系统的过程,涉及到测试环境搭建、测试类编写、模拟对象的使用以及断言和覆盖率的检查。通过有效的单元测试,我们可以保证Service层的业务逻辑正确,...
《软件单元测试讲义》是一份深入探讨软件开发中单元测试...总结,《软件单元测试讲义》这份资料为开发者提供了一个全面了解和掌握单元测试的平台,通过学习和实践,我们可以更好地确保代码质量,提升软件项目的成功率。
总结来说,VS2005的单元测试功能使得开发人员能够便捷地编写和执行测试,快速定位代码中的问题。通过创建和维护单元测试,可以提高代码质量和可维护性,降低软件开发的风险。在实际项目中,应充分利用这些工具,确保...
以下是软件单元测试计划的知识点总结: 1. 软件单元测试的目的和范围 软件单元测试的主要目的是为了确保软件的质量和可靠性,检测软件中的错误和缺陷,从而提高软件的整体性能。软件单元测试的范围包括软件的各个...
总结来说,全面的单元测试代码意味着覆盖所有可能的代码路径,确保每个功能点都被独立验证,并遵循良好的测试原则。通过单元测试,我们可以提升代码质量,减少调试时间,增强软件的稳定性,从而提高整体项目效率。...
- 描述测试过程中产生的各种文档,如测试报告、缺陷报告、测试总结等,这些都是项目过程的重要记录。 8. **附录** - 包含补充信息,如缺陷状态定义(新建、已确认、已修复、已关闭等)和缺陷严重程度定义(致命、...
总结来说,VS2010的单元测试工具提供了完善的环境,帮助开发者构建和执行测试,确保代码的质量和稳定性。通过自动化测试,开发者可以快速地识别和修复问题,减少回归错误,提高开发效率。通过数据驱动测试,可以有效...
掌握如何编写有效的单元测试不仅是对个人技能的提升,也是团队协作和项目成功的重要保障。希望通过对“单元测试之道Java版”的学习,读者能够在实践中更好地运用这些知识,不断提升自己的测试技能。
总结,这个“Android unitTest 按键单元测试项目”旨在教授如何对Android应用中的按钮点击事件进行单元测试,涵盖从创建测试用例、模拟点击到验证结果的全过程。通过学习和实践这些知识点,开发者可以更好地保证代码...
总结起来,这个"Soap UI 单元测试项目"是一个全面的接口测试实例,展示了如何利用Soap UI进行自动化测试,包括使用参数化、数据驱动测试以及与Excel数据源的集成。这对于理解和学习接口测试的实践方法具有很高的价值...
总结,Junit单元测试对于确保代码的正确性和可维护性至关重要。Spring和Struts框架的测试涉及到特定的策略和工具,理解并熟练运用这些知识,可以提升开发效率,降低维护成本。通过深入学习本案例,你将能够自信地对...