Android UI自动化用例设计技巧

一、封装方法

1、编程如何越来越快:

  首先,需要经验丰富,知识面广。

  其次,每一个熟练编程的人员,都会有自己的一个库,解决各种问题、各种通用的方法函数。

  同理,自动化脚本也是编程,测试用例则为需求,UI自动化编写虽然容易,但是界面变化快、维护庞大。所以封装通用方法,是最快最容易的途径。

2、哪些方法需要封装:

  公共的操作方法

  经常使用的步骤:超过两次以上

  经常使用的组件:输入框、文本框、列表

  经常操作的布局:多个组件组成通用的布局

  经常操作的页面:ui页面由一个一个单独Activity组成,就可以将Activity封装成单独的类

  通用的工具函数:文件操作、时间操作之类

3、初级封装:

  通用方法库:将通用的方法封装在一个java文件中,比如登陆、文件操作、时间操作

  专用方法库:比如登陆专用的方法:qq登陆、微博登陆等

  用例集:通过调用方法库中的方法实现用例,这样看起来简洁清晰。

4、设计一个用例的过程:

  先编辑好用例执行步骤、顺序

  然后设计好对应的方法名

  然后新建一个class将这些写入,要将编辑好的用例步骤、方法名等作为注释,这样更清晰

  比如设计简单用例如下:

  Cer_MTBF_01:联系人的添加和删除

  预置条件:1、在添加联系人之前通讯录内无任何联系人

  

执行步骤 对应方法

打开通讯录

openContent

清空联系人
clearContent

新建联系人

newContent

确认联系人新建成功
confirmContents

删除联系人
deleteContens

确认联系人删除成功
confirmDelContents

退出通讯录
exitContent

二、接口化

1、面向接口的变成也可以引入自动化用例编写中。可以用到设计核心用例,基本核心用例20-30条,核心功能基本不会变,但是UI变化比较大,这样我们没必要把用例重新写一遍,只要把方法重新实现一下。

  设计用例与实现用例分离

  规范化用例

  多态-应用的多版本

三、组件化与布局化

1、对常用的组件单独编写组件常用方法。我们最终获取的每个对象都为某一个类型的组件

 例如:对EditView设计通用的方法,首先想想你是如何测试编辑框的,将这些方法全写在抽象的 EditView类中

    获取EditView对象

    输入文本

    清除数据

    判断编辑框类型

    判断编辑框

    各种异常与特殊方法预置、

 

四、界面化

1、界面化知识应用由不同的Activity组成,那我们可以将每一个界面封装成一个类,操作、方法、变量,也就是属性和方法再单独封装。

这样只要哪个界面有变化,再修改对应的Activity就可以了。

  实例:

    拨号盘页面

  属性:

    常用的固定号码,如:10086,10010,10000

    常用的暗码:*#06#、*#*#4636#*#*

    组件ID:页面各个组件ID按功能命名

    页面对象:页面各个UI对象

  方法:

    输入号码

    清除号码、删除号码

    拨号

    其他设置(添加联系人、暂停、等待、发送短信)

    选择号码

2、Activity查询方法

   方法1:有源码,从Manifest文件中获取

   方法2:使用命令查询应用的全部Activity

   adb shell dumpsys package<包名>

   方法3:查询当前Activity栈定的Activity

   adb shell dumpsys activity

   方法4:找到焦点Activity

   adb shell dumpsys activity | find "mFocusedActivity"

   简化搜索字符

   adb shell dumpsys activity | find "mF"

五、逻辑与数据分离

1、实际用例编写过程中有很多数据非固定的而是可变的

如:

   账号信息:邮箱账号、无线登陆账号、即时通讯软件

   逻辑控制:log输出、代码分枝切换

   电话号码

   。。。。。

对于可变的数据,我们应该剥离出来,使用一个数据类来进行控制和获取 

思路:

我们单独设计一个class,功能就是,从某个地方读取变量,再赋值给我们设计好的变量。

2、数据获取方式

  1)从命令传入参数:-e 键值对

  2)从文件传入参数:写一个配置文件,文件里包含配置变量的信息,放到手机目录下,然后文件读取,赋值给我们的变量。

  3)从云端传入参数:需要有一个云服务测试系统,用例通过POST请求,请求服务器,服务器上设置好信息,服务器再把信息返回给用例,用例再把信息赋值给对应的变量,然后其他用例再从数据类中读取。

简单实例:

  建一个管理数据的package

  建一个数据类

  设置变量

  在写一些获取变量值的方法

    public class Date extends UiautomatorBase{
        public static String wlan="";
        public static String QQ="";
        public static String phone="";
    }

    public void getConfig(){
        wlan="";
         QQ="";
        phone="";
    }
    }
    
时间: 2024-10-13 13:53:19

Android UI自动化用例设计技巧的相关文章

命令行运行Android Robotium自动化用例或单元测试用例

