使用Airtest批量运行自动化脚本

在我们编写好测试脚本后,通常是在IDE里面点击运行按钮运行我们的脚本,但是在IDE里面只能针对一个对象运行脚本,如何才能批量运行脚本呢。

在批量运行脚本里有两个需求,第一个是回归测试也就是一个手机运行多个脚本,另一个是兼容性测试也就是一个脚本在多个手机上运行。在IDE里运行脚本其实是经典的一对一场景,那么要实现批量运行脚本则需要脱离这种关系,实现一对多,多对一甚至是多对多。

1.安装Airtest

首先我们的Airtest脚本是基于ide环境运行的,那么要脱离ide第一步就是电脑环境要有Airtest,通过pip install airtest安装依赖,并通过pip list查看是否安装成功。

2.获取连接设备名称

因为要批量运行脚本,所以我们还应该知道连接设备的名称,不然执行的脚本和运行脚本的设备对应不上,可以通过airtest自带的adb工具查看已连接设备的名称,运用./adb devices查看连接设备名。

3.创建脚本

脚本创建时,首先了解单个脚本单设备执行

 

::关闭回显

@echo off

::切换到D盘

D:

::进入D盘的test目录

cd D:\Desktop

::执行 airtest run 命令

start airtest run testdemo.air

exit

 

其中,testdemo.air是所需执行脚本文件夹的名称,因为脚本不仅包含py文件,还有相应的截图。新建记事本,将上面代码复制后,修改脚本名称和执行目录名称,再将记事本的后缀.txt改为.bat即可完成脚本创建。脚本路径可以右键-属性进行查看

修改完成后双击bat文件即可执行脚本。其中airtest run关键字后可以带–device  –log 和 –recording 等参数。

# 不带任何参数运行脚本
airtest run D:\Desktop\testdemo.air
# 带命令行参数运行脚本
airtest run D: \Desktop\testdemo.air –device Android:/// –log log/ –recording

 

一个设备上批量执行多个脚本

 

@echo off
D:
cd D:\Desktop
title 正在执行第一个脚本
airtest run testdemo1.air
title 正在执行第二个脚本
airtest run testdemo2.air
title 正在执行第三个脚本
airtest run testdemo3.air
exit

 

一个脚本在多个设备上执行,其中设备名为连接手机名或者虚拟机远程连接地址

 

@echo off

D:

cd D:\Desktop

start “正在使用荣耀6手机运行脚本” airtest run testdemo.air –device Android:3LG4C17304008132

start “正在使用nova2手机脚本” airtest run testdemo.air –device Android:TPG5T18530014341

start “正在使用雷电模拟器跑脚本” airtest run testdemo.air –device Android://127.0.0.1:5037/emulator-5554
start “正在使用mumu模拟器跑脚本” airtest run testdemo.air –device Android://127.0.0.1:5037/127.0.0.1:7555

exit

资料来源参考引用项目官方公众号:AirtestProject

以上

Bobby

2020.11.18

JAVA项目在Linux服务器环境下部署

现在有一个需求:需要把一个war包部署在可以公网访问的服务器上,以用于安卓app的后台支持。

所以第一步,我们需要准备一个云服务器,这里推荐阿里云的云翼计划,24岁以下的实名用户可以获得9.5元一个月的学生服务器,很不错地址为https://promotion.aliyun.com/ntms/act/campus2018.html

服务器好了之后,我们还需要准备项目运行的一些基本环境,Tomcat服务,数据库和JAVA环境,首先我们先准备数据库环境,然后是JAVA环境,最后是Tomcat.

数据库准备

数据库的话,可以安装Xampp集成包来使用,这样会方便一些,xampp在官网即可下载,选择For Linux版本即可https://www.apachefriends.org/index.html

下载好后,我们通过运用Xftp工具连接远程数据库,把相应的包拖过去即可。

 

