如何做好自动化测试,揭秘阿里巴巴分层自动化实践之路

简介: 自动化测试可以给工作提效,减少重复劳动,但在实践过程中,却总是碰到各种问题,导致进入自动化测试盲区。如何做好自动化测试,是很多企业迫切想要解决的问题。阿里巴巴旗下一站式研发提效平台——云效,于12月8日16:00开启《阿里巴巴持续集成持续交付之分层自动化》直播分享,将为企业提供自动化测试解决方案。

自动化测试是软件测试技术上的一大进步,我们都知道自动化测试可以给工作提效,减少重复劳动,但在实践过程中,却总是碰到各种各样的问题,导致进入自动化测试盲区。如何做好自动化测试,是很多企业迫切想要解决的问题。阿里巴巴旗下一站式研发提效平台——云效,将于12月8日16:00开启《阿里巴巴持续集成持续交付之分层自动化》直播分享,为企业提供自动化测试解决方案。今天我们先来看看阿里巴巴嘉宾的部分解读。


嘉宾介绍:金桐:阿里巴巴B2B事业群高级产品经理。从事多年互联网系统的研发和测试工作。现在主要负责云效分层自动化测试的产品设计。





自动化测试


所谓自动化测试,就是用程序模拟用户手工操作的一种测试方法,能够帮助测试人员从重复、枯燥的手工测试中解放出来。但在自动化实践过程中,测试人员往往发现理想和现实之间差距很大。

edd00bc33e62c67964622995801eed29fc0c9a28


上图不难看出,阿里该部门这一周的自动化失败次数不仅没有与发现bug数成正比,还浪费了测试人员41次自动化失败的排查时间,而这些时间对于做自动化查bug的初衷,都是无意义、不必要、也无技术含量之举。


为什么外部环境、业务变更、应用环境问题、执行机问题、数据问题、框架问题这些都能引起这么多失败呢?而单单真正查出bug的概率这么低呢?


结合我们的多年自动化实践与总结,自动化存在如下图这些缺点:

 

f99554b18e02db8750e568558f7dbbdeba2dc6d1

成本:


人员成本高:基本要懂某种自动化框架的代码语言,要有一定的编码能力,同时代码逻辑要清晰,否则如何能保证合理性、逻辑性、业务性与健壮性这些大大影响自动化成功率的因素?如何能保证自动化测试脚本本身没有bug?


环境成本高:开发环境、运行环境、调度环境等等,接触过代码的同学都知道,一次环境的安装,没有大半天甚至一天是完不成的。同时要让自动化对接到项目自动化流程中,或定时监控等,都需要再开发调度平台,这些成本对于从0到有的测试组,甚至是一家公司,将会是多大?需要投入多少人日的工作量可以完成这些?


效果:


从图1分析就知道效果如何,然而图1还只是阿里某部门单周的一个采样,就已经浪费了41次排查时间,这样的自动化测试,若运行一年,那效果又会如何?能确保后面没有这些干扰的失败吗?失败次数可以和bug数成正比吗?


覆盖率:


经常有同学抱怨自动化的覆盖率低,很多分支和逻辑无法覆盖,这大部分原因是这些同学的理解偏差,很多人都将UI自动化作为自动化测试的全部。然而没有一种自动化测试框架可以覆盖一个系统的所有功能点的测试,所以出现“自动化”覆盖率低的观点。那该如何提高自动化的覆盖率呢?


及时性:


其实从图1中的10次业务变更引起的自动化失败,就是这一缺点的佐证。所谓业务变更,是指正常的项目变更,但脚本未及时更新引起的自动化失败。这种失败恰恰又证明自动化测试是有用的,只要测试覆盖到的内容,一旦有变,自动化就能测试出来。那如何提高我们的脚本及时性呢?


面对这些问题,我们不禁自问:做自动化测试真的有必要吗?如果有必要,那如何降低这些成本,如何提高测试效果呢?经过不断的实践,我们引入了分层自动化测试的策略。

 

分层自动化的理念是什么?


在理解分层自动化之前,我们先看自动化测试金字塔。自动化测试金字塔在测试领域耳熟能详,其中UI代表页面级系统测试,service代表服务业务测试(接口测试),unit代表单元测试。金字塔越高,表示需要投入的精力和工作量越大。

f54a3520c22539c32d47f8b90855fc4f255135e5

 

单元测试(unit):它可以通过mock框架,模拟各种异常场景,外部依赖最少,且可以做到测试粒度到最小的一种测试方法。也因为依赖少,可方便随时随地执行,也让问题排查很简单。这是一切测试的地基。


接口测试(service):这里要求测试人员对系统的结构和系统间的调度非常清楚,同时要了解接口逻辑关系,否则接口测试代码很容易遗漏一些异常场景。这一层由于含有一些业务逻辑和多接口的一个集成,所以相对单元测试来说,多了一些外界依赖,导致问题定位不会有单元测试层那么准确。因此投入会比单元测试多一些。


页面测试(UI):是常见的黑盒自动化测试场景。它最接近用户真实场景,也容易发现问题,但它的实现成本最高且太容易受外部依赖,影响脚本成功率,所以处在金字塔的顶端,但它不是金字塔的全部。自动化测试的劣势,其中80%都是因为UI自动化。


