• 移动端测试


    before

    在appium之前,还需要进行一些必要的环节.........
    移动端测试是什么?
    移动端测试是指对移动端应用进行的测试,测试应用功能是否满足特定的需求。

    移动端测试分类

    • APP功能测试。
    • APP自动化测试。
    • APP安全测试。

    APP功能测试

    APP功能测试主要包含:

    • 业务逻辑测试:
      • 依据产品的设计文档,设计测试用例。
      • 再加上一些隐性的需求测试,比如产品文档中没有涉及到的。
    • 兼容性测试:
      • 系统版本:
        • Android:原生Android系统及定制版本。
        • ios:原生系统。
      • 分辨率:
        • 主要关注图片的分辨率,720 * 12801920 * 1080,一般公司会根据分辨处理图片。
      • 网络情况:2G、3G、4G、WiFi,比如在2G网络环境,应用会不会特别慢,或者卡死等。
    • 异常测试:
      • 热启动应用:应用前后台切换的过程。
      • 网络切换:WiFi --> 4G,应用应处于可用状态。
      • 中断恢复:WiFi --> 断网 --> 4G,处于下载中的应用,怎么处理?断点续传?还是等待WiFi下载?
      • 电话:比如正在看片片,突然来个电话,接完电话后,返回应用,此时的应用处于什么状态?
      • 信息:玩游戏中,弹出了一个消息提示,不应该影响游戏。或者查看消息后在回来,游戏处于什么状态。
    • 升级安装卸载测试:
      • 升级:临近版本升级(1.0 --> 1.1),跨版本升级。
      • 安装:
        • 首次安装。
        • 卸载安装。
        • 覆盖安装。
      • 卸载:正常卸载、下载一般终止下载,完事在下载。
    • 健壮性测试:
      • 手机资源消耗:CPU、RAM。
      • 流量消耗:数据流量、比如说图片加载消耗。可以进行压缩,图片压缩、数据压缩。
      • 崩溃恢复测试:APP闪退、系统结束执行时要做那些处理。

    http://mi.talkingdata.com/index.html

    APP安全测试

    主要由专门的安全测试人员通过专业的安全测试工具进行的测试。

    APP自动化测试

    关于自动化测试介绍,参考:

    https://www.cnblogs.com/sundawei7/p/11959551.html

    主流工具
    目前,主流的移动端自动化测试工具主要包括:

    工具支持语言跨平台跨应用 
    Robotium Java Android 不支持  
    Macaca Java、Python、node.js Android、IOS 支持 可以作为简洁版的Appium工具
    Appium Java、c#、Python、PHP、Perl、Ruby、node.js Android、IOS、H5 支持  

    还有:

    • UiAutomator。
    • Monkey。
    • MonkeyRunner。
    • Instrumentation。
    • Athrun。

    如何选择工具,应该关注哪些点?
    在选择移动端自动化测试工具中,我们应该从这些点作为参考:

    • 是否跨应用?
    • 是否支持获取toast?
    • 是否支持nativewebview

    这里我们选择Appium作为主要移动端测试工具。

    about appium

    Appium由Saucelab公司基于node.jsexpress框架开发http server,遵循rest fuljson wire协议,来驱动Apple系统UIAutomation库、Android系统的UIAutomator框架。

    UIAutomation:由苹果官方提供的自动化测试库。
    UIAutomator:由Android官方提供的自动化测试库。

    appium与selenium

    appium继承了selenium的webdriver,也就是selenium2,所以appium在调试中也调用了selenium的某些功能。

    appium起到了一个电脑连接移动端的桥梁,然后我们可以在电脑上非常方便(一点也不方便!)的调用selenium工具来调试。

    这无疑是个好消息,因为由于有了selenium的基础,学起appium将会不那么头痛!

    简要聊聊appium的原理。
    Client/Server Architecture

    appium的核心其实是一个暴露了一系列REST API的server。

    这个server的功能其实很简单:监听一个端口,然后接收由client发送来的command。翻译这些command,把这些command转成移动设备可以理解的形式发送给移动设备,然后移动设备执行完这些command后把执行结果返回给appium server,appium server再把执行结果返回给client。

    在这里client其实就是发起command的设备,一般来说就是我们代码执行的机器,执行appium测试代码的机器。狭义点理解,可以把client理解成是代码,这些代码可以是java/ruby/python/js的,只要它实现了webdriver标准协议就可以。

    这样的设计思想带来了一些好处:

    • 可以带来多语言的支持;
    • 可以把server放在任意机器上,哪怕是云服务器都可以;(是的,appium和webdriver天生适合云测试)

    Session

    session就是一个会话,在webdriver/appium,你的所有工作永远都是在session start后才可以进行的。一般来说,通过POST /session这个URL,然后传入Desired Capabilities就可以开启session了。

    开启session后,会返回一个全局唯一的session id,以后几乎所有的请求都必须带上这个session id,因为这个seesion id代表了你所打开的浏览器或者是移动设备的模拟器。

    进一步思考一下,由于session id是全局唯一,那么在同一台机器上启动多个session就变成了可能,这也就是selenium gird所依赖的具体理论根据。

    Appium Server

    这就是每次我们在命令行用appium命令打开的东西。

    Appium Clients

    由于原生的webdriver api是为web端设计的,因此在移动端用起来会有点不伦不类。appium官方提供了一套appium client,涵盖多种语言ruby/java/python。在测试的时候,一般要使用这些client库去替换原生的webdriver库。这实际上不是替换,算是client对原生webdriver进行了一些移动端的扩展,加入了一些方便的方法,比如swipe之类,appium client让我们可以更方便的写出可读性更好的测试用例。

    Desired Capabilities

    Desired Capabilities携带了一些配置信息。从本质上讲,这个东东是key-value形式的对象。你可以理解成是java里的map,python里的字典,ruby里的hash以及js里的json对象。实际上Desired Capabilities在传输时就是json对象。

    Desired Capabilities最重要的作用是告诉server本次测试的上下文。这次是要进行浏览器测试还是移动端测试?如果是移动端测试的话是测试android还是ios,如果测试android的话那么我们要测试哪个app? server的这些疑问Desired Capabilities都必须给予解答,否则server不买账,自然就无法完成移动app或者是浏览器的启动。

    python里的Desired Capabilities配置:

    from appium import webdriver
    
    desired_caps = {}
    desired_caps['platformName'] = 'Android'
    desired_caps['deviceName'] = 'myAndroid' 
    desired_caps['appPackage'] = 'com.android.calculator2'
    desired_caps['appActivity'] = '.Calculator'
    driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

    appium执行流程

    由上图我们也能知道都是需要安装什么了吧!

    PS:请按照下面列出的顺序进行安装。

    • Python环境:Python3.6.6, 或者别的3.x版本。你可以在下面的百度云链接中下载,推荐Python3.5以上,为了方便编写代码,还需要安装PyCharm IDE(可选,也可以vs code)。
    • node.js。
    • Java环境:要求是java jdk 1.8及以上。
    • appium。
    • Android SDK。
    • 手机/模拟器:可以是夜神模拟器或者是其他的。
    • Appium-Python-Client。
  • 相关阅读:
    SQLServer 2008 附加数据库出现问题
    Window8下遇到的一些问题
    SqlServer中bit类型的性别的一些问题
    Sql server 2008 的MSSQLSERVER启动不起来
    GridView的 使用
    hibernate连接Mysql中文乱码处理
    windows部署tomcat到MyEclipse
    MyEclipse Eclipse下配置各种插件的方法
    android获取手机的网络状态
    android为HttpClient和HttpURLConnection添加中国移动代理
  • 原文地址:https://www.cnblogs.com/sundawei7/p/11959525.html
Copyright © 2020-2023  润新知