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”)
sh.setFormatter(formator)
fh.setFormatter(formator)
logger.addHander(sh)
logger.addHander(fh)
return logger
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().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中的设置需要自己弄!
|