• 多测师讲解 app---面试课程之复习(003)---高级讲师肖sir


     
    安卓测试和web端测试的区别?
    一、android自动化测试基础知识注意分三大块:
    1、框架选取
    2、应用场景
    性能测试:关键路径的性能测试
    稳定性测试
    功能测试:常用核心功能点测试
    兼容性测试
    接口测试
    单元测试
    线上监控测试
    3、总结
     
    二、领域
    可测对象
    原生应用APP、混合应用APP、移动Web App
    APP运行环境:真机、模拟器
     
    测试对象App运行平台
    IOS、Android(目前这两种是市场主流);Windows、FirefoxOS。
    测试程序运行平台支持 Windows、Linux、Mac OS;
     
    支持的测试语言
    python、Java、ruby、php、js、C#;主流是python;
     
    monkey
    robotium
    uiautomator
    appium
    athrum(同时支持ios和Android)
     
    我们主讲appium框架
    Appium简介
    开源、跨平台、多语言支持的移动应用自动化工具
     
    1、appium的原理:
    1.appium是c/s模式的 
    2.appium是基于webdriver协议添加对移动设备自动化api扩展而成的,所以具有和webdriver一样的特性
     
    appium有客户端和服务器两部分组成,客户端与服务器端通过json wire protocol进行通信
     
    2、appium的优缺点:
    优点:
    支持多种应用程序测试
    被测试的应用程序不需要特殊编译
    脚本不限制语言和工具
    支持应用之间的跳转
    是一个跨平台的测试框架,可以使用同一个api开发出在android和ios上都可以运行
    缺点:
    该工具必须连接电脑才能实施自动化测试,遇到脱机执行的场景就不能满足需求
    该工具只能用于UI的自动化测试,在很多情况下测试验证只能通过界面来进行
     
    三、环境搭建
    1、Android自动化环境搭建所需要的包:
    android-sdk
    appium(版本视情况而定)
    pip install Appium-Python-Client
    jdk
    python
     
    2、环境原理:(在这里需要手动画并且引入Android_sdk)
     
    这个server的主要功能:监听一个端口,然后接收由client发送来的命令(command)。解析这些command,把这些command转成移动设备可以理解的形式发送给移动设备,然后移动设备执行完这些command后把执行结果返回给server, server再把执行结果返回给client。
     
    问题:什么是Android_sdk?
    SDK:(software development kit)软件开发工具包。被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。
    SDK:
    SDK (Software Development Kit)翻译成中文就是"软体开发工具组"
    是用来帮一个 产品 或 平台 开发应用程式的工具组,由产品的厂商提供给开发者使用的。
    通常是 某一家厂商 针对某一 平台 或 系统 或 硬体 所发布出来用以开发应用程式的工具组,在这个工具包里面,可能包含了各式各样的开发工具,模拟器等。给 Android平台 使用的 Android SDK 就是用来开发 Android系统上面的应用程式。
    SDK下包的说明:
    1:add-ons:Android开发需要的第三方文件和软件库
    2:docs:Android的文档。包括开发指南、API参考、资源等
    3:extras:扩展的附加包
    4:platforms:你安装下载的所有Android平台,分版本存放
    5:platform-tools:平台相关的工具
    6:samples:所有的样例程序
    7:system-images:系统使用的图片
    8:temp:临时操作或缓存的目录
    9:tools:应用Android平台进行开发所需要的一些开发工具
     
    appium针对android的自动化原理
     
    1.测试电脑client端是test script也就是webdriver测试脚本
    2.server是appium在服务端开启的(默认端口是4723),appium server接受client发送的请求,解析请求内容,调用对应的框架响应操作。
    3.appium server把请求转发给中间件Bootstrap.jar,Bootstrap.jar安装在设备上监听4723端口 并接收appium的命令,再调用UiAutomator的命令执行。
    4.Bootstrap把执行的结果返回给appium server,appium server再把结果返回给appium client。
    appium原理总结
     
    appium client执行脚本,appium server把请求转发到bootstrap.js或者是bootstrap.jar然后再由bootstrap驱动UiAutomation或者UiAutomator去设备上完成具体的命令操作。
    再把执行结果通过bootstrap.js或者是bootstrap.jar返回给appium server ,再由appium server发送给appium client。
     
    注意:Bootstrap:可以理解为是一个框架
    3、常见adb指令(挑重点演示)
    adb命令模式:
    adb工具用法(占用端口号为:5037):
    app封装.noteadb devices 列出当前所有可连设备
    adb get-state获取设备状态(device(连接正常),offline(连接异常),unknown(未连接))
    adb kill-server(关闭adb服务) , adb start-server(启动adb服务)
    adb shell进入linux
    adb logcat(显示安卓系统日志)
    adb install(安装应用)带参数-r表示覆盖安装,后面接APK包名称adb install baiduwangpan_589.apk
    adb uninstall(卸载应用)带参数-k表示卸载后保留数据和缓存,后面接包路径adb uninstall com.baidu.netdisk
    adb reboot(重启手机)
    adb reboot-bootloader(重启手机进入fastboot模式)
    adb recovery(重启手机进入刷机模式)
    adb pull /sdcard/xingyongbao.apk:将手机(模拟器)中的文件发送到本地,存放路径就是你的当前dos路径
    adb push xx.apk /sdcard/将本地文件拷贝到模拟器和手机中
     
    注意:在卸载包时其包名与安装的报名不一样,怎么获取安装后的包名
    第一步:在dos窗口输入:adb shell
    第二步:shell中输入以下指令获取包名
    第三步:找到安装的包名:
    第四步:输入exit指令退出shell
    第五步:卸载,输入输入以下指令
     
     
    adb shell命令模式:(了解即可)
    pm install(安装应用)同上
    pm uninstall(卸载应用)同上
    pm list packages(列出所有已安装包)
     
    4、环境搭建过程:见详细搭建文档
     
     
     
    appium工具设置
    点击设置图标
    1、  可以对里边的server地址端口进行修改。
    2、  当session不一致时实行覆盖。
    3、  输出log文件方便查看执行的过程及结果。
     
     
    版本号一致检查
    Android SDK里的版本号获取,APPNIUM里的安卓设置版本号,还有脚本里的平台版本号,需要都保持一致。

     

    常见问题:
    1.Adb deviecs问答
    通过DOS命令,执行查看连接手机情况,出现如下异常
    C:Usersxu.lei>adb devices
    List of devices attached
    adb server version (31) doesn't match this client (39); killing...
    error: could not install *smartsocket* listener: cannot bind to 127.0.0.1:5037: 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。 (10048)
    This application has requested the Runtime to terminate it in an unusual way.
    Please contact the application's support team for more information.
    could not read ok from ADB Server
    * failed to start daemon *
    error: cannot connect to daemon
     
    原因分析:
    这个是socket 的端口被占用了,我这里是因为360手机助手占用了这个端口,所以其他的就不能够用了。
    查看端口被谁占用的方法有两个
    第1个方法是采用DOS命令,
    netstat –nao
    第2个方法是windows系统自带的"资源管理器"能查看端口使用情况,具体操作方法如下:
     
    (1)如下图红色箭头标记,鼠标右键单击任务栏空白处,在弹出的右键菜单里选择"任务管理器":
     
    (2)如下图红色圆圈标记,在"任务管理器"里,切换到"性能"选项卡,再点击"打开资源管理器":
     
    (3)在"资源管理器"里,点击"网络",在"网络活动的进程"中勾选需要查询的进程,这时最下面一栏"侦听端口"就会显示这个进程(软件)所使用的端口了:
     
     
    解决办法:
    卸载了360的手机助手就可以了,
     
    首先 打开360安全卫士,点击右下角的 "更多+"-》点击"我的工具"-》点击左下角的"编辑"-》点击"手机助手"上面的X号
     
    这个时候可能会删除不了,那么就要删除手机助手的进程,如图里面的360Mobile。。这些,然后就可以删除了
    然后再执行adb 命令就可以了
     
  • 相关阅读:
    【马克-to-win】学习笔记—— 第五章 异常Exception
    【马克-to-win】—— 学习笔记
    Eclipse 日文乱码怎么解决Shift_JIS
    DB2设置code page(日文943)
    如何得到一个接口所有的实现类(及子接口)?例如:Eclipse IDE
    【VBA】随机数
    【VBA】利用Range声明Array(一维/二维)
    【VBA】Do While……Loop循环,遍历某列
    【58沈剑架构系列】DB主从一致性架构优化4种方法
    【58沈剑架构系列】主从DB与cache一致性
  • 原文地址:https://www.cnblogs.com/xiaolehua/p/13863221.html
Copyright © 2020-2023  润新知