以上就是分层自动化的主体三层,由此可见,分层自动化测试倡导的就是,将系统分层,不同层次用合适的自动化方法进行测试的一种测试策略。某个项目是否都能用自动化覆盖,那就要看测试负责人的分层策略是否合理、全面。


通过实践发现,如果只是简单使用分层自动化测试,研发测试比最多提升到4:1,那么阿里巴巴研发测试比平均8:1,这是怎么实现的呢?


阿里巴巴分层自动化实践


阿里巴巴分层自动化在经过长期实践中,从自动化成本和效果这两个重要缺点上突破,进行分层自动化工具和项目流程的双重革命,最终达到业内领先的研发测试比。


首先,分层自动化工具革命


自动化测试框架,无论UI,接口还是单元,外部开源框架、收费软件等很多,各有利弊。阿里测试综合多种框架的实践,对其进行改良与创新,突破了传统自动化框架的众多难题,大大降低了自动化的成本、提升了自动化效果。如下图所示的四款重要工具,AUI主攻UI自动化,SAT主攻接口自动化,Amon主攻单元测试,以及Perf主攻性能,在传统测试框架基础的弱点上进行全面攻克与改造,最终实现鸟枪换大炮,全面提升测试工作效率。


   c543e64c6fc8d8c3c76b3e569588bb301f4cde82


43d05a41462eb5689f7693198803943ebb8ec82b


不仅如此,阿里云效还从需求-开发-测试-发布整个项目流程中可工具化、平台化的手工工作,全面进行工具化、平台化的改造,如图所示。 


b2ad1e5822ca1b1188eb675c479b78df3dcee643

 

开发环节,从拉分支开始,到自测的部署环境与单元测试,全部平台工具化。一键拉分支、一键部署、一键触发单测集成,不到喝杯咖啡的时间,即可查看环境部署结果和findbugs、PMD、Sonar等代码扫描结果。


测试环节,手工测试中有用例和缺陷两款主打产品,平台沉淀,无需再做一些文件传输,加上前面介绍的分层自动化相关测试平台与工具,在自动化测试工作上的效率提升,最终实现整体测试工作的平台与工具化。


其次,项目流程革命


除了单个工具的成本减少与效果提升,云效还优化了项目流程。

如下图是我们常见的项目流程,其中自动化测试工作经常只有单一自动化测试框架进行测试。


b4a7b2486adf56f1764e0220256f0646cc01bf61

 

通过前文的分析,分层自动化才能全面覆盖我们整个项目功能,因此,我们将流程改为如下图所示流程。

 

99578cc2f0fca9aca3ea12fa7c0516b9edf3a5c1


这样的流程,经过长期实践发现,研发测试比最多提升到3:1,是否还有改进空间呢?


我们再看这些流程,可以看到测试工作,尤其是自动化测试工作,独立于开发项目流程。这种流程带来最直接的问题就是自动化发现问题不及时,对于开发自测项目也没有很好的介入保障,同时全手工触发,人为因素影响非常大,这是限制开发测试比大幅提升的重要原因。


假设我们的项目在合理运用分层自动化的测试策略后,并将其触发-问题排查-结果反馈都平台化地纳入到整个需求-开发-测试-发布这个项目流程中,会产生什么样的效果呢?


将自动化的结果反馈变成了发布的必要环节,每一项自动化测试结果都变成发布环节的重要开发,又会产生什么样的效果?


我们的自动化测试,只能用于测试介入的项目测试么,只能用于测试介入的发布么?我们是否还能用做日常业务保障?是否可以在项目中的bug出现初期就发现问题呢? 

无论是测试工具革命还是测试流程改进,都留给我们很多疑问,正是这些疑问,让自动化测试一直都是一把双刃剑,用的好可以大幅提升效率,降低成本投入,用不好则可能成为测试鸡肋,妨碍测试进程。所以学习如何进行自动化测试,如何把握分层自动化的分层策略,如何将分层自动化融入到项目流程中,是企业必须掌握的测试技巧。现在可以报名参加阿里云效12月8日(周四)16:00的《阿里巴巴持续集成持续交付之分层自动化》直播分享,内容更全、更干。名额有限,机不可失!


报名方式:

 8a460c5c023c0792eeab5679e55f32cb078fb295

扫描识别图中二维码进行报名




直播详情


直播主题:阿里巴巴持续集成持续交付之分层自动化

直播提纲:

●为什么要进行自动化测试?为什么理想中的自动化与实践有差距?

●分层自动化是什么?如何正确理解自动化测试金字塔?

●总结分层自动化的分层策略,提供实施方案;

●在线开展分层实践活动;

●阿里巴巴分层自动化的实践:分层工具的革命+项目流程的革命


温馨提示:报名成功后,可以加入云效QQ群:435558264 优先获得直播登陆链接和密码。

    



关于云效:

云效,创立于2012年,由阿里巴巴出品,是业内领先的面向企业的一站式研发提效平台,涵盖单测、接口、UI、前端、性能、集成自动化等分层自动化测试,通过项目流程管理和专项自动化提效工具,能够很好地支持互联网敏捷项目的快速迭代发布,真正实现24小时持续集成、持续交付。