本文目录 1.运行所有的测试用例 2.运行单个测试类或某个TestSuite 3.运行某个测试类里面的某个测试方法 4.运行两个不同的测试类或类中的方法 命令行运行Android Robotium自动化用例或单元测试用例 1.运行所有的测试用例 举个栗子:运行测试工程下的所有用例 1 adb shell am instrument -w com.taobao.taobao.test/android.test.InstrumentationTestRunner 2.运行单个测试类或某个TestSu

自动化用例设计

用例设计部分,无论是手工测试还是自动化测试,都必须要的环节,也是非常重要的环节.在做自动化的时候,用例需要考虑前置后置.步骤和对比,每一个部分都要有提供非常明确的测试数据,要考虑数据的重复使用是否会影响脚本的执行结果. 自动化用例设计原则 1.不是所有的手工用例都要转成自动化测试用例 2.考虑到脚本开发的成本,不要选择流程太复杂的测试用例,如果有必要,可以考虑把流程拆分成多个用例来实现脚本 3.选择的用例最好可以构建成场景.例如,一个功能模块,分多个用例,多个用例使用同一个场景 4.选择的用例可

自动化用例设计原则

1.自动化用例分3步走 初始化,输入准备 执行(方法调用),结果验证(断言) 清理环境 2.用例独立 不同的执行顺序,相同的结果 用例间没有状态共享 用例执行前的环境状态与用例执行结束后的一致 3.单一职责 一个单测用例只负责一个场景/行为 一个用例中的多个断言仅验证一个场景 如:调用api返回结果需要验证error no是否为0,error msg是否为空 一个方法,N个场景需要写N个用例 一个场景,多个方法可以写一个用例 遵循的原则就是一个场景对应一个用例 4.自描述 变量名.方法名.类名等

robot+selenium编写web UI自动化用例

通常我们可以用robot framework写接口自动化用例,但是有些站点如果未做前后端分离,迭代过程中又有大量的重复测试工作量,没有接口可调用验证,也有自动化测试需求,怎么办?这时候,那个深坑频现的web UI自动化就势在必行了.robot只是自动化框架,好在他稳定而且扩展性极好,要想驱动web浏览器自动干活,只需要安装另外一个神器selenium,下文将提纲携领介绍web UI如何入门,一旦你入了门,其余的就是baidu和看官网帮助的工作量了,建议用到了在查,不然也没卵用. 用例编写前提:

python3+Robot Framework+PyCharm第一个WEB UI自动化用例

这里只是列举一个很简单的例子,简单介绍工具的使用,编写用例之前,做好WEB UI自动化的准备工作,下载好chrome驱动(这里以chrome为例,不同浏览器有对应的驱动),注意驱动和浏览器版本要对应,不然启动浏览器会抛异常.例外要格外注意的就是编写用例的时候空格,关键字和参数直接是一个table制表符,也就是4个空格,建议在IDE里面把 · 设置出来,方便检查格式,这里就没有RIDE好用了,RIDE是纯表格式编程,希望python3能够尽快出个稳定版本的RIDE,造福大家~~ 测试报告 原文地址

接口自动化用例设计

返回结果是[{},{},{}]这种格式的,用assertNotEqual和assertIn进行判断,前提要先str一下,cases里的用例执行顺序是从上到下获取的 接口属性有两种,一种是get型的,一种是写入型的,get型的主要是获取信息,写入型的就是对数据库进行写入,修改的接口,所有项目都包含get型的和写入型的接口,get型的接口只要关注返回结果是否正常就可以,写入型的不要关注返回结果而是调用接口后去相关的数据库里取相关的字段值和你的预期结果进行校验 原文地址:https://www.cnb

dubbo接口自动化用例性能优化

前言 去年换了一个新部门,看了下当前的自动化用例的情况,发现存在三类性能问题: 本地调试运行时等待时间较长,就算是一个简单的case,执行时间都需要1分钟以上 单用例执行时间比较长,部分用例执行时间超过2分钟 集成到CI中运行时,执行时间较长 对于上述三个问题花时间进行了一定程度的优化,总结如下 优化本地调试时间 通过调试可以发现,一个需要执行660ms的case,在执行前的初始化工作就需要消耗约1分半钟,那么就需要思考下能否减少这部分初始化时间了. 公司用的自动化框架是基于AbstractTe

PageObject设计模式进行自动化用例的设计方法

关于PageObject模式进行自动化代码的编写: PageObject简而言之理解就是:一个页面作为一个类,页面中所有的元素均作为类中的方法 当然PageObject也是一种分层思想. 以Python登录163邮箱举例: BrowserDriver作为打开浏览器驱动的一个方式 Page是所有的页面组成的一个包 Testcase就是实际的测试用例 1.Page中存在一个基本的page类,所有的页面类都需要继承的类:这样写的好处就是元素一旦修改,UI界面发生变化,我仅需修改我的page就行,不影响

Android UI开发神兵利器之设计资源

UI设计资源推荐又来了,纯干货,不注水~ 各种背景资源图库 http://subtlepatterns.com/ ICON资源 https://www.iconfinder.com/ HOLO Color生成器 http://android-holo-colors.com/