安卓测试和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;
二、常见的app测试工具(https://www.cnblogs.com/liyuanhong/articles/4887914.html)
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 命令就可以了