完成后,首先在根目录下找到安装包,并通过Xshell连接到服务器,给予安装包可执行权限

# chmod 777 xampp-linux-x64-5.6.14-0-installer.run

然后运行安装即可

./xampp-linux-x64-5.6.14-0-installer.run

安装完成后,启动/停止xampp

# /opt/lampp/lampp start/stop

卸载xampp

# /opt/lampp/lampp stop

# rm -rf /opt/lampp

如果提示服务启动OK,则成功启动,启动失败的话需要检查服务器端口是否被其他程序占用,Apache默认端口为80,Mysql默认端口为3306。

启动完成后,我们可以通过Navicat或HeidiSQL远程连接数据库,如果这时候出现数据库连接不上的话,则是因为Mysql数据库未授予远程连接权限,需要给其他IP地址授权处理以下。

通过Xshell登陆数据库(密码默认为空)

1.执行MySQL mysql -u root -p空密码(登录MySQL)

2.执行use mysql;(跳到系统的mysql库)

3.执行update user set host = ‘%’ where user = ‘root’;(设置root用户的访问IP为全部而不只是本地)

4.执行FLUSH PRIVILEGES;(这一步很重要,实时刷新权限生效)

完成后即可远程连接数据库,连接上后记得给数据库设置一个密码

JAVA环境准备

Java环境配置时主要注意安装的文件路径和环境变量的设置

首先在官网下载对应版本的安装包,注意是linux版本64位后缀为tar.gz的包

https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

下载完成后,先进入linux系统里的local文件夹下,创建一个名为文件夹,并进入

cd usr/local/
mkdir kencery
cd kencery/
进入后,然后按照之前的方式运用Xftp工具将压缩包拖到linux服务器上的该目录下
然后解压我们下载好的jdk文件,并重命名文件,完成后进入该文件夹
 tar -zxv -f  jdk-8u11-linux-x64.tar.gz   //解压文件
 mv jdk-8u11-linux-x64  javajdk //将文件重命名为javajdk
 cd javajdk //进入重命名好的目录
接下来配置java的环境变量
输入

vim /etc/profile

进入文档查看,按i进入编辑模式,将下面一段配置输入到底部

JAVA_HOME=/usr/local/kencery/javajdk
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
export PATH JAVA_HOME CLASSPATH
写完之后我们按键盘(ESC)按钮退出,然后按(:wq)保存并且关闭Vim。
配置完成之后,最重要的一步就是使文件立即生效:命令如下:
source /etc/profile
如果生效,此时我们输入java -version就能查看到返回java版本的提示

Tomcat准备

同样我们在官网上下载tomcat,https://tomcat.apache.org/download-80.cgi,下载的时候要注意一下项目的支持问题,老一点的项目下载9可能会出一些问题,我这里下载的是apache-tomcat-8.5.43.tar.gz

下载完成后,以同样的方式拖到Linux服务器里,先在local文件夹下创建一个tomcat文件,再将压缩包拖到该文件夹下,然后再解压。

mkdir /usr/local/tomcat     //在local下新建tomcat文件夹

mv apache-tomcat-8.5.43 /usr/local/tomcat/  //将下载好的压缩包移动到新建的文件夹下

tar -zxvf apache-tomcat-8.5.43.tar.gz  //解压当前文件在该文件夹下

 

完成后,我们进入解压好的目录下的webapps目录下,将我们打包好的war包通过xftp工具拖动到该目录下

完成后,我们回到bin目录下,启动tomcat服务即可

cd /usr/local/tomcat/apache-tomcat-8.5.43/bin

./startup.sh     //启动服务

./shutdown.sh    //关闭服务

Tips:在启动tomcat之前,还需要确定war包里面的数据库连接信息和当前设置数据库的连接信息一致(包括地址,端口,账号,密码等),并确保本机数据库服务已经启动

 

以上

Bobby

2019.7.30

 

 

 

 

数据库设计-E-R图与概念模型

