在前面的文章中,我们介绍了大数据应用在测试领域的六大问题以及解决方法。本文,我们将和大家大数据应用测试的未来发展趋势。
未来的大数据应用测试是什么样的呢?首先,我们认为后端服务类型的测试不再需要专职的测试人员,开发工程师在使用合理的测试工具的情况下可以更加高效地完成测试任务。专职的测试团队,未来会更多地专注于偏前端与用户交互层面的产品质量把控,跟产品经理一样,需要从用户的角度思考用户在使用产品过程中可能遇到的质量问题,产品的交付与交互的验证是产品测试的重点。
多数服务端的测试工作都是可以自动化完成的,且很多service级别的验证也只有通过自动化这种方式才能验证。相较于测试同学,开发同学在API级别的自动化代码开发方面能力会更强,而且如果是开发同学自己做测试,可以减少与开发同学之间的大量往返沟通的成本,而这个成本在整个发布环节中占比很大。
另外,算法工程师在业务算法逻辑的理解上更加清晰,算法策略与逻辑的细节是他们设计实现的。所以,我们更希望后端的测试工作由工程或者算法工程师独立完成,在这种新的生产关系模式下,测试同学更加专注于测试工具的研发,包括自动化测试框架、测试环境部署工具、测试数据构造与生成、发布冒烟测试工具、持续集成与部署等。
这种模式也是Google一直在使用的测试模式,我们今年在这个方向尝试了转型,在质量变化和效率提升方面这两方面效果还不错。这里需要强调的一点是,虽然测试团队在这个方向上做了转型,但后端测试还是需要继续做,只是测试任务的执行主体变成了开发工程师,大量后端测试的技术和方向还会继续存在。后端服务类测试团队转型,除了效能工具之外,线上稳定性的建设也是一个非常好的方向。
TIP(Test In Production)概念是十年前由微软的工程师提出。
我们之所以认为TIP是未来测试的方向,主要是基于以下三点考虑:
首先,由于线下测试环境与真实线上环境总是存在一些差异,导致测试结论也会有所偏差。目前大家使用最多的是性能测试或容量测试,由于后端服务的拓扑非常复杂,且许多模块都有可扩展性,不同的数据对性能测试的结果也有很大的影响,测试环境与生产环境的不同会给测试结果带来的巨大差异。另外,目前的生产集群都是异地多活,在夜里或者流量低谷的时候,单个集群就可以承担起所有流量请求,剩下的集群可以很方便地用来压测,这也给我们在线上做性能测试带来了可能性。
其次,许多真实的演练测试只能在线上系统进行,在线下测试环境是无法做到的,例如安全攻防、故障注入与演练等。
最后,从质量的最终结果看,不管是发布前的线下测试,还是发布后的线上稳定性建设,其目的都是为了减少系统故障的发生,如果把这两部分融合在一起,针对最终的线上故障去做目标优化工作,可以最大程度地节约和利用人力资源。因此,我们认为线下测试与线上稳定性的融合必将是一个历史趋势,这一领域统称为技术风险的防控。
测试的第三个发展趋势是技术的智能化,见图3。
图3 测试技术的智能化发展
类似于自动驾驶的分级,智能化测试也有不同的成熟度模型:人工测试、自动化、辅助智能测试、高度智能测试。机器智能是一个工具,在测试的不同阶段都有其应用的场景,测试数据和用例设计阶段、测试用例回归执行阶段、测试结果的检验阶段、线上的指标异常检测等诸多技术风险领域都可以用到不同的算法和模型。
智能化测试是发展到一定阶段的产物,前提条件就是数字化,自动化测试是比较简单一种数字化。如果没有做到数字化或者自动化,其实是没有智能分析与优化的诉求的。
另外,一些简单算法的使用可能会有不错的效果,比较复杂的深度学习甚至强化学习算法的效果反而一般。出现这种情况的原因可能有两个,一个是特征提取和建模比较困难,二是测试运行的样本与反馈的缺失。
运用最新的算法技术去优化不同的测试阶段的效率问题,是未来测试的一个方向。但我们同时判断,完全的高度智能测试与无人驾驶一样,目前还不成熟,主要原因不在于算法与模型,而是测试数据的不足。
阿里巴巴的搜索推荐与广告系统的质量建设之路,经过近10年的不断发展,在许多测试同学的不断努力付出之下,才能在如此众多的细分领域方向上有所建树,本文所介绍的方法也都浓缩在我们内部的工具之中,后面我们的想法还是逐渐开源,回馈社区。限于篇幅,本文的内容又较多,很多技术细节这里并没有办法细细展开。如果想了解更多,欢迎大家加入我们的团队或者开源社区,一起在以上的几个方向做更加深入的研究与建设。
领取专属 10元无门槛券
私享最新 技术干货