官网地址:http://yunxiao.aliyun.com/
相关文章
|
7天前
|
人工智能 搜索推荐 数据管理
探索软件测试中的自动化测试框架选择与优化策略
本文深入探讨了在现代软件开发流程中,如何根据项目特性、团队技能和长期维护需求,精准选择合适的自动化测试框架。
44 8
|
11天前
|
数据采集 监控 机器人
浅谈网页端IM技术及相关测试方法实践(包括WebSocket性能测试)
最开始转转的客服系统体系如IM、工单以及机器人等都是使用第三方的产品。但第三方产品对于转转的业务,以及客服的效率等都产生了诸多限制,所以我们决定自研替换第三方系统。下面主要分享一下网页端IM技术及相关测试方法,我们先从了解IM系统和WebSocket开始。
27 4
|
13天前
|
人工智能 JavaScript 前端开发
自动化测试框架的演进与实践###
本文深入探讨了自动化测试框架从诞生至今的发展历程,重点分析了当前主流框架的优势与局限性,并结合实际案例,阐述了如何根据项目需求选择合适的自动化测试策略。文章还展望了未来自动化测试领域的技术趋势,为读者提供了宝贵的实践经验和前瞻性思考。 ###
|
12天前
|
Java 测试技术 API
探索软件测试中的自动化测试框架
本文深入探讨了自动化测试在软件开发中的重要性,并详细介绍了几种流行的自动化测试框架。通过比较它们的优缺点和适用场景,旨在为读者提供选择合适自动化测试工具的参考依据。
|
11天前
|
测试技术 Python
探索软件测试的深度与广度:从理论到实践
在数字化时代,软件已成为我们生活中不可或缺的一部分。随着技术的不断进步和用户需求的多样化,确保软件质量变得尤为重要。本文将深入浅出地介绍软件测试的核心概念、类型及其在软件开发生命周期中的重要性。我们将通过实际案例,展示如何实施有效的测试策略,并探讨自动化测试的未来趋势,旨在为读者提供一套完整的软件测试知识体系,帮助提升软件质量和开发效率。
|
12天前
|
测试技术 Python
探索软件测试的奥秘:从理论到实践
在软件开发的宇宙中,软件测试犹如一颗璀璨的星辰,指引着质量的方向。本文将带你穿梭于软件测试的理论与实践之间,揭示其内在的逻辑和魅力。从测试的重要性出发,我们将探讨不同类型的测试方法,并通过实际案例分析,深入理解测试用例的设计和应用。最后,我们将通过一个代码示例,展示如何将理论知识转化为实际操作,确保软件质量的同时,也提升你的测试技能。让我们一起踏上这段探索之旅,发现软件测试的无限可能。
|
13天前
|
数据管理 测试技术 持续交付
软件测试中的自动化测试策略与最佳实践
在当今快速迭代的软件开发环境中,自动化测试已成为确保软件质量和加速产品上市的关键手段。本文旨在探讨软件测试中的自动化测试策略,包括选择合适的自动化测试工具、构建有效的自动化测试框架以及实施持续集成和持续部署(CI/CD)。通过分析自动化测试的最佳实践,本文为软件开发团队提供了一系列实用的指南,以优化测试流程、提高测试效率并减少人为错误。
34 4
|
13天前
|
监控 测试技术 定位技术
探索软件测试中的自动化测试框架选择与实施###
本文不概述传统意义上的摘要内容,而是直接以一段对话形式引入,旨在激发读者兴趣。想象一下,你是一名勇敢的探险家,面前摆满了各式各样的自动化测试工具地图,每张地图都指向未知的宝藏——高效、精准的软件测试领域。我们将一起踏上这段旅程,探讨如何根据项目特性选择合适的自动化测试框架,并分享实施过程中的关键步骤与避坑指南。 ###
25 4
|
13天前
|
jenkins 测试技术 持续交付
软件测试中的自动化与持续集成
在现代软件开发过程中,自动化测试和持续集成已成为不可或缺的组成部分。本文将深入探讨自动化测试和持续集成的重要性、优势以及如何有效实施它们以提升软件质量和开发效率。通过具体案例分析,我们将展示这些技术如何在实际项目中发挥作用,并讨论其面临的挑战及应对策略。
31 3
|
10天前
|
监控 搜索推荐 测试技术
电商API的测试与用途:深度解析与实践
在电子商务蓬勃发展的今天,电商API成为连接电商平台、商家、消费者和第三方开发者的重要桥梁。本文深入探讨了电商API的核心功能,包括订单管理、商品管理、用户管理、支付管理和物流管理,并介绍了有效的测试技巧,如理解API文档、设计测试用例、搭建测试环境、自动化测试、压力测试、安全性测试等。文章还详细阐述了电商API的多样化用途,如商品信息获取、订单管理自动化、用户数据管理、库存同步、物流跟踪、支付处理、促销活动管理、评价管理、数据报告和分析、扩展平台功能及跨境电商等,旨在为开发者和电商平台提供有益的参考。
17 0