数据库设计的三个步骤:

1.概念模型

2.数据模型

3.物理模型

1、图书借阅管理系统数据库要求提供下述服务:

(1)可随时查询书库中现有书籍的品种、数量与存放位置。所有各类书籍均可由书号惟一标识。

(2)可随时查询书籍借还情况,包括借书人单位、姓名、借书证号、借书日期和还书日期。

约定:任何人可借多种书,任何一种书可为多个人所借,借书证号具有惟一性。

(3)当需要时,可通过数据库中保存的出版社的电报编号、电话、邮编及地址等信息向相应出版社增购有关书籍。

约定,一个出版社可出版多种书籍,同一本书仅为一个出版社出版,出版社名具有惟一性。

1.2数据建模:

E-R图设计步骤

第一步:抽象实体:借书人,图书,出版社

第二步:确定实体的属性:借书人:借书证号,姓名,单位

第三步:确定实体的联系:借阅,出版

第四步:确定实体之间的关系:1:1;1:n;m:n

满足上述需求的E-R图如图:

E-R图转换成关系模型

第一步:将实体转换为关系模型(罗列属性,并用下划线标识主码)

借书人(借书证号,姓名,单位)

图书(书号,书名,数量,位置)

出版社(出版社名,电报编号,电话,邮编,地址)

第二步:将联系转换为关系模型(罗列属性,如果属性不具有明显的主码,则从对应的实体提取主码)

借阅(借书日期,还书日期)

第三步:梳理关系

1:1:候选码(两边选其一)

1:n:n端码(多的端的主码作为关系的码)

m:n:组合码(两端为共同主键)

第四步:合并关系(实体与联系):前提条件:实体和联系有相同的码

1:1:联系合并到其中一个实体中

1:n:联系合并到n端的实体中

m:n:不能合并

关系模型如下:

借书人(借书证号,姓名,单位)

图书(书号,书名,数量,位置,出版社名)

出版社(出版社名,电报编号,电话,邮编,地址)

借阅(借书证号,书号,借书日期,还书日期)

 

(完)

正交试验设计法设计测试用例

正交表的构成

行数(Runs):正交表中的行的个数,即试验的次数,也是我们通过正交实验法设计的测试用例的个数。

因素数(Factors) :正交表中列的个数,即我们要测试的功能点。

水平数(Levels):任何单个因素能够取得的值的最大个数。正交表中的包含的值为从0到数“水平数-1”或从1到“水平数” 。即要测试功能点的输入条件。

正交表的形式:

L行数(水平数因素数)

如:L8(27)

 

用正交实验法设计测试用例

以上介绍了正交实验法的由来。怎么用正交实验法进行用例的设计呢?

一、用正交表设计测试用例的步骤

(1) 有哪些因素(变量)

(2) 每个因素有哪几个水平(变量的取值)

(3) 选择一个合适的正交表

(4) 把变量的值映射到表中

(5) 把每一行的各因素水平的组合做为一个测试用例

(6) 加上你认为可疑且没有在表中出现的组合

二、如何选择正交表

考虑因素(变量)的个数

考虑因素水平(变量的取值)的个数

考虑正交表的行数

取行数最少的一个

三、设计测试用例时的三种情况

(1) 因素数(变量)、水平数(变量值)相符

(2) 因素数不相同

(3) 水平数不相同

具体实列

 

我们拿易安卓app登录界面为例

 

(1) 有哪些因素(变量)

我们可以分析看出有账号,密码,记住密码,选择用户四个因素

(2) 每个因素有哪几个水平(变量的取值)

账号,密码的水平为填或不填,记住密码的水平为选或不选,选择用户的水平为选个人用户和选学校用户两个水平,所以四个因素都为两个水平

(3) 选择一个合适的正交表

选择正交表要符合下面的规则

1、表中的因素数>=3;

2、表中至少有3个因素数的水平数>=2;

