APP测试基础知识

一、app测试与web测试的区别:

兼容性:对不同的设备进行测试
安装,卸载:
横屏,竖屏:
干扰测试:来电干扰,临时切换到后台,网络环境的切换(wifi-流量环境)
埋点:主流的电商类,社交类app(只要有流量)都有埋点,埋点用于记录用户对app的操作日志。
测试时要根据埋点的技术实现来指定测试方法。
弱网:模拟2,3,4,5G等不同的网络带宽下app是否可以正常的使用

二、app与web应用的区别:

web应用:浏览器(客户端)+web应用服务器+数据库服务器 B/S架构
app应用:android|ios(客户端)+web应用服务器+数据库服务器 C/S架构
web应用客户端,是通过浏览器发送http请求,得到响应,响应的内容为html文本,通过浏览器解析html得到页面。
app应用,所有的页面(界面元素,布局)保存手机上,但具体的数据保存在服务端,通过客户端向服务端发起http请求,服务端响应json数据,客户端解析json并填充到页面中
技术区别:web的客户端解析html,app,package+activity
activity:对应app中的一个页面,主要包括页面的生命周期管理+页面元素布局

三、adb(安卓调试桥)

用于在pc(开发|调试机)与设备之间建立通讯。

常用命令包括安装,卸载,查看包,查看activity,查看设备android版本号

以及发送shell

四、monkey

1.用于做稳定性测试,向手机发送伪随机事件。
monkey是一个命令工具,在每个Android设备上自带的。
monkey主要包含11类事件,常用事件:
触摸事件Touch,手势事件 motion,旋转rotat,启动activity
adb shell monkey [-option] counter
adb shell monkey 100
-v monkey日志级别 1-3级,日志,重点关注是否异常
-s 伪随机种子值,用于根据该值重复执行相同的事件,常用于错误重现。
-- throttle 毫秒数,多个事件之间的时间间隔
--pct-touch 百分比,事件占比
--ignore-crashes忽略宕机异常,继续发送随机事件

五、稳定性测试

1.需求分析,了解app的主要功能,以及主要的操作
2.明确apk的包名,启动页面
3.设计具体事件生成

adb shell monkey -p 包名 --pct-touch 50 --pct motion 20 --pct-rotation 10
--ignore-timeouts -v -v 1000   1>xxx.log    2>error.log
monkey脚本,用于在指定的设备,指定的app,指定的页面(activity),指定的位置坐标(x,y),执行指定的动作(点击,发送字符串),本质上是monkey提供的一组API,通过编写脚本调用函数实现更加精准的事件。
改脚本的格式为:
头部代码
type = raw events
count = 1
speed = 1.0
主体代码
start data >>
打开某个页面
LaunchActivity(包名,activity名)
在某个坐标上执行某个动作
Tap(x,y)
UserWait(2000)
DispatchString(xxx)
脚本写好后,必须放到设备上才能执行,执行脚本的命令,就是monkey命令
adb shell monkey -f 脚本名 -v -v [使用脚本的方式 -s --pct-xxx]
--ignore-xxx count  1>xxx.log    2>error.log

六、app自动化测试

Appium
Appium-Client(pip install appium-python-client)发消息给Appium-Server(Appium-desktop)
Appium-Server转发给设备上的bootstrap.jar,由bootstrap.jar调用手机uiautomatic工具执行具体的app的操作
完成以上流程,需要创建一个server到设备上的session,为了建立该连接,需要制定一个caps参数,该参数是一个json格式的,必须的参数{platform:android | ios, version:7.1.2, device:127.0.0.1:62001}

七、appium自动化测试原理

客户端:pip appium-python-client (安装在pc上的)

服务端:下载的appium desktop(安装在pc上的)

1.从客户端连接到服务端

2.从服务端连接到设备(需要提供,平台类型,平台的版本号,设备的地址,app包名,app activity名)

caps就是从服务连接到设备的json格式的需要提供的参数

webdriver.Remote("http://localhost:4723/wd/hub"<服务器地址>,caps)

localhost == 127.0.0.1 == 本机

八、常用的api命令

1.文件读取写入

adb push <local><remote>
eg:
adb push c:\Users\Desktop\kyb.txt /sdcard

2.将文件从设备读取到pc

adb pull <remote><local>
eg:
adb pull /sdcard/server.log c:\Users\Desktop
注意:由于权限问题,不能直接pull到电脑磁盘根目录,否则会报错

3.屏幕截图

adb shell screencap  /sdcard/screen.png
adb pull /sdcard/screen.png  c:\Users\Desktop

4.adb服务启动和关闭

adb kill-server
adb start-server

5.元素定位

八种定位方式:id,name,class name,tag name,link text,partial link text,xpath,css selector。其中id,name,class name,tag name是根据元素的标签或元素的属性来进行定位;link text,partial link text是根据超链接的文本来进行定位;xpath为元素路径定位;css为选择器定位(样式定位)。
 

6.TouchAction(按压,长按,点击,移动,暂停)

对应操作的方法:

短按:press()  按压一个元素或坐标

TouchAction(driver). press(x,y) 

长按:longpress()  比按压多个一个duration(按压时间)时间参数,以毫秒为单位

TouchAction(driver).longpress(x,y,1000) 

点击:tap()

移动:move_to()

暂停:wait() 等待时间,单位毫秒

释放:release() 结束屏幕上的一系列动作的命令操作

执行:perform() 讲执行的操作发送到服务器的命令操作

组合示例:

TouchAction(driver). press(x,y) .wait(1000).move_to(x2,y2).release() #点击->等待1000毫秒->移动->释放

7.MultiAction多点触控

在网页中我们经常使用缩放操作来便利的查看具体的信息,在appium中使用MultiAction多点触控的类来实现

MultiAction是多点触控的类,可以模拟用户多点操作。主要包含加载add()和执行perform()两个方法. MultiAction一般和TouchAction结合使用,故需要导入以下模块:

from appium.webdriver.conmmon. touch_action import TouchAction

from appium.webdriver.conmmon. multi_action import MultiAction

使用方法如下:

加载:add()

add(action1,action2,…)将touchaction的对象添加到MultiAction中

action1,action2描述一个手指要执行的动作

例如:

action1=TouchAction(driver)

Action1.press(x,y)wait(1000).move_to(x1,y1).release()

MultiAction(driver).add(action1)

执行:perform()

perform()执行存储在对象中的操作,结合add()使用,

例如:

action1=TouchAction(driver)

Action1.press(x,y)wait(1000).move_to(x1,y1).release()

MultiAction(driver).add(action1)

MultiAction(driver).perform()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值