• 0
  • 1
分享

概述

客户端测试包括很多工作,测试工作有功能测试、稳定性测试、代码静态检查、性能测试、兼容性测试和安全测试等,辅助工作有用例管理、设备管理、项目管理等,还有很多其他工作。工程师们往往花了很多时间在做一些重复性工作,没有过多的精力投入到产品质量的深挖上去。地图客户端测试效率提升思路是不定期得组织版本耗时分析,将耗时较长工作缩短、将耗时少工作变为零耗时,从而释放人力做更多探索测试。比如:

事例1:设备管理这块,没有一个公共的地方记录设备在哪位工程师手上,工程师借出还入操作比较繁琐,导致在设备调度这块耗时很长。

解决方式:开发一个设备管理App,工程师只需要打开设备做借入还出操作;搭建设备管理平台,用于方便查看设备是否空闲以及归属。

事例2:地图客户端大框检索业务逻辑复杂,用例繁多,耗时很长(预计115分钟)

解决方式:高工对大框检索业务进行代码解读。通过业务分享、用例梳理,用例自动化转化等方式,最终该业务执行耗时降低86%,预计15分钟完成。

地图客户端通过对测试效率得不断迭代,得到明显的效果也积累了一些经验值:

  • 监控开发工程师每次提交代码质量,触发核心功能验证。

  • 功能自动化率最高时达到40%,集成测试一轮时间从22小时缩短至6小时。

  • 基于自动化持续集成的前提,集成测试阶段Android地图客户端做到daily灰度,保证代码时刻处于可法办状态。

接下来,主要介绍地图客户端自动化是如何搭建的。

基础准备

很多团队做自动化之前,都可能碰上这样的问题,测试开发人员将框架等都搭建完毕后,转化手工用例时,发现手工用例无法转化,导致自动化工作开展缓慢,且效果不好量化。地图在前期自动化方案也碰到这样的问题,产生的场景就是用例编写人员按照自己的理解编写自动化用例步骤,而实际验证点与期望验证点相差甚远。

自动化工作开展前,务必保证现有的用例可自动化,便于后续用例自动化转化和自动化效果考量。用例的要求有三点:

  • 用例目的要明确

  • 一个用例只有一个验证点 (没有主观体验)

  • 给出一个GOOD Case:

测试目的:起点或终点以我的位置发起搜索

测试步骤:

  • 点击路线按钮

  • 起点为“我的位置”

  • 终点为“西直门”

  • 点击所搜按钮

自动化工具

地图客户端分为Android和iPhone两个端,关于两个平台app自动化工具有很多,结合地图客户端的特点,我们对工具的选型如下:

Android 端

自动化事件管理工具:Robotium

管理用例执行:adb +bat

代码语言:java

iPhone 端

自动化事件管理工具:UIAutomation(地图是多团队并行开发,组件以库形式提交,所以选择非注入式框架)

管理用例执行:tuneup-js+ shell

处理崩溃信息:MobileDevice

代码语言:javascript

自动化框架

前面提到自动化工具选型,关于UI元素定位、事件触发等都是基础library,自动化用例脚本的落地形式很重要。就脚本可读性和后期维护性而言,地图最终选择的脚本形式是关键字驱动型,代码形式如下:

14982672_201705151045331c2e0.png

我们的脚本最终落地是纯业务化的,数据和用例是分开管理。

接口业务化的好处是即使后续替换底层事件管理工具,我们仅重新实现业务化接口,自动化脚本可以复用。地图是针对所有可自动化的功能系统做业务接口拆分,作为自动化接口暴露出去,手工用例自动化转化时使用这些业务接口拼装用例。

数据和用例分离的好处是我们可以定义多套数据对应一个用例和便于数据的更新。地图这边核心功能是POI检索、路线检索,接口均由服务端返回,多次请求可能返回结果不同,为了保证用例的稳定性,我们是给每个用例配3套数据。

所以我们的自动化框架结构Android 和iPhone两个平台基本类似,只是在framework层封装不同。框架截图如下:

14982672_2017051510453320oSV.png

报告呈现:

14982672_201705151045333LtWv.png

用例管理

在自动化框架那部分有提到地图自动化脚本是关键字驱动,对于用例的规范性已经有很强的约束性,但两个端自动化依然是两套代码,脚本编写和维护依然有不同步的现象。为了方便接口和用例维护,我们搭建了用例管理平台,平台上一次录入,自动生成双平台自动化用例,测试工程师可以轻松得新增维护自动化用例。

用例呈现状态:

用例编辑状态:


用例编辑状态

各方面专项自动化能力有了,需要和项目有效结合起来,利器就是持续集成。

持续集成是什么?也就是每天软件的代码更新都会对该软件的功能进行集成验证一次,这样保证迭代的功能的正确性,及时暴露迭代过程中的问题。人工方法进行持续集成的打包和验证显然行不通,这样会耗费大量的人力和资源,因此自动化就成为进行持续集成的基础。地图组的持续集成测试如图包含这样几类:自动化打包、准入测试、Daily自动化、安全测试等。

14982672_201705151045336jZh5.png

百度地图持续集成统一采用Jenkins持续集成系统,自动化持续的构建和测试。

自动化打包:打测试包是自动化测试的基础,打包分成两类:一类是被测的地图apk,一类是测试apk,通过gradle脚本指令进行apk自动编译。其中被测的地图apk打包的方式是:每三分钟监控一次svn的变化,如果地图包的svn有任何代码的变动就会触发自动打包编译,产出地图的包供测试使用。