3、行数取最少的一个。

 

这个时候我们就可以安装这个规则去查找正交表了,如何查找正交表?可以通过下面两个地址去查询

http://support.sas.com/techsup/technote/ts723_Designs.txt

http://www.york.ac.uk/depts/maths/tables/orthogonal.htm

 

从第一个地址找到了一个比较适合我们的正交表为行数为8行,4因素2水平,1因素4水平的这张表

 

2^4 4^1     n=8

00000

00112

01011

01103

10013

10101

11002

11110

 

(4) 把变量的值映射到表中

为了美观我们先处理一下这个表

行号 列号
1 2 3 4 5
1 0 0 0 0 0
2 0 0 1 1 2
3 0 1 0 1 1
4 0 1 1 0 3
5 1 0 0 1 3
6 1 0 1 0 1
7 1 1 0 0 2
8 1 1 1 1 0

然后根据上面的分析结果把因素填到每列,水平填到每行,结果如下,水平对应填写比如0=填,1=不填;0=记住,1=不记住;0=个人用户,1=学校用户.

 

行号 列号
账号 密码 记住密码 选择用户 5
1 记住 个人用户 0
2 不记住 学校用户 2
3 不填 记住 学校用户 1
4 不填 不记住 个人用户 3
5 不填 记住 学校用户 3
6 不填 不记住 个人用户 1
7 不填 不填 记住 个人用户 2
8 不填 不填 不记住 学校用户 0

完成后发现多了一列,是因为我们只有四个因素,但是正交表有5列,这个时候我们就把最后一列删除掉,构成如下图

(5) 把每一行的各因素水平的组合做为一个测试用例

行号 列号
账号 密码 记住密码 选择用户
1 记住 个人用户
2 不记住 学校用户
3 不填 记住 学校用户
4 不填 不记住 个人用户
5 不填 记住 学校用户
6 不填 不记住 个人用户
7 不填 不填 记住 个人用户
8 不填 不填 不记住 学校用户

(6) 加上你认为可疑且没有在表中出现的组合

这一步就是补充正交表里可能没有出现你觉得比较重要的情况,比如全空或者全部填写,还有就是只填写重要项其他都不填之类的,这个列子还好我们就补充一条填写账号密码,记住密码的学校用户与第一行做个比较.

行号 列号
账号 密码 记住密码 选择用户
1 记住 个人用户
2 不记住 学校用户
3 不填 记住 学校用户
4 不填 不记住 个人用户
5 不填 记住 学校用户
6 不填 不记住 个人用户
7 不填 不填 记住 个人用户
8 不填 不填 不记住 学校用户
9 记住 学校用户

 

 

好了做到这一步我们的用例也确定下来了,9条用例,接下来根据这九条就可以书写用例了,找到一个用例模板开始书写用例,第一行转换成用例如下:

 

测试用例编号 DL-001
测试模块 易安卓APP登录模块
测试标题 个人用户填写账号密码,勾选记住密码登录
重要级别
预置条件 APP已经安装并能正常启动
操作步骤 1、打开登录界面;2、账号输入Admin

3、密码输入123456

4、勾选记住密码按钮

5、选择个人用户

6、点击“登录”。

 

预期输出 登录成功,页面跳转到易安卓首页

让”坦白说”变”真相说”,从测试谈Https协议的抓取实践

最近好像QQ出咯一个新的模块坦白说,好像是匿名给好友发送标签,感觉这个应该是运营团队想出来的新点子.想必收到咯的同学都很想知道,哇这个是谁发给我的呀,这个认识咯X年,XX星座的同学是谁哦.其实很简单,我们用点小工具就可以看到咯.


首先我们要明白这个模块应该也是基于http协议的H5网页,那么抓取协议信息就很重要咯.通常我们接触接口的时候就会用到抓取工具,那么这次我们来看坦白说这个东西就要用到之前提过我也比较喜欢的接口分析工具-Charles

