1、App测试在行业中的重要性
APP(Application),移动端的应用,在目前企业中,占比大约在50%
左右。意味着测试人员,有50%的几率接触到移动端的应用测试。
移动端自动化功能测试,目前主流是基于Appium来实现
的。其原因是:
1.Appium是继承于selenium
;
2.Appium是开源的,跨平台的测试框架
。Appium本身现在主流的应用版本
是desktop版本
。
2、Appium环境搭建
1. 安装JDK和SDK;
JDK(1.8版本):java development kit——Java开发工具库
SDK:software development kit——软件开发安装库,基于需要测试的安卓系统
来决定SDK安装版本——SDK manager
Chrome driver
2. 安装Appium desktop安装包。
3、APP测试必须了解的小技巧——p.55
1、adb(安卓调试桥
)指令,用于连接测试设备——adb shell;adb devices
用于查看adb连接的设备数及设备名称。
2、Appium Desired Capabilities:在Appium中,连接设备中的被测程序需要配置属性(即:Appium不是连接设备)
1.deviceName:设备名称。eg. 127.0.0.1:62001
2.platformName:操作系统名称。eg. 安卓
3.PlatformVersion:操作系统版本。设置 -> 关于手机,eg. 4.4.2
4.appPackage:应用程序的包名。eg. com.tencent.mobileqq ——adb shell pm list package
:显示所有程序的包名;adb shell pm list packages -3
:显示所有第三方程序的包名。
5.appActivity:应用程序的主入口。——可通过该命令进行查看:adb shell dumpsys window windows |grep current -i
eg. 主入口为:.activity.SplashActivity。如果前面的与包名不一致,则不可省略;否则,可以省略(这里就省略了)
6.noReset:启动应用时是否重置,true表示不重置
。——eg.这样打开qq,不会再重新要求登陆?默认为false,重置。
7.“unicodeKeyboard”:true,”resetKeyboard”:ture
,用于支持中文输入
。
4、什么是APP稳定性测试
Monkey首选,一般软件要求能够长时间稳定不出现问题地持续运行。为了校验系统版本是否稳定,是否能够持续为用户进行服务。
Monkey是性能测试?其实不是,Monkey是随机进行各类操作指令,确保APP能够稳定,不出现任何的崩溃、异常等情况。Monkey是个指令
。
5、Monkey原理
只有Android操作系统才有Monkey。其本身是安卓操作系统下的一个jar文件
。是在进行调用之后,生成了系统进程,基于进程来执行的Monkey
。
如果是iOS等其他操作系统,需要自己写一个Monkey。
在启动monkey测试之后,有两种方式进行结束:1. 通过kill
该进程;2. 自己本身运行结束。
adb shell
cd ./system
cd ./bin
cd …/framework
Monkey其实就是 Monkey.jar 文件,在Android操作系统内通过adb指令调用Monkey.shell 文件,执行Monkey.jar文件。基于配置,实现随机性测试
。
adb monkey——monkey.shell——monkey.jar——生成安卓进程来执行测试
6、Monkey指令
- 搭建环境:
sdk环境。通过sdk manager进行安装。
一台手机或模拟器。 - 链接设备——打开开发者模式,打开usb调试
通过adb devices指令进行连接。 - monkey操作
adb shell:连接手机。——从windows变为Linux
然后输入monkey,即可查看monkey相关指令:
-p:指定被测试程序(包)
events:事件数
Eg. 执行列子如下:
–throttle:等待,每次事件之间,插入的等待操作——类似sleep?单位都是毫秒ms
-v:添加日志(等级) 缺省lv0 -v lv1 -v-v lv2 -v-v-v lv3
当我们在monkey中出现异常的时候,一定要重现bug,就需要monkey再按照之前的行为执行一次。设置运行编号,可以保证。如下:
-s:为本次的monkey运行设置编号
PS:在monkey指令运行时,日志指令与事件指令一定放在最后
。
在运行过程中除了kill指令
与monkey结束
之外,出现异常
、崩溃等
情况monkey也会停止
。为了防止因为异常导致monkey指令提前结束
,可添加如下指令(下班前):--ignore-crashes:
忽略在系统出现crash
时导致的monkey挂起。--ignore-timeouts:
忽略在monkey运行过程中,因为ANR(application not responding应用未响应)
导致的挂起。
第二天过来要检查是否出现了异常:
1.通过查看日志的形式来检查,logcat。
2.将日志导出到本地D盘的xizhu.txt文件中。然后查找异常,如:ctrl+s,输入crash、exception、timeout等进行查找。
注意:通过以下的方式进行操作,会报错。因为相当于在手机内部进行创建文件,是不被允许的
。
完整版指令:adb shell monkey -p 包名 -s monkey编号 --throttle 等待时间 --ignore-crashes --ignore-timeouts -v -v 事件数 >
日志存放位置
一般情况中:
当关键字是一个字母时,用单横杠-;
当关键字是一个单词或者词组时,用双横杠–
--pct--touch
来控制点击:——类似的,也可以通过其他指令来控制其他操作百分比。
7、为啥要讲monkey测试指令?
- 是目前企业中对于
APP稳定性
使用度很高的指令; - 因为APP测试现在是市场中比较主流的东西;
日志
1、日志:日志跟踪运行软件所发生事件
的方法。
2、日志的作用:信息查询、服务诊断、数据分析。
3、日志等级:优先级从小到大五个等级——debug:调试信息——info:描述重要事件——warning:警告信息——error:错误异常信息——critical:严重错误。
4、Python中如何生成日志
(1)logging模块
Python内置模块,可以生成日志
。包括可以设置日志等级
、日志路径
、日志文件回滚
等。
Logging包括四个组件
:
(1)logger:日志器。提供了应用程序的接口。——可以有多个处理器。
(2)Hander:处理器。通过logger在不同位置输出日志。
(3)Formator:格式器。决定日志以什么的样式显示。
(4)Filter:过滤器。过滤哪些需要记录输出,哪些需要丢弃。
例子:
import logging
class Demolog:
def log(self):
# 创建一个日志器
logger=loggin.getLogger(“logger”)
# 设置日志输出最低等级,低于当前等级就会被忽略
logger.setLevel(logger.INFO)
# 创建一个处理器
sh=logging.StreamHandler() # 终端(控制台)输出
fh=logging.FileHandler(filename=”Log/()_log”.format(time,strftime(“%Y_%m_%d_%H_%M_%S”,time.localtime())),encoding=”utf-8”) # 文件处理器(输出为一个文件)
# 创建一个格式器
formator=logging.Formatter(fmt=”%(asctime)s %(filename)s %(levelname)s %(message)s”, datefmt=”%Y/%m%d/%X”)
# %(参数——比如时间asctime(需要指定时间格式的样式datefmt),日志生成在哪个目录下filename,错误等级信息levelname,错误信息内容)参数格式——比如字符串格式为s;数字格式为d
sh.setFormatter(formator)
fh.setFormatter(formator)
logger.addHander(sh)
logger.addHander(fh)
return logger
# logger.debug(“debug信息”) # 会被忽略
# logger.info(“info信息”)
# logger.warning(“warning信息”)
# logger.error(“error信息”)
# logger.critical(“critical信息”)
def sum(self,a,b):
try:
sum=a+b
# 记录描述
self.log().info(“正确计算出{}+{}之和”.format(a,b))
retun sum
except Exception as error:
self.log().error(“{}+{}之和计算错误:{}”.format(a,b,error))
# Demolog().log()
# Demolog().sum(1,2)
Demolog().sum(2,“b”)
结果如下:
解决方法1:添加removeHandler(兼容性不好,不推荐)
解决方法2:添加判断条件
Pytest生成测试报告(控制台下执行):
Allure生成测试报告:(指定给某个文件生成测试报告 测试报告存储位置)
Fiddler
1、定义
Fiddler是位于客户端和服务端的HTTP代理
。目前常用的http抓包工具之一。功能非常强大,是web调试的利器。
监控浏览器所有的http/https流量
查看、分析请求内容细节
伪造客户端请求和服务器响应
测试网站的性能
全局、局部断点功能
第三方插件
2、使用场景
接口调试、接口测试、线上环境调试、web性能分析、判断前后端bug、开发环境hosts配置、mock、弱电弱网测试。
3、Fiddler的工作原理
Fiddler是以代理web服务器
的形式工作的,它使用代理地址:127.0.0.1,端口号:8888。当Fiddler退出的时候它会自动注销
,这样就不会影响别的程序。不过如果Fiddler非正常退出,这时候因为Fiddler没有自动注销
,会造成网页无法访问。解决的办法是重新启动下Fiddler
。
4、Http协议
http协议之请求
http请求由四部分组成:请求行、消息报头、空行、请求正文。
聚合数据登陆(post请求的抓包):
HTTP协议之响应
在接收和解释请求消息后,服务器返回一个HTTP响应消息。
HTTP响应也是由四个部分组成,分别是:状态行(响应行)、消息报头(响应头)、空一行、响应正文。
一般的HTTP抓包设置(可能与浏览器缓存有关,有时候需要清理):
因为https=http+ssl(安全机制/密钥),故而需要公钥进行解析
(即客户端需要获取/安装一个安全证书
)
如果出现证书错误:
(以上都是fillder通过ie、chrome浏览器抓取HTTP或HTTPS来设置代理的!!!)
在firfox中的设置需要自己弄!