( 原文首次在微信公众号“软件质量报道”2016-03-17 发布)
在之前分上、下集介绍了 “2016年的自动化测试15大趋势”,其中谈到了15个趋势,是不是觉得太多项、不容易记住?实际也没有必要列出15项内容,如果把这15项内容归纳归纳,归为三个方面。
1.哪些新的测试对象、新的测试领域会受到更多的关注
也就是将原来6大趋势归为这一类:
- 移动app测试
- 大数据分析和预测分析
- API和微服务测试
- Web service和SOA 自动化测试
- 物联网&硬件测试
- 安全性测试
这些都可以看作测试领域,和自动化测试发展趋势没有直接关系,而是整个软件测试领域的热点。其中移动app、API、Web service、安全性等自动化测试比较成熟了,2016年和2015年没有多大区别。大数据、微服务、物联网倒是比较新的东西,而且难以进行手工测试,迫切需要自动化测试的解决方案和工具,甚至在如何测试上也存在未知数,需要研究和探讨。
- 全生命周期的测试
- 借助TDD/BDD实施左移测试
- 敏捷和协作工具
- DevOps
- 测试和开发角色合并
“(软件产品开发)全生命周期的测试”已不新鲜,我2007年就出版了《全程软件测试》,距今快十年了!既然软件测试实施全生命周期的测试,自动化也不例外,也尽可能覆盖全过程。但Joe Colantonio只谈到单元测试、集成测试和系统测试,而且这里说的“自动化测试”,不是真正的自动化测试,甚至都不是“半自动化测试”,因为这里的自动化测试往往指“测试执行自动化”,而测试分析和设计还是手工做的,脚本也是人工开发的,并且需要花费大量成本来开发和调试自动化测试脚本。如果往前一步,测试数据和测试脚本是可以自动生成的,这就需要依赖MBT(model-based testing)。但在“2016年的自动化测试15大趋势”没有提到MBT。MBT倒是一个在2016年关注的方面,而且基于MBT的自动化测试才能算真正的自动化,在过去也获得良好的进展,给自动化测试注入新的血液,例如工具MaTeLo 在MBT上取得实质性进展,得到工业界的认可。
自动化测试再往前一步,就是能够基于开发需求模型自动构建验证模型,然后产生自动化脚本、测试数据,自动完成执行和结果分析,甚至对测试log分析之后,还能够修复自动化脚本。目前,这方面也有一些研究,看到一些论文呈现的理论成果。其次,代码静态分析工具,其使用是一劳永逸的,Joe忽视了这类工具的进展。在过去几年,一些领域(如嵌入式软件),静态测试工具的使用已经超过动态测试工具。
“DevOps、测试和开发角色合并”是由于敏捷浪潮带来的一些变化,和自动化测试没什么关系。“借助TDD/BDD实施左移测试、敏捷和协作工具”也都可归为“敏捷浪潮”席卷之后的结果,虽然TDD/BDD、敏捷和协作工具和自动化测试有更敏捷的关系,需要关注。理解了敏捷开发,也就理解了DevOps、测试和开发角色合并、TDD、BDD、协作工具等。另外,左移测试发生得更早,我在《全程软件测试》(2007年)一书中就重新阐述了修改版的V模型。
3. 自动化测试相关的技术与工具
- 配置管理自动化
- 虚拟化和容器化
- 持续集成的自动化
- Selenium自动化包
“配置管理自动化、持续集成的自动化”也相对成熟,个人认为2016和2015年没有多大差别。多少年来,Selenium发展还是不错的,不少工具都想支持Selenium web driver,但在2016年也没多大变化。Joe 在这部分,谈到有价值的内容就是虚拟化和容器化,虚拟化是比较成熟了,但和容器化结合还比较新。在Docker势头越来越猛的2016年,软件测试的容器化也会有较大的发展。
在自动化测试领域,最近几年变异测试、蜕化测试(这也可以归为MBT)也取得比较大的进展,也有一些成熟的工具可以使用,包括安全性测试和功能回归测试的应用。而且人工智能在自动产生测试用例、测试数据上也取得良好的进展,包括启发式搜索算法、神经网络学习以及其他机器学习算法等。这不仅是学术上有成果,而且在工业界有应用。总之,虽然敏捷测试依旧比较热,但和2015年没什么区别,个人认为,倒是MBT、人工智能、静态分析、容器化等对自动化影响更大,在2016年成为大家新的关注点。不妥之处,欢迎大家指正。
[如果其它公众号想转发本文,请邮件联系作者:Kerryzhu at vip.163.com 得到许可,否则谢绝转发 ]