准入测试:作为RD提交代码的第一道关卡,将重要问题卡在最前端。供测试用的地图包一旦产出就会触发准入测试的job,准入测试的job一共做了两件事:第一件事是产出测试apk,也就是将准入测试的自动化case打包成测试apk并安装进手机里,第二件事是运行准入的自动化用例,如果自动化用例运行失败则立刻触发报警,提示RD及时纠正错误的代码,有效的保障了地图apk包的准入质量。

Daily自动化:按天运行的集成自动化用例,包含集成测试中所有的自动化用例,用例量大,运行时间久,因此每天运行一次,并将结果自动整理发送邮件周知给项目负责人,由项目负责人分析失败的用例,将集成测试才会集中暴露问题的风险提前。

安全测试:用于定时扫描app中的安全漏洞,提早发现app的安全问题。

百度地图通过这几种持续集成的自动化测试方法形成了一套完整的线下测试持续集成方案,有效的保障了地图app持续集成的稳定性,将质量风险尽可能前置。

用户体验馆

用户体验馆是手机地图实施自动化的另一个成功案例。简而言之,用户体验馆为核心用户群提供一站式服务的移动测试平台,包含为核心用户提供App测试包下载、自动化测试插件下载和用户中心功能,其中自动化测试插件提供了一种新的自动化运行模式,它以插件的形式嵌入地图体验馆中,可以随时云端进行更新和下载自动化用例,用户只需根据提示下载最新的自动化用例,手工操作运行即可,运行结果将在联网的情况下自动回传给云端进行整合分析。

通过用户体验馆的实施解决了测试中用户体验反馈少、UI兼容性测试缺失、新功能用测验证不足和运营成本高的问题,补充了整体的测试方案。

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   先说重点:想要拥有被人羡慕的地位,就需要拥有足够的实力资本,所以需要我辈软件测试从业者的共同努力和发展才能实现的。  回到主题:关于软件测试行业的地位如何,那么我们来看看测试行业的平均薪资就可以很直接地得到答案。  目前:测试行业的薪资已经和开发不相上下;并且在同样10年工龄面前,测试的薪资将会超过开发。  一、国内测试给人感觉地位较低的原因  出现这个问题的主要原因就是我国互联网行业的发展历史导致的。  国内互联网行业初期,软件产品种类匮乏,用户量也比较小。  因此很多软件产品不需要经过那么专业系统的测试检测,就上线发行给用户使用,因此导致软件测试人员相对较少的和不那么专业。  而且就算...
            0 0 1306
            分享
          •   关于新人如何做好功能测试,以下是我个人的一些思考。  测试基础的重要性  作为一名测试新人,测试基础非常非常重要。这里说的基础,不仅仅是什么是软件测试、软件测试的目的,而是测试用例的设计能力。  因工作的原因,近来接触不少毕业3、4年,甚至7、8年的测试同学,对用例设计还是停留在理论阶段,这让人不免有些无力吐槽。  Q:软件测试用例的测试方法有哪些?  回答:等价类、边界值、因果图等等。  Q:结合实际的业务场景,来说说常用到的测试用例设计的方法。  回答:不少回复都是以登录来做说明的。  其实日常工作中,常用到的用例设计也就那么几种,如果我们能把理论好好应用到实际工作中,那么涨薪其实也很...
            0 0 1225
            分享
          • 浏览器兼容性测试这是兼容性测试的子类型(如下所述),由测试团队执行。浏览器兼容性测试 针对 Web 应用程序执行,并确保软件可以在不同浏览器和操作系统的组合下运行。这种类型的测试还验证 Web 应用程序是否在所有浏览器的所有版本上运行。向后兼容性测试这是一种测试,用于验证新开发的软件或更新的软件是否适用于旧版本的环境。向后兼容性测试检查新版本的软件是否与旧版本软件创建的文件格式正常工作。它还适用于由该软件的旧版本创建的数据表、数据文件和数据结构。如果更新了任何软件,那么它应该可以在该软件的先前版本之上运行良好。黑盒测试此类测试不考虑内部系统设计。测试基于需求和功能。可以在此处找到有关...
            0 0 1595
            分享
          • 一、2020年软件测试行业的现状2020年开年,一不小心,【新冠】黑天鹅从头上飘过,持续影响全国乃至全球的经济,软件行业公司也迎来了不少的冲击,那么一直打算入行软件测试行业,或者已经在软件测试行业耕耘多年的老司机来说,2020年软件测试行业,还值得入行吗?这个行业将来又将如何发展呢?下面作为一个十年资深测试,我谈谈我个人的看法。二、2020年软件测试行业的趋势鉴于笔者从09年入行IT行业,经历了09年只有开发没有测试的阶段,经历了14年只要会基本的功能测试在一线就能薪资过万的阶段,经历了17年只要会一点自动化,会一点性能就能蒙骗过面试官的阶段,更经历了19年所有面试官对于求职者的要求逐步提高,...
            1 3 4946
            分享
          • 上期我们简单介绍APP测试 与web测试区别,本期我们将介绍APP测试中涉及的各种测试策略,以及后期将对各种测试策略进行逐一讲解。APP测试主要分为6种不同的测试策略,分别是功能测试、兼容适配测试、性能测试、安全测试、专项测试以及稳定性测试。首先我们一起来看看APP测试中的功能测试。不管是任何类型的测试,功能测试都是必须要进行,只有保证功能正常才可以进行后续各种测试,功能测试依然是围绕着需求进行。APP的 功能测试主要从以下几个方面进行:安装卸载测试、升级测试、业务逻辑测试、UI测试、异常测试。1. 安装卸载测试:在测试APP之前,首先就要进行APP的安装。而对安装测试进行测试用例设...
            0 0 1036
            分享
      • 51testing软件测试圈微信