原文出处http://www.toutiao.com/a6268089772108333314/

做过UI自动化测试同学,都会深深体会几个痛点:维护量大、适配量大、编写代码巨大等。基于这些问题,大家都会想到抽象封装通用常用方法,编过程序的同学都知道,如何提高编程速度,那就是有一套自己熟悉和好用的函数库,这样编程很大部分就如搭积木游戏,可以快速搭建程序。基于此我们设计了第一套封装结构模式,如下图所示:

从以上结构,不难发现应用基础库比较凌乱,没有分类。如果是自己写的还记得住,要是移交给别人,就显得很糟糕了,别人不愿意去看去用。那么,急需解决的问题就是如何分类比较合理。

从基于UI测试的测试对象出发,我们测试的对象为一个个的Activity,那我们可以使用Activity来进行分类。首先每个Activity 都有自己的专有方法,如拨号界面,会有输入号码、拨号、删除号码等功能,我们将每个Activity划分为一个单独的类,类里面把这个Activity 涉及的方法都写好提供给用例调用,如下图拨号界面的属性与功能的基础分解。

依据以上 Activity 封装模式,我们还需要在结构中再加入一层 Activity 函数库,那么,新的结构图如下所示:

这里涉及了几个Activity的查询方法。[LG1]

方法1:从开发那取得manifest文件

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

adb shell dumpsys package <包名>

方法3:查询当前Activity 栈顶的Activity,推荐使用此方法

adb shell dumpsys activity

找到栈顶Activity

[LG1]这几个查询方法再做下比较吧?

方法4:找焦点Activity

adb shell dumpsys activity | find “mFocusedActivity”

简化搜索字符

adb shell dumpsys activity | find “mF”

以上方法,最快捷的是方法四可以马上知道当前的页面信息,最全面的是方法1与方法2,使用哪种方法需要依据实际使用情况进行选择。

之前我们介绍过,基于同种布局抽象出通用方法。我们将常用的通用方法,放在公共库中,将每个界面方法放于每个单独界面的类中。下面来看一下基本基本类图:

在各种方法都固化完后,编写用例就成了搭积木游戏,可以快速的搭建需要的用例。将用例的逻辑写在用例中,用例的数据分离出来全部写在对应的Activity 类中。这样平时主要维护已有的各个Activity内方法与数据。

最后再按照功能将用例结构抽象成为一个标准框架层理论,这样大家就更容易明白与理解了。

基于此框架,基本不变的层为:布局层、组件层、通用层。界面层会因为界面的变化而进行维护变化。设计时候尤其注意函数的通用性、函数的参数、各种重载函数,以及各种异常情况都需要重点考虑和规避。作为通用的方法,为了保证函数的调用不出问题,也是需要测试的,我们必须写一份用例来测试这些方法,模仿单元测试方式来检查这些通用方法的可用性、稳定性、可靠性,以此来保证在应用变化,Android版本变化时候能快速的发现哪些函数存在的不兼容现象,进行及时的修改,保证业务的正常进行。

界面层的所有方法都基于接口方式进行设计,实际的用例由这些接口方法组成。当版本变化的时候只需要重新实现接口重新变化一份,用例只需要变换一下实例化的类就可以完成切换用例。如此这样,用例的固定步骤也可以不用变化,仅仅变化每块积木里面的内容就可以。

以上内容总结为如下几点:

  • 合理封装方法,优化工程架构

  • 组件化

  • 布局化

  • 界面化

  • 接口化

APP 自动化测试封装结构模式相关推荐

  1. 移动App自动化测试

    原文出处https://www.toutiao.com/i6473606106970063374/ 原文作者是今日头条的:一个字头的诞生 在此感谢原文作者的无私分享! 移动App自动化测试(一) 目前 ...

  2. APP自动化测试系列之获取Android的Activity 和 Package

    VOL 174 11 2020-11 今天距2021年50天 这是ITester软件测试小栈第174次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上 0 ...

  3. APP自动化测试系列之Appium介绍及运行原理

    VOL 161 23 2020-09 今天距2021年99天 这是ITester软件测试小栈第161次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上 0 ...

  4. APP自动化测试系列之adb连接真机和模拟器

    VOL 160 21 2020-09 今天距2021年101天 这是ITester软件测试小栈第160次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上  ...

  5. APP自动化测试系列之Appium环境安装

    VOL 158 16 2020-09 今天距2021年106天 这是ITester软件测试小栈第158次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上  ...

  6. 2022软件测试技能 APP自动化测试 Python+Appium+Uiautomator2 实战教程

    系列文章目录 提示:阅读本章之前,请先阅读目录 文章目录 系列文章目录 前言 一.Appium 原理 二.环境搭建,一键搞定 1. 安装Java JDK 2. Android SDK 安装与配置 3. ...

  7. APP自动化测试框架-UiAutomator2基础入门

    前言 很早以前,我用uiautomator+java实践过Android APP自动化测试,不过今天要提的不是uiautomator,而是uiautomator2.听起来uiautomator2像是u ...

  8. Mobile App自动化测试技术及实现

    Mobile App自动化测试技术及实现 Android 自动化框架 iOS自动化测试框架 Appium测试框架的组成 Appium的工作流程 Appium Server Appium Inspect ...

  9. 2022年最新csdn涨薪技术栈-app自动化测试概述

    目录 一. 应用背景 二. 测试框架介绍 1.Android自动化框架 IOS自动化框架 三. 测试流程与分类 1.测试流程 2.自动化测试分类 四. 移动操作系统与app类型 1.移动操作系统and ...

最新文章

  1. python等号语法错误_Python干货:代码编写规范
  2. springcloud配置文件上传大小_SpringCloud实战二-Nacos
  3. Git之怎么通过命令修改前面几次提交的记录
  4. P4495-[HAOI2018]奇怪的背包【数论,dp】
  5. [css] 请举例说明css有哪些不可继承的属性?
  6. 如何用参数化SQL语句污染你的计划缓存
  7. 什么是CMMI能力成熟度模型?企业为什么要做?
  8. 傲澜智伴机器人_通辽智伴机器人,智伴机器人招商,傲澜智伴机器人
  9. 美军马赛克战三大技术优势!融入未来作战还需克服的四大难点
  10. 天父的花园-赞美之泉(音乐河4)
  11. Nunit使用(一)
  12. Docker在自动化测试中的实践应用,看了必有提升
  13. 人脸识别的发展和基础概念
  14. java中包地作用_什么是PCB设计中的包地
  15. Access-Control-Max-Age是什么
  16. ATmega8仿真——LED 数码管的学习
  17. 解构微信(二):团队是研究院、艺术中心甚至学校
  18. adobe air 工程师_使用Adobe AIR将CSS带到桌面!
  19. ALCO铸钢螺栓体AVG系列球阀
  20. 基于C#实现的坦克大战游戏的最短路

热门文章

  1. dpkg和apt-get命令的用法
  2. rm如何在Linux中删除一个大文件
  3. linux 学习 vi简介; vi下三种工作方式。
  4. linux 版本信息 64位,Centos查看版本信息
  5. 测量不确定度matlab,基于MATLAB用蒙特卡洛法评估测量不确定度简介,目录书摘
  6. jmeter解决不同线程组之间传递参数问题
  7. React—Native开发之 Could not connect to development server(Android)解决方法
  8. 接口返回[object,Object]解决方法
  9. 将对象序列化为字符串
  10. 忽略git项目上的任何#39;bin#39;目录