那么Charles的话其实是Mac平台移植到win平台的,主要是颜值比fiddler高所以比较喜欢哈哈.不多说咯先下载安装.然后局域网通过手机连接到电脑热点,记得设置代理8888端口,OK第一步搞定咯,现在直接在手机上打开QQ,这个时候我们就会发现已经抓取咯一些接口啦,但是我们发现很多QQ的接口都是锁住的,这是怎么回事呢?这是因为QQ使用的是https协议而不是http协议,协议加了密的,所以我们需要设置一下证书才可以正常访问接口内容.

ok设置证书需要设置charles的SSL,这个网上有的我就不细说咯,设置好咯之后需要在SSL Proxying Settings 添加一条ti.qq.com:443的记录,这个就是坦白说的地址.好咯之后我们再次打开QQ的坦白说访问到收到的坦白说页面,这个时候就会抓取到收到的消息列表咯.好的这个时候我们拿到咯字段列表的json数据,但是”fromEncodeUin”这个字段是加密咯的,看咯一下这个就是发送人的QQ,只要拿到这个字段就大工告成啦.

怎样破解这个加密的QQ号呢?其实..不简单说实话我没有研究过,但是已经有大神破解出来咯我们自接用就可以咯,地址:https://jackz.cn/article/qq_honestsay,把抓取好receive文件的json数据复制粘贴过来,搞定.QQ号出来啦,这个时候你只需要搜索QQ号就知道是那个好友发给你的咯,是不是很简单呢.赶快去试试吧~

很惭愧 一点微小的分享 谢谢大家
以上
Bobby
2018.4.9

Robot framework,自动化测试利器

大家好,我是Bobby,很久没有写文字咯.今天直接给大家带来一个好东西,自动化测试框架-Robot framework.

其实RF这个框架我也是最近才有所接触,在之前的时候我研究的方向是selenium2+webdriver,然后直到了解了RF之后才发现,这比sw组合好用多咯哇,美滋滋.

首页简单介绍一下Robot framework,简单来说就是帮我们自动执行用例并可以生成报告的一个开源的测试框架,具有良好的扩展性,然后基于Python语言开发,所以学习起来也是很简单,下面就直接开整.

安装RF测试框架需要进行以下11步骤的安装:

序号 安装包名 安装方法 下载地址 备注
1 python exe文件,直接双击安装 https://www.python.org/downloads/release/python-2714/ python目前有2.7和3.6两个主流版本,但是ride目前只支持2.7版本,所以建议先通过ride熟悉RF,安装的时候记得勾选Add Python 2.X to PATH
2 setuptools 下载ez_setup.py文件,双击  

https://pypi.python.org/pypi/setuptools

 

Python 的套件管理程式,需要的依赖,直接装就可以了

3 pip 1、cmd进入ez_setup.py文件目录

2、用setuptools安装:easy_install pip

https://pip.pypa.io/en/latest/index.html  

Python 的套件管理程式,比较重要,安装好后后面可以通过pip命令安装后面的支持库

4  

robot framework

1、pip install robotframework

2、源码:python setup.py install

3、exe文件,直接双击安装

https://pypi.python.org/pypi/robotframework robot framework本身,推荐第一种通过pip命令安装
5  

wxPython

1.pip install -U wxPython

2.exe文件,直接双击安装

http://wxpython.org/download.php#stable 支撑Ride的运行库,推荐pip安装
6  

robotframework-ride

1、pip install robotframework-ride

2、源码:pythont setup.py install

3、exe文件,直接双击安装

https://pypi.python.org/pypi/robotframework-ride ride,rf可视化用例编写
7  

selenium2library

1、pip install robotframework-selenium2library

2、源码:pythont setup.py install

3、exe文件,直接双击安装

https://pypi.python.org/pypi/robotframework-selenium2library selenium2测试库,基于webdriver驱动,推荐pip安装
8  

