以下为为公司做的一个小方案
一.背景(测试现状)
公司的业务不断扩展,项目越来越多,长期需要更新且更新频繁的项目也越来越多。而测试人员已经不能满足这么多项目的测试,测试压力也很大。许多升级的项目或只做少量更改的项目,只能针对修改的部分进行测试。而回归测试更只能简单的跑跑流程。
二.存在的问题
1. 大部分项目的冒烟测试未充分,导致后期测试无法正常进行;
2. 项目更新比较频繁,投入的人力大;
3. 版本更新的项目测试不够充分;
4. 有时需要准备案件数据,使用人工录制,用时长,效率低;
5. 测试重复性劳动比较多,不仅投入大,而且测试人员也容易受此影响工作效率;
6. 回归测试不充分;
三.解决方法
可以通过应用自动化测试来改善以上的问题。自动化测试的一个显著特点就是使用计算机进行自动化测试。因为计算机不会感觉累也不会感觉枯燥,且执行速度快,因此能有效的改善以上的问题。自动化测试比较适合验证功能是正确的,对于要验证功能是不正确的,那就得对脚本做很多处理,也需要在开发软件时做很多规范性的工作。
要采用自动化测试来改善以上问题,就需要考虑以下问题:
1. 为什么要使用自动化
为什么要使用自动化测试呢?那是因为现在的测试现状存在上面所列问题,而自动化测试能解决或改善以上的问题。
2. 自动化测试的投资和回报
投资:
* 软件成本:购买自动化测试软件产品的成本;
* 硬件成本:购买适用自动化软件的电脑的成本;
* 培训成本:培训测试人员编写自动测试脚本和使用自动化测试的成本;
* 使用成本:编写测试用例和测试脚本的劳动力成本。
回报:
* 降低劳动量;
* 提高测试的全面性;
* 加快测试速度;
* 提供规范化的过程;
* 提高测试的重用性;
* 提高测试精确度并提早发现更多错误;
* 降低测试成本;
* 自动化还有潜在的隐性效益,如提高测试人员的士气和对工作的满意度。
3. 如何正确使用自动化(哪些项目适合自动化)
正确使用自动化非常关键,否则可能不仅不能体验到自动化带来的好处,还可能增加测试负担和测试成本。
自动化测试有自动化测试的特点。自动化测试主要是利用电脑来模拟人的操作,因此要自动化测试实现什么功能,比如验证正确的功能还是验证不正确的功能及如何验证都需要人来告诉它。既然自动化测试是模拟人来操作,那么自动化测试工具就必须能识别测试人员所做的操作的对象(控件),这样自动化测试工具才能对这些对象进行操作。而自动化测试工具对对象的识别是需要制定规则的。虽然自动化工具有内置了大部份常用的对象的识别机制,但现在毕竟第三方插件和自己开发插件越来越多。自动化测试工具对这些控件并没有识别机制和,因此并不能识别这些控件,这时就需要测试人员针对这些控件的特点和自动化测试工具提供的功能寻找出绕过此控件或操作此控件的方法。而寻找和制定这些方法有可能需要耗费大量的工时,有可能会导致得不偿失。如果不考虑这些因素,可能会为了实现自动化测试而投入大量的人力成本,导致自动化测试的优势不能得以显示,且还会提高的测试的成本。
从以上的分析可以看出,自动化测试最适合使用的地方是用于实现规范化开发的软件的回归测试。但使用自动化测试并不是这么死板,可以根据测试工具的特点和提供的功能,实现其他应用。
针对自动化测试的特点和公司目前的项目状况,我认为,公司目前适合实现一些生命周期长更新频繁的测试项目。如,[XXX]等项目。而对于这些项目并不适合都实现自动化测试。目前公司在这些项目实现自动化测试,适合使用在冒烟测试,回归测试及一些功能的验证上(如验证统计表下钻数据的正确性)。至于将来如果项目更规范化后,可以考虑把自动化测试扩展的各个功能的测试。
4. 什么时候开始进行自动化测试
最好是能在项目进行设计后就考虑自动化测试问题。如,要使用一个第三方插件或开发一个插件时,得考虑将来自动化测试工具能不能识别和操作的问题,是否需要留一个接口,可以先用自动化测试工具对这些插件进行测试一下。而项目设计完成后,就可以根据项目的功能和模块划分对自动化脚本进行一些整体上的规划和框架设计。当功能模块开发完成并比较稳定时,就可以先对这些模块进行自动化脚本开发(不需要等整个系统都完成才开发自动化脚本)。等到项目进入测试阶段后,就可以开始所有脚本的开发,并使用脚本进行回归测试了。
5. 自动化测试需要怎样的人员构成
经过实践,以公司现在的规模,自动化测试需要有五、六个人员组成的自动化测试小团队,而这个自动化测试小团队的五、六个人员中需要有一、两个人员为自动化测试技术的支持人员。
四.公司自动化应用规划
1. 按发展时期划分
* 早期引入
刚引入自动化时,可以先在几个比较有大的产品或项目中实现自动化测试。可以先使用自动化测试实现冒烟测试和简单的回归测试。
* 项目推广
在此阶段,可以把自动化测试推广到大部分适合自动化测试的项目中去。首先也是重点要实现冒烟测试和更完整的回归测试。然后才是实现一些特殊功能的自动化测试。
* 技术推进
技术推进时期,需要不断优化自动化脚本并提高自动化脚本的共享和复用。从而大大减小自动化脚本后期维护的工作量。
2. 按应用级别划分
* 简单应用
主要是使用自动化测试工具进行录制回放,并实现简单的参数化和脚本处理。此应用比较简单,实际价值并不太大,因此适合在引入初期或试验时期应用。
* 使用框架
使用框架设计实现脚本的可配置,及公用脚本的复用。此应用比较有价值,因此在实现项目自动化测试时适合从此级别应用开始使用。
* 使用设计模式
等自动化应用进一步深入后,可以应用设计模式的思想来设计自动化测试的框架的脚本。如脚本与数据分离,逻辑与功能分离等等。利用设计模式思想能设计出适应性更强的自动化框架,能编写定制性更强的自动化脚本,从而进一步降低脚本维护成本。
* 与其他语言结合
自动化工具(QTP)提供了与其他语言的接口。如C#、VB、VBS等等。因此可以通过这些语言编写出操作QTP的工具,完全可以把QTP只当作一个执行工具。这样就可以实现更强大的自定义脚本功能。
五.应用难点
1. 引入时期需要培养一些自动化测试人员;
2. 没有比较完善的自动化测试模式可以参考,需要自己摸索;
3. 项目选型较困难,即选择适合自动化的项目或项目中的功能模块;
|