11.3、自动化测试框架

设计思路

1、框架概览

包类文件类解释:

base包:

BasePerpare.java:启动和结束测试,以及数据提供者,提供测试数据,预处理

pages包:页面元素存放

pagesHelper包:

对该页面的操作方法存放,如点击,等待加载,验证文本内容,输入,清空等方法

plugins包:

excel和html插件

testCase包:

测试用例,调用Helper里面的各种方法进行操作

utils包:

AppiumUtil.java:

封装appium的api:

1、获取driver;

2、退出app;

3、退出移动浏览器;

4、通过By对象去查找某个元素;

5、通过By对象去查找一组元素;

6、清空元素内容;

7、输入内容;

8、点击;

9、查找一个元素,appium新增的查找元素方法;

10、查找一组元素,appium新增的查找元素方法;

11、获取文本1{getText(By by)};

12、获取文本2{getText(String locateWay,String locateValue)};

13、提交;

14、获得webview页面的标题;

15、获得元素属性的文本;

16、在给定的时间内找元素,如果没有找到则超时,抛出异常;

17、判断文本是不是和需求要求的文本一致;

18、暂停当前用力地执行,暂停的是件为:sleepTime;

19、根据元素来获取次元素的定位值;

20、判断实际文本时候包含期望文本;

21、跳转到webview页面(int index);

22、跳转到webview页面(String contextName);

23、执行javascript方法;

24、执行JavaScript方法和对象;

25、检查元素是不是存在;

26、长按操作;

27、滑动;

28、滚动,根据文本模糊匹配;

29、滚动,根据文本精准匹配;

30、拖拽操作;

31、 放大和缩小;

32、app置于后台运行;

33、收起键盘;

34、安装app;

35、app是否安装;

36、页面过长时候滑动页面window.scrollTo(左边距,上边距);

37、后退

38、打开应用

LogConfiguration.java:

配置日志

PropertiesDataProvide.java:

从.properties文件中读取相关测试数据

SelectDriver.java:

根据测试平台的不同生成不同的driver 比如AndroidDriver 或者是IOSDriver

result文件夹:

存放结果,包括excel和html结果

xml文件:

default.xml【书上自己建立的一个testng默认配置文件,要有】和testng.xml【这个是我自己生成的一个默认配置,不用管,没有也可以】

runAll.xml:测试多条用例顺序执行测试

runSingle.xml:测试单条用例执行测试

runSmoke.xml:冒烟测试

pom.xml:maven仓库管理依赖配置文件,以及要运行的testng.xml测试用例文件

【详细解释

Base

BasePrepare.java,这个类的主要作用是启动和关闭APP的作用,启动APP使用了TetsNG的@BeforeClass ,在@BeforeClass下会初始化APP并设置与APPIUM通信的相关数据。关闭APP使用了TestNG的@AfterClass,在这个注释下写了APP退出的操作;测试用例类中则是以@Test注释为主体的,在@Test注释下,书写了完整的测试步骤。测试用例继承这个BasePrepare.java

pages

页面元素类,每一个java类,都是一个页面,存放的都是对应页面的所有元素

pageshelper

存放的是对应页面的帮助类,这是什么意思?简单的说:在这个页面上做了什么操作都写在这个pageshelper中,如登录页面的方法

plugins

主要存放的是html报告插件和excel报告插件

Testcases

存放测试用例,有很多子包,子包的个数根据你测试的系统的模块来划分

Utils

封装了各种工具类,包括读取excel,appium api封装类,读取数据库类,读取属性文件类和生成driver的类等。

其余文件说明,不一定要自己去建立

bin目录:

项目编译生成class文件存放目录,这个目录不用去管,Eclipse会自动控制。

config目录:

存储框架类所需的所有属性文件,比如arrow的配置文件以及自定义的一些属性文件。

result目录:

存储测试框架运行测试用例生成的报告(包含log,截图等)

src和target目录:

可以不用管,由maven控制即可,整个框架,没有用到此目录,大家可以忽略。

接下来还剩几个xml文件,我们也来一一介绍一下:

pom.xml:

maven的配置文件,项目核心配置,用于构建项目、自动下载项目依赖以及后续的和testng、jenkins配合持续集成等

runAll.xml:

这是testng的配置文件,用于存放部分测试数据以及测试的平台,浏览器的配置、加入第三方插件监听(arrow插件)、设置用例执行策略(多线程还是单线程,顺序执行还是无序执行以及是否依赖执行等)以及设置要执行的用例。之所以改成runAll顾名思义就是说执行整个web项目的所有模块的用例的测试

runSingle.xml

和runAll.xml一样,不多解释,不一样的地方就是用它来做单个用例的调试改错,只涉及到单个的类(用例),所以调试改错专用。比如我用runAll.xml跑完了所有的用例,但是发现个别用例失败,此时先去分析log,如果是代码问题就去调试代码,调试完毕之后就去用runSingle.xml去跑一边此用例。

default.xml:

只存储了测试参数(parameter)以及监听器(arrow),没有任何测试用例放在里面,这个xml文件是为了本框架的一个默认testng配置文件,主要是为了,直接在测试用例中右键运行测试用例,如果不配置一个默认的文件,直接在测试用例类中直接运行会跳过用例。因为xml文件中存储了一些必须的参数,比如测试浏览器是什么,测试平台是什么等等。框架搭建过程中会讲到如何设置default.xml文件。

runSmoke.xml:

这个主要执行冒烟测试用的,冒烟测试我们会先一些基本和核心功能作为测试重点,迅速跑一遍这些功能点,看看这个软件版本能不能released

2、框架快速上手

本地编写测试用例,首先需要配置好环境。

编写示例:以登陆界面为例

pages包下建立LoginPage.java,定义界面元素,格式参见框架源码相应文件。


pagesHelper包下建立LoginPageHelper.java,封装对登陆界面元素操作的方法,其操作函数调用的是Utils包下封装的appium函数,格式参见框架源码相应文件。


testCase包下建Login包,Login包下建立LoginPage_001_UICheckForLogin_Test.java,是测试用例,调用pagesHelper包下的LoginPageHelper.java中封装的操作方法,编写测试逻辑,格式参见框架源码相应文件。

命名规范:

1、操作页面,LoginPage,必须带有Page字段

2、用例编号,001,输出测试报告时进行读取,必须设置

3、测试用例描述,UICheckForLogin

4、文件作用,Test


在testng.xml中配置appium和手机相关参数,配置需要运行的测试用例,格式参见源码相应文件。


在pom.xml中配置需要运行的testng.xml文件,格式参见框架源码相应文件。


3、好处

在pagesHelper包下的界面操作方法封装使得编写测试用例时,测试逻辑容易编写,在长期项目中,封装的界面操作方法复用性极高,不同的组合即可形成新的测试逻辑。

results matching ""

    No results matching ""