软件自动化测试
所谓的自动化我们可以从两方面来理解,一种是在IDE(如Eclipse)下的自动化测试,我们知道JUnit集成到了Eclipse开发环境中,在Eclipse中可以边写代码边做测试,简单到只需要点击一下按钮,发现问题随时修改,并且JUnit实现了对用例的管理,引入了测试套的概念,对根测试套的一次运行能够递归运行所有的用例。
另一种是基于以下情形的自动化:有一个自动化框架,在每天的固定时间,自动从配置库上获取所有功能代码和测试代码,然后编译、做静态检查、运行所有测试用例,同时做覆盖率检查,最后输出静态检查报告、测试报告和覆盖率检查报告,并将报告打包并以Notes邮件的形式发送给相关人员。对于此种类型的自动化我们已经开发出了项目组通用的自动化测试框架,并且我们建议项目组使用该框架。
n 使用自动化测试框架的好处
1) 单元测试监控。项目组可以每天根据框架发过来的单元测试报告和覆盖率报告了解当前项目的开发和测试进展情况,所有已完成的代码是否经过了测试。
单元测试报告、覆盖率检查报告都是工具自动生成的,手工改不了,它们是单元测试做的如何的真实反映。
2) 发现合代码的问题。代码合到配置库上时,可能会发现漏合、多合、或者合错的情况,通过框架的自动测试能够及时发现这方面的问题。
3) 后期测试(指项目级系统测试以及产品级系统测试)发现问题后,可以用于验证本次问题的修改是否对系统其它部分造成影响。我们要求后期修改的问题以及新增的需求,一定要同时补充单元测试用例(测试代码),并且通过覆盖率检查报告检查源代码测试的覆盖情况。
必须指出的是,单元测试真正发现问题的过程还是每个人在IDE(如Eclipse)下的自动化测试,要确保checkin到配置库的代码是经过单元测试的,它是使用测试框架的基础。测试框架的运行只是一个结果,它的意义主要在于监控。
该自动化测试框架的主要特点就是简单,框架的核心仅是一个build.xml文件,项目组在拿到该框架后只需要对这个文件作少量修改就可以被本项目组使用,如配置项目的源代码目录、测试代码目录等,几乎不需要学习就会把这个框架用起来,并且我们还推出了相配套的例子工程,方便你更好地理解该框架。
我们要求,单元测试结束后需要提交以下报告:
静态检查报告—指自动化框架输出的静态检查报告,对不修改的BUG需要给出合理的说明。静态检查的代码范围包括所有能够编译的class文件。
单元测试报告—指自动化框架输出的单元测试报告,需要确保所有用例执行通过,对不通过的用例需要给出合理的说明。
覆盖率检查报告—指自动化框架输出的覆盖率检查报告,对没能覆盖的代码需要给出合理的说明。
另外,在项目关闭前必须重新提交一次静态检查报告、单元测试报告、覆盖率检查报告。
最后指出,该自动化测试框架不仅用于单元测试,而且一样可用于集成或系统测试的自动化,只要是基于JUnit的,因为我们知道,JUnit提供的是一个测试用例框架,不只是针对单元测试。
敏捷下的自动化测试如何开展
在公司的开发流程向敏捷开发转变的大背景下,项目级、版本级及产品级的敏捷开发在如火如荼的规模开展中。自动化测试如何跟上持续集成、每日构建的步伐,不成为敏捷开发的瓶颈,测试如何不拖后腿,成了敏捷中迫切需要解决的问题。
测试资产的共享和重用
组织架构向PDU转换后,开发和测试充分融合,组成同一个协同作战单元。作为测试的主要交付件,测试的自动化用例、测试数据、测试环境等测试资产,如何实现和开发的共享和重用,在迭代中发挥测试资产的作用,成了开发和测试都需要共同思考的问题。
实验室、环境的管理
公司一直提倡降成本,目前实验室的物料申请这一块,公司已经开始在收紧物料的申购,减少申购的预算。物料只有这么多,为了满足我们版本的要求,唯一的手段就是提升我们物料的利用率。如何提升我们物料的利用率,实现实验室的标准化管理,实现环境的集中管理和充分共享,成了大家关注的焦点。
项 |
描述 |
愿景 |
提升端到端的测试效率、降低测试成本,改善测试人员的工作环境 |
目标1 |
为持续集成和敏捷开发提供产品级的自动化测试能力 1)自动构建 2)自动部署 3)自动化环境搭建 4)自动化测试 |
目标2 |
提高环境利用率,解决实验室“三占”(场地,时间,成本)问题 1)实验室“四化”(规范化,标准化,自动化,全球化)建设 2)环境搭建自动化 3)实验室人机分离 |
目标3 |
测试资产的共享和重用 1)版本间重用 2)E2E和解决方案中重用 3)持续集成和敏捷开发中重用 |
目标4 |
降低自动化测试门槛,提高自动化执行效率 1)统一的工具大平台,统一的入口界面 2)多版本并行 3)多套环境并行 4)多个执行器并行 |
自动化工厂支持的典型应用场景,如下所示:
典型场景 |
场景说明 |
状态 |
开发的持续集成 |
将自动化测试纳入到开发的持续集成流程中,实现版本的及时验证,问题的及时反馈,达到测试资产在开发、测试的共享和重用的目的。 | |
SDV自动化测试的持续集成 |
实现SDV自动化测试的持续集成,实现自动化用例的正确性及时验证,问题的及时反馈,提升自动化用例开发效率。 | |
SDV自动化测试 |
通过环境自动搭建,用例并发执行,提升环境利用率,提升SDV自动化测试的执行效率 。 | |
环境管理 |
通过测试环境的统一管理,实现手工、自动化,开发、测试的环境共享,实现人机分离,提升整体环境的利用率,降低物料采购成本。 | |
实验室管理 |
通过实验室标准化集中统一管理,实现物料充分共享,实现实验室的规范化管理,降低实验室管理成本,提升物料利用率。 |
自动化工厂
类似于制造业的工厂概念,开发的软件产品能及时地放在自动化工厂中进行验证和测试,确保产品的质量。
7*24小时
包括两部分概念: 测试环境的7*24小时使用和自动化的7*24小时执行。
测试环境的7*24小时使用:包括手工和自动化环境的共享,最大限度地提高环境利用率。
自动化的7*24小时执行:确保自动化用例能在自动化工厂中大批量、不间断地执行,避免人工干预,提高执行效率。