cx_Oracle

exe文件,直接双击安装  

http://sourceforge.net/projects/cx-oracle/files/

连接oracle用的(支持第9步),下载时注意选择对应版本,如wxPython2.8-win32-unicode-2.8.12.1-py27,注意下32位的,别问我为什么
9  

databaselibrary

1、pip install robotframework-databaselibrary

2、源码:pythont setup.py install

https://github.com/franz-see/Robotframework-Database-Library DB库,推荐pip安装
10 requests pip install requests  

https://pypi.python.org/pypi/requests

支持第11步,否则RF引入RequestsLibrary库会报错
11  

RequestsLibrary

 

pip install -U robotframework-requests

 

https://github.com/bulkan/robotframework-requests

http request库

如果安装完成都没有报错,那么恭喜你RF框架已经安装完成了.怎么启动呢,首先找到你电脑安装的python目录下的Scripts文件夹,找到ride.py文件

在文件夹空白处按住shift键并同时点击鼠标右键打开PowerShell窗口如下,输入ride.py点击回车

此时运行后出现ride界面说明打开成功,如果想要设置快捷启动图标可以右键ride.py发送到桌面快捷方式,然后图标可以在这个地址Python27\Lib\site-packages\robotide\widgets\robot.ico找到一个机器人

设置好快捷启动后就可以点击设置好的桌面图标快捷启动ride

注意事项

1.安装python的时候要注意勾上Add Python 3.6 to PATH,然后点“Install Now”即可完成安装,没有勾选的话就需要手动去环境变量里配置

验证python是否安装成功,打开CMD在终端里面输入python返回版本号就说明配置成功

以上

2018.4.5

KANO模型的介绍和理解

最近接触到一个分析模型很不错在这里和大家分享和介绍一番。
这个模型呢叫卡诺模型,也说KANO模型,KANO 模型是东京理工大学教授狩野纪昭(Noriaki Kano)发明的对用户需求分类和优先排序的有用工具,以分析用户需求对用户满意的影响为基础,体现了产品性能和用户满意之间的非线性关系。具体描述的话百度一下就有了,我这里主要是和大家分享一下我的一些思路。

在分析一个项目的时候我们知道需求是最重要的,当然需求也有我们常说的显性和隐性需求,当然从字面上也很好理解。那么我们再来看KANO模型的分析,最下面那条曲线写的是必备属性,也就是必须要具有的,就拿做一个聊天软件来说,必须具备的肯定就是聊天的功能,这个也是最基本的。那么这个的话肯定是要做好的。那么中间那条红线表示的是期望因素,就是说用户希望获得的东西,也拿聊天软件来说,这时候我们需要的是收集用户的一些个想法,在基本功能以为还希望拥有的功能,比如用户期望这个聊天软件有语言通话功能,那么OK,就加一个这个功能,这样的话用户的满意度肯定有所提高。那么最上面的魅力属性又是什么呢?那就是用户们想不到,但是你觉得很赞然后用户使用后也觉得很棒的一个功能,也可以说是创新的功能,当然也可能只是移植其他地方的东西,只要收获到称赞效果就OK。还是那聊天软件来说,比如说QQ的厘米秀,其实是复制咯QQ秀的模式,但是也有微改变而让聊天变得非常具有互动性,那这一块就收获到了很棒的效果。
所以在分析需求或者问题的时候,我们这样去划分一下,就可以很清楚接下来的动作。那我们再来看一个对一个办公软件的KANO模型的划分。
图片         这很明显的展现了办公软件的几个层次,那么所对应的问题的解决层次也很明显,首先解决基本需求提高工作效率,其次是期望需求提高自我价值,然后就是魅力需求实现快乐工作。那么便针对不同的问题层次进行具体问题解决,完美飞蛇。
很惭愧,一点微小的收获,共勉。
参考文献:苏杰博客,腾讯ISUX
Bobby
2017.02.07