• 老李分享:手机自动化测试工具层实现


    老李分享:手机自动化测试工具层实现

     

       poptest(www.poptest.cn)致力于测试开发工程师的培训,以培养能胜任做测试工具开发,完成自动化测试,性能测试,安全性测试等工作能力为目标。手机自动化测试在课程里计划完成的目标是自动化测框架的设计和搭建,以及完成持续集成的构建目标,那么测试测试框架的搭建我们为了管理更多的机器,并行执行测试用例的话,如何实现pc端和手机端的测试呢。下面我们分享下:

    一、PC 端监控工具实现

    1、手机自动化可解决的问题 
    (1) 压力测试:一些连续不断的操作,比如反复切换歌曲播放及联网操作等 
    (2) 极限临界测试:一些极限条件的构造(创建多个列表)及输入字符个数等 
    (3) 兼容及中断:比如在播放或下载歌曲的时候来电话或者信息(动态交互) 
    (4) 基本功能回归测试:这样大大的节约了时间和人力成本 
    (5) 预测试(版本接收测试) 
    (6) 专项测试

    2、实现原理 
    (1) 手 机 自 动 化 测 试 的 原 理 为 PC 上 一 个 控 制 端 ( 测 试 工 具 ) 与 手 机 上 的 一 个agent 端,通过串口、USB 或者无线方式将 PC 与手机终端相连,然后应用测试工具向手机发送请求或者命令,手机收到命令或者请求后,交给 agent 端解析,然后 agent 将这些解析的命令下发给手机的各个功能模块所能识别的命令,调用那些功能模块模拟操作。完成这些操作后,手机会返回一些信息,agent 可以抓取这些信息,然后传回给 PC 端,这样就完成了一个完整的手机自动化测试。 
    (2) 关键点在于 agent,可以利用 MMI_Command(AT comand)的方式来控制手机终端,原理就是给手机提供一个响应的接口。 
    (3) 而对于 PC 控制端,这个测试脚本用各种编程语言都可以,看如何定义。 

    3、TMTS 的 PC 端框架架(agent)说明

    为什么需要 PC 端框架

    单单依靠 Instrumentation 无法满足跨应用测试的需求 
    一些功能,如在测试用例中修改服务器端数据库,很难在移动设备端实现

    PC 端框架的原理

    PC 端运行时,会不停尝试去连接 PC 本地指定端口,由于执行了 adb

    forward 命令(所以要求运行测试的设备都是具有 root 权限的),PC 端实际会去连接移动设备端指定端口

    移动设备端框架在运行时会启动一个 ServerSocket,监听来自 PC 端的

    Socket 请求

    移动设备端发送 athrun 自定义格式的命令至 PC 端,PC 端收到后收到后

    会解析命令,然后执行具体的操作,将结果再通过 socket 发送至移动设备端

    PC 端目前提供的功能

    首先以下功能的 API 都在 framework 中提供,agent 只是负责实现这些功

    通过 Android 系统中 monkey 去点击屏幕上一个点或是物理按键(目前建立与 monkey 的通信机制,暂提供这两项操作,可根据自身需求进行扩展) 
    修改服务器端(android 应用是客户端)的数据 
    在模拟器上模拟来电,模拟短信

    二、关键技术实现

    1、消息传送机制 
    利用手机 Modem 中提供的 AT Command 通过串口向手机端建立命令消息通讯,目前手机厂商提供了常用的 AT Command,基本满足普通的自动化测试需求。

    2、图像识别 
    图像识别主要通过抓取 LCD 屏幕显示图像进行智能识别来模拟测试工程师的双眼辨识文字或图像信息,以此判断测试结果。主要涉及图像的获取和对比分析,智能识别是一个比较专业的研究领域,更进一步的研究需要进行调研,目前我们可以考虑是否能够通过第三方工具来实现,比如借助目前已经成熟的测试工具QTP 等。对于图像获取在手机平台上应该具备这样的接口,或者自行开发这个接口。

    3、测试脚本

    测试脚本的定义: 
    通常来说,测试脚本就是被测试工具执行的一系列指令,而不是在被测系统上执行的指令。测试脚本一般通过脚本开发人员编写或者录制脚本工具录制。拿我所用的手机自动化测试工具举例来说,被测试工具执行的是 python 脚本,而手机是用 C 开发的。最后发给手机执行的命令是通过手机 server 对测试工具发来的消息的解析。

  • 相关阅读:
    java 中类的加载顺序
    jdbc 连接数据库、批量操作、事务(oracle、mysql)
    一个空格引发的血案啊!
    Servlet 的生命周期与线程安全
    Java 方法的重写与重载
    java 序列化
    equals()与hashcode()的理解
    成功安装cadence SPB16.0
    stack implement C++
    windows 7 设置环境变量的方法
  • 原文地址:https://www.cnblogs.com/poptest/p/4956480.html
Copyright © 2020-2023  润新知