活动时间:2016年6月30日 QQ群视频交流
活动介绍:TMQ QQ群沙龙第三期分享圆满结束啦~本次分享的主题是Android自动化测试框架Uiautomator相关的知识。共有来自93个公司的200位测试小伙伴报名参加活动,在线观看视频人数105人~想知道活动分享了啥吗?往下看吧!
活动嘉宾:
嘉宾简介:
傅学君,腾讯高级测试工程师,近10年的自动化测试经验,6年Android自动化测试经验。2010年6月加入腾讯,首个Android自动化测试实践团队创始人之一,乐于分享无线的Android自动化测试经验。担任过无线研发部质量管理中心Android自动化测试虚拟团队PM。现负责腾讯车机专项测试工作,云测试平台开发工作。曾获得过腾讯卓越研发奖(无线自动化测试团队)。
分享主题
活动流程
1 报名参加:6月29日~6月30日
2 QQ建群:3:00PM
3 嘉宾介绍:8:00PM
4 分享演讲:8:05PM~8:50PM
5 观众问答:8:50PM~9:10PM
6 自由交流:9:10PM~
问答环节
1.车机项目应该是可以语音控制的吧,这个也可以用uiautomator之类的基于UI的框架吗。还是你们在其基础上进行了改造?
答:其实测试框架只是一个工具,我们在实现脚本的时候可以任意发挥,举个例子,假设这个场景就可以实现为一个复合的自动化测试,我在PC段控制两个手机,一个手机里面跑uiautomator的脚本,脚本中等待语音识别的一些输入,另一个手机 播放语音的声音,然后再判断输入的声音和产生的结果是否正确。
2.uiautomator不是push到手机里跑的,如果是push到手机A里,那要怎么去控制手机B,让A需要输入语音的时候让B放语音,这个是得自己开发框架去控制吗?
答:假设手机A是测试手机,手机B是辅助测试手机脚本push到手机A里面去,脚本中加入一些控制等待收到语音信息的输入。然后PC端连接手机A和手机B控制A手机执行测试,和控制手机B发送语音消息 。这个只是一种实现方式,但是自动化测试要考虑投入产出比,如果实现起来非常复杂,且只执行了几次的测试,这样倒不如手工测试来完成。
3.项目进展到什么阶段最适合做UIAutomator的测试?
答:如果产品设计的好,自动化测试和开发写代码可以同时进行。
4.中等规模的项目不算后期维护,需要多久能实现完自动化测试?
答:这个要看项目的具体情况,自动化测试可以分阶段进行,假设可以先把一部分小粒度的用例实现自动化,然后再逐渐的增加。
5.因为页面是经常变化的,如果和开发代码一起,会导致测试用例不断更新,这样子很不利于维护,而且没有前端页面,UIAutomator的自动化怎么写呢?
答:产品设计的好,在开始的时候把界面的控件id和流程都定义好,测试和开发产品协同工作。
6.UIautomator主要是针对界面做相应的自动化测试,但是现阶段app中UI变动太频繁,版本太多,一方面如果是对版本做兼容的话,脚本的健壮性会越来越差,另外一方面,如果是维护多个版本的脚本的话,那维护成本太大了,在腾讯,对于UI的自动化测试,是怎么处理的呢?
答:自动化测试可以放在产品质量保证的各个阶段,例如保证产品基本功能的冒烟测试,这种情况下使用自动化测试可以保证每次提交的代码对关键的功能点没有影响,这类用例设计的时候粒度要小,且要有针对性。再如,在做性能测试的时候可以使用自动化测试,尤其那种反复操作的场景,通过自动化测试能够帮我们更有效的发现问题。我们要把自动化测试当作一个减轻我们工作量的工具,而不应该被自动化测试套牢。自动化测试不能解决所有的问题,我们而是需要自动化测试帮我们解决很多关键的问题。自动化测试的实施要遵循28原则,充分考虑到自动化测试的收益率,让我们能够通过投入20%的工作来获得80%的收益是最好的。
7.腾讯也有迭代,请问你们的安卓自动化的可用性在哪里?
答:自动化测试可以放在产品质量保证的各个阶段,例如保证产品基本功能的冒烟测试,这种情况下使用自动化测试可以保证每次提交的代码对关键的功能点没有影响,这类用例设计的时候粒度要小,且要有针对性。再如,在做性能测试的时候可以使用自动化测试,尤其那种反复操作的场景,通过自动化测试能够帮我们更有效的发现问题。我们要把自动化测试当作一个减轻我们工作量的工具,而不应该被自动化测试套牢。自动化测试不能解决所有的问题,我们而是需要自动化测试帮我们解决很多关键的问题。自动化测试的实施要遵循28原则,充分考虑到自动化测试的收益率,让我们能够通过投入20%的工作来获得80%的收益是最好的。
8.目前我负责视频的UI自动化,底下一般有很多个栏目,但是这些栏目的变动性很大,由后台配置,不确定性很大,请问这个时候自动化怎么进行?
答:我觉得这个可以这样来做,把逻辑测试和UI界面展示测试分开来做。这个分为两部来做测试1. 后台下发的东西,我们可以通过开发的几口拉取下发下来的东西,然后检验拉取下来的东西是否符合逾期2. 根据下发下来的东西要再界面展示的规则构造一个fake的数据,然后把这个fake的数据展示到界面上看看是不是符合展示的逾期。
9.UiAutomator还需要获取界面控件元素id等,当这些元素获取不到的时候,你们都采取手工吗? -----例如我们视频全屏、悬浮窗等状态获取不到界面控件,导致大多用例实现不了自动化,如果是你们,怎么解决?
答:如果开发同学不配合或者其他原因导致界面上的元素真的是获取不到,那么最坏的打算是使用坐标的方式点击。 当然这个坐标也是最好是放到配置文件里面,方便我们使用的时候修改。关于结果验证,我们可以通过截图的方式来做。
10.想问下,你们这边是怎么准备测试数据的呢?专门为UI测试准备一套mock的数据还是咋的吗?有些页面可能要特定的数据才能点进去呢。
答:一般测试数据会保存在一个xls里面或者配置文件里面,执行脚本的时候去读取这些文件里面的数据进行测试。关于mock也是具体问题具体分析。还是根据项目的具体情况去准备测试数据,如果像那种需要后台下发的实时数据这种一般都是在客户端模拟一套,仅仅用来展示,然后后台拉取的数据再从逻辑层单独来做。
11.请问appium和uiautomator这两个工具,各有什么优势?为什么是选择uiautomator而不是appium?
答:appium的优势是可跨平台操作,同时支持IOS和Android的自动化测试。uiautomator是运行在手机里面的,可以断开USB执行,并不是说一定要选择哪个测试框架,具体选择哪个测试框架要看我们测试的需求。假设我要测耗电量,那么就不能选用appium。
12.如果应用迭代周期比较短,你们认为该如何应用自动化测试?
答:可以用自动化测试来保证关键功能没有问题。或者用自动化测试作为我们测试的辅助手段。
13.如果自动化用例中涉及到支付的场景,能否解决?
答:uiautomator可以跨应用,跳转过去的支付界面是个另一个应用的界面,这个理论上是可以做到的。
14.找不到控件的前提下(如H5界面、悬浮窗等),有没有更好的解决办法/对于这些获取不到元素的情况你们是怎么处理的?比如H5页面,toast这些。
答:这个问题与第9个问题类似,H5页面可以采取javascript来测试。Toast一般是用来验证的,验证获取不到的时候我们可以采取截图的方式。
15.用clickAndWaitNew..那个点击操作,咋脚本还是比手机上的实际操作快呢,必须只能用sleep放在操作后呀,验证码可以解决吗?比如注册的功能。需要用验证码,咋去获取
答:这个跟手机的性能和界面渲染有关,我们使用sleep的时候要加上一些判断条件,尽量不要在那“死等”。验证码的问题目前还没有好的解决办法,这个可以跟后台沟通, 把我们要登录的帐号设置为白名单这样的登录的时候就可以避免下发验证码。
16.对与中文不能输入的情况,在U1中你们是怎么解决的?
答:中文是可以输入的,可以先把输入的中文转换成为uinicode,然后再把uinicode转换成中文set到文本框中。
主办方 腾讯移动品质中心TMQ 介绍
腾讯移动品质中心-Tencent Mobile Quality Center 它是腾讯最早专注在移动APP测试的团队,在十余年的时间内承担了近十款业界领先产品测试工作,近七年的android及iOS自动化测试项目经验,为腾讯向移动转型提供了多项质量方案和关键专利。想知道腾讯多款亿级APP的品质秘密么?欢迎关注腾讯移动品质中心TMQ公众号,这里有TMQ专家团给您带来的移动测试技术精华。