编写本篇文章的目的是为了在今后的自动化测试学习中提供一个好的文档指导,更有效的进行框架的优化及维护。同时也为安卓自动化测试框架搭建提供一定的可行性依据。
在开始框架整理之前我先对框架最终效果进行一个设定,也是给自己建立一个目标。
分层明显:业务逻辑层,操作逻辑层,基础操作层,数据层(测试数据,元素数据,配置数据)
日志清晰:操作日志,错误日志
功能丰富:接口测试,数据库测试,基础功能测试,全功能测试...
持续集成:jenkins
测试反馈:测试报告自动邮件(测试概览,测试详情,测试产出文件)
可维护性:代码质量,目录清晰,业务逻辑编写简单,高效支持元素变更
为了实现以上几点,我们开始针对需求进行分析我们需要用到哪些工具及技术:
1.首先我这边使用的是java语言,主要是考虑到现在公司中java大神一大把,即使遇到问题我们会有一个很好的平台进行一个沟通及解决。
2.一个好的工具可以帮助我们很好的对项目进行一个管理,我们可以选定一个比较合适的idea。这里我选用的是IntelliJ IDEA 。
3.我们需要考虑的是项目管理工具,我们可以选用常见的Git,SVN等。
4.在项目搭建的过程中会使用到很多相关依赖,我这里使用的是Maven进行相关依赖的管理。
5.我们这个需要用到一个测试库Selenium2.0 进行一个自动化项目的编写。
6.测试管理我这里选用的是Testng。
7.日志管理我们使用到Log4j。
8.相关项目配置我们使用Properties。
9.文档的读写及表格的读写,我们需要用到jxl ,IO 相关
10.为了熟悉先关网页元素,我们需要了解html,和少量的css,js
11.这里我们会使用到数据库进行测试数据的使用所以用到了sql ,和java对数据库的相关技术。
10.持续集成中这里使用的jenkins,我们需要了解其安装及配置。
以上提到的相关技术及工具我们是都需要有提前的进行一个了解,那么在框架搭建的过程中我们才能更好的一个实现及发现及解决问题。
下面就是我针对整个项目实现规划的一个构思蓝图:
下面我们将从零开始逐步的进行框架的搭建:
环境搭建相关我们就不在这里进行说明:以下是一些参考链接:
IDEA工具下载 密码:b800
Maven下载 密码:wjlu
项目新建maven依赖管理
在环境搭建好了之后,我们点击IDEA工具来新建一个Maven项目。下图是我们新建项目的第一步,我们直接点击Next 进入到下一步
后面就是对项目组名,项目名进行命名。我们这里填入com.zl.studySelenium 和StudySelenium 。再次点击Next
之后就是对Maven相关配置,这里只需要对Maven版本及配置文件地址进行填写就好,如果maven环境配置正确这里就不需要进行其他操作,直接使用默认的就可以了。
最后我们选择一下项目目录的一个设置,放在自己习惯的目录中就好,我的项目目录:D:\IdeaProjects\autotest\StudySelenium 选择好后直接点击Finish 构建项目,构建过程可能需要等待一下。
这里需要进行一个说明,因为再项目构建中对连接到Maven中央库对项目项目依赖进行一下拉取,如果没有网的话文件目录就可能和我不同,解决网络的相关影响有2种方式:一个就是建立本地Maven库;还有一个就是自己下再相关依赖到本地手动添加依赖。
这里需要对项目目录进行一个规划,我们之后整个项目的测试工作都建立在目录:test\java\com.zl.studySelenium下面。这里的AppTest.java我们可以删除掉这是一个试例。
下面我们就需要用到的相关依赖进行整理:log4j;mysql;selenium;jxl;testng;
那么需要需要添加一下依赖到pom文件中标签<dependencies></dependencies>中如下:
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.0.5</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.53.1</version>
<!--<version>3.3.1</version>-->
</dependency>
<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.12</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.9.4</version>
<scope>test</scope>
</dependency>
点击Import changes Enable Auto-Import 从中央库中拉取我们需要的相关依赖。这里首次是需要网络连接的。整个过程需要一点时间,请耐心等待一下。以下是相关依赖的书写方式:
相关依赖就暂时添加完成了,可能以后再项目编写过程中我们还需用到的依赖我们再来单独的进行添加。
下面我们在对目录进行一个划分,我们需要整理一下我们需要存放哪些东西:数据类;资源类;工具类,用例类,页面封类,页面操作类。整理后得到如下目录:
项目配置文件
1.我们先对Log4j进行配置:在test\java\com.zl.studySelenium 目录下新增log4j.properties文件用于我们对log4j进行配置,按照需求我们对日志中的操作日志要进行记录,那么需要我们输出到文件:
在配置文件中配置如下:
log4j.rootCategory=INFO, toConsole, toFile
log4j.appender.toConsole=org.apache.log4j.ConsoleAppender
log4j.appender.toConsole.layout=org.apache.log4j.PatternLayout
log4j.appender.toConsole.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%t]-[%p] %m%n
log4j.appender.toFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.toFile.File=target/testlogs/Testng.log
log4j.appender.toFile.append=true
log4j.appender.toFile.layout=org.apache.log4j.PatternLayout
log4j.appender.toFile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%l]-[%p] %m%n
其中不难看出我们将大于INFO级别的日志输出到窗口是按照:日期+时间+类+等级+Msg 。同时将日志存放与测试产出目录:target/testlogs/ 的Testng.log文件中,并且以往日志会已加日期的方式进行保存,不会被覆盖。
2.我们进行一个全局变量的配置:在StudySelenium 目录下新建prop.properties用来存放全局配置信息之后在utils目录先新建一个GlobalSettings.java 文件用来获取配置的相关数据方便我们在需要用到的时候直接使用。
在GlobalSettings中我们创建getProperties()方法获取配置数据:
public static Properties getProperties() {
Properties prop = new Properties();
try {
FileInputStream file = new FileInputStream("prop.properties");
prop.load(file);
file.close();
} catch (Exception e) {
e.printStackTrace();
}
return prop;
}
public static Properties prop = getProperties();
例如我们在prop.properties中设置一个跳出时间:Timeout = 30000
我们只需要设定设定一个 public static String timeout = prop.getProperty("Timeout")就可以获取到“30000”这个数字,在项目中只需要直接使用 GlobalSettings.timeout 就可以使用了。
3.testng的配置工作我们将在用例书写过后进行说明。最终的目录如下:
基本的项 目前配置工作就完成了。可以开始进行最核心部分也就是selenium 底层的一个简单封装,让我们在使用的过程中能够有一个较好用例编写体验。