这是一个Restful API自动化测试框架,这是一个能让你写出高可读性测试代码的测试框架! 项目目标 话说目前行业内,Restful API自动化测试框架已经不是稀罕物了,各个语言都有自己的实现机制.拿Java的Jersey来讲,它本身就提供了一个API测试框架-Jersey Test Framework.能够帮助我们写API测试,但是这里我们想做的是另一套. 观察到Jersey使用了Fluent interface的模式来让代码可读性更高,比如下面: String responseMsg =…
对于自动化测试,尤其是UI的自动化测试.是很多做黑盒功能测试的同学,入门自动化测试一个最为直观的或者说最容易理解的途径之一. 对于手工测试和自动化测试的优劣,网上有很多论述,在这里不作展开讨论.但是,让测试人员解放生产力,提高效率,把精力关注与最为重要的核心业务逻辑与测试设计上,是每个测试团队所必需要关注的.因此,在适当的范围内开展自动化测试,是可以提高整个测试团队的生产率的. 对于Selenium,这个东西是一个浏览器应用程序测试工具.之所以选择它做WebUI的自动化测试主要是因为它有以下两大…
摘要:最近有一个需求,为客户提供一些Restful API 接口,QA使用postman进行测试,但是postman的测试接口与java调用的相似但并不相同,于是想自己写一个程序去测试Restful API接口,由于使用的是HTTPS,所以还要考虑到对于HTTPS的处理.由于我也是首次使用Java调用restful接口,所以还要研究一番,自然也是查阅了一些资料. 分析:这个问题与模块之间的调用不同,比如我有两个模块front end 和back end,front end提供前台展示,back…
到目前为止,我们所写的东西,都是集中在如何使用Selenium和Java来定位和读取元素.那么,到底如何具体开展测试,如何实现参数化,如何实现判定呢?下面,我们来看看Java应用程序的测试框架吧. 当前比较流行的Java应用程序测试框架有JUnit和TestNG两种, 从上图可以看到,相对于JUnit4来说,TestNG更具竞争优势,功能完备.而且,从实际使用的角度来说,参数化的设置及功能,以及处理有上下依赖关系的测试时,JUnit测试框架有着明显的劣势.因此,我们在这里着重学习TestNG框架…
我们继续回到自动化测试框架的主线上来,在前面的文章中,我们定义一个页面元素的主要参数有:路径,找寻方式,等待时间,名称,这个四个参数.另外,我们还需要考虑一个问题,就是网站的页面. 举个例子来说,如果A页面上有“新增”,“选择”,“保存”等按钮,B页面上也有“新增”,“选择”,“保存”等按钮,我们应该如何处理这种情况呢? 当然,有的小伙伴可能会说,我就直接命名为“新增A”,“选择A”,“保存A”,“新增B”,“选择B”,“保存B”就是了.这样当然是可以的. 但是,在维护自动化脚本的时候,你就会发…
下载源码包: http://www.slimframework.com/ 基于Slim的Restful API Sample: <?php require '/darjuan/Slim/Slim.php'; use \Slim\Slim as Slim; Slim::registerAutoloader(); $app = new Slim(array( 'debug'=>true, 'templates.path' => './templates' )); class BookServ…
之前,我们使用了读取XML文件的方式来实现页面元素的读取,并做成了基础页面类.下面,我们来进行一些扩展,通过Excel来读取页面元素. Excel的使用,大多数人应该都不陌生.那么Java读取Excel的方式主要有两种,这两种分别使用的是不同的jar包来实现.本篇我们来介绍其中的一种,即使用JXL的jar包,实现Excel文件的读取. 在项目中导入jar包:jxl-2.6.12.jar  下载地址:https://mvnrepository.com/artifact/net.sourceforg…
本篇我们来讨论,如何写一个浏览器初始化的类.在写之前,先思考一下,我们需要一个什么样的初始化? 先来看看使用原生的Java + selenium是怎么做的.(以firefox为例) System.setProperty("webdriver.gecko.driver", "c:\\geckodriver.exe"); driver = new FirefoxDriver(); 上面是个典型的例子,System.setProperty("webdriver驱…
在编写完Log类和监听类之后,终于要回到正轨上来了.我们继续开始写UIExcutor的实现类. PS:如果你想让你的报告更加美观一些.推荐使用reportNG这个jar包. 在项目中导入reportng-1.1.5.jar,这个jar包网上可以找到.可是具体在哪里下载的我也忘了.....这里先提一下,到后面我们再来详细的说明. 还记得我们之前写过的UIExcutor的接口吗?我们在这里需要一个一个的实现接口中的方法.(一个都不能少!) package webui.xUtils; import j…
在有了Position类和接口类之后,我们是不是立刻就要着手开始写实现类了呢?按照一般的顺序是这样.但是,我们这里先停一下.原因有二: 1)既然是写一个框架,我们希望总体的功能上是全面的.实现类中,我们需要设计和实现各种具体的操作方法.那么,如果中间出了问题,我们希望能够有所记录(log),所以需要有一个Log类. 2)既然是需要记录,我们希望能够在每次测试的测试报告中,体现该次测试操作的记录.那么,就需要对所做的测试进行监听,所以我们也需要一个监听(Listener)的类. 在写log类之前,…