Web自动化测试中的接口测试
- 格式:docx
- 大小:53.54 KB
- 文档页数:5
接口测试的原理接口测试是软件测试的重要环节之一,它主要是验证软件系统之间的数据交换是否正常、功能是否正确、性能是否满足需求等。
本文将详细介绍接口测试的原理,帮助读者更好地理解和应用接口测试。
一、什么是接口测试接口是不同软件系统之间进行数据交换和通信的媒介。
接口测试是对这些接口的正确性和稳定性进行验证的一种测试方法。
它可以分为内部接口(如模块之间的接口)和外部接口(如两个独立系统之间的接口)。
二、接口测试的原理1. 请求和响应格式验证在接口测试中,我们首先需要验证请求和响应的格式是否符合规范。
一般来说,接口请求和响应通常使用JSON或XML格式,我们需要验证这些格式是否正确地传输了请求和响应的数据。
2. 参数验证接口测试中,我们还需要验证接口所要求的参数是否正确传递。
这包括参数的类型、取值范围、必填性以及参数之间的依赖关系等。
通过验证参数的正确性,可以保证接口的稳定性和安全性。
3. 接口功能验证接口的功能验证是接口测试中最重要的一部分。
我们需要根据需求文档或接口设计文档,验证接口在各种情况下是否能够正确地执行预期的功能操作。
例如,一个用户登录接口需要验证用户的账号密码是否正确,以及是否能够成功登录系统。
4. 接口性能验证除了功能验证,接口测试还需要验证接口的性能是否满足需求。
这包括接口的响应时间、吞吐量、并发性等方面的测试。
通过性能验证,可以保证接口在高并发或大数据量情况下的稳定性和可靠性。
5. 异常处理验证在接口测试中,我们需要验证接口在异常条件下的表现。
例如,当参数错误时,接口是否返回正确的错误码和错误信息,当接口异常时,是否能够正确地处理异常并给出适当的提示。
6. 依赖关系验证在复杂的系统中,接口之间通常存在各种依赖关系。
接口测试需要验证这些依赖关系是否正确地传递和处理。
例如,一个订单接口可能需要调用用户接口获取用户信息,我们需要验证订单接口是否正确地调用和处理了用户接口的返回结果。
7. 安全验证接口测试还需要验证接口的安全性,包括数据传输的加密、权限控制、防止SQL注入、防止跨站脚本攻击等方面的测试。
自动化测试基础知识1. 什么是自动化测试?自动化测试是指使用软件工具来执行测试脚本,以替代人工测试过程中的重复、繁琐的操作。
自动化测试可以提高测试效率、节省时间和成本,同时提高测试的准确性和一致性。
2. 自动化测试的优势和适用场景2.1 优势•提高测试效率:自动化测试可以在短时间内执行大量测试用例,比人工测试更快捷。
•省时省力:自动化测试可以自动执行测试用例,减少了重复的繁琐操作。
•高度可重复性:自动化测试脚本可以反复运行,无需手动操作。
•提高覆盖范围:通过自动化测试可以覆盖更多的功能和场景。
•减少人为错误:自动化测试可以降低人为疏忽导致的错误。
2.2 适用场景•回归测试:当软件版本更新时,为了保证新功能的稳定性,可以使用自动化测试执行回归测试。
•压力测试:通过模拟大量并发用户来测试系统的稳定性和性能。
•接口测试:用于测试不同系统之间的接口是否正常,数据是否传递正确。
•手机APP测试:通过自动化测试来测试手机APP的功能和兼容性。
•Web应用测试:用于测试Web应用的功能和兼容性。
•数据库测试:用于验证数据库的一致性和数据完整性。
3. 自动化测试的基本流程3.1 确定测试目标和需求在开始自动化测试之前,需要明确测试的目标和需求。
这包括测试的范围、测试的重点、预期的结果等。
3.2 选择合适的自动化测试工具根据测试的需求和项目的特点,选择合适的自动化测试工具。
常用的自动化测试工具有Selenium WebDriver、Appium、JMeter等。
3.3 编写测试脚本根据测试需求和测试工具的特点,编写测试脚本。
测试脚本可以使用编程语言如Java、Python等编写,并调用自动化测试工具提供的API。
3.4 运行测试脚本通过调用自动化测试工具提供的命令或界面,运行测试脚本。
3.5 输出测试报告自动化测试工具会生成测试报告,包括测试用例的执行结果、通过率、失败原因等。
根据测试报告,可以分析测试结果,发现问题并及时修复。
webelement 详解WebElement是Web页面上的元素,是WebDriver中的一个接口,其实现类包括HTML元素(如input、div、span等)、链接、按钮和文本等。
在自动化测试中,我们经常需要与页面上的元素进行交互,比如输入文本、点击按钮、获取元素属性等,这时就需要通过WebElement来操作页面元素。
WebElement接口中定义了一系列方法,常用的包括:1. click():点击元素,比如按钮或链接。
2. sendKeys():向输入框中输入文本。
3. getText():获取元素的文本内容。
4. getAttribute():获取元素的属性值。
5. isDisplayed():判断元素是否显示在页面上。
6. isEnabled():判断元素是否可操作。
7. isSelected():判断元素是否被选中。
通过这些方法,我们可以实现对页面元素的操作和验证,从而进行自动化测试。
下面我们来详细介绍一下这些方法的用法。
首先是click()方法,可以通过该方法点击页面上的按钮或链接,触发相应的操作。
比如,我们可以通过findElement()方法找到一个按钮元素,然后调用click()方法来点击该按钮:```button.click();```接下来是sendKeys()方法,可以向输入框中输入文本。
比如,我们可以通过findElement()方法找到一个输入框元素,然后调用sendKeys()方法来输入文本:```WebElement input = driver.findElement(By.id("input"));input.sendKeys("hello");```getText()方法可以获取元素的文本内容。
比如,我们可以通过findElement()方法找到一个文本元素,然后调用getText()方法来获取该元素的文本内容:```WebElement text = driver.findElement(By.id("text"));System.out.println(text.getText());```getAttribute()方法可以获取元素的属性值。
自动化测试的分类自动化测试是软件测试中的一种重要方法,它可以提高测试效率、减少测试成本、提高测试质量。
根据测试对象、测试方法、测试工具等不同的分类标准,自动化测试可以分为多种类型。
一、按测试对象分类1.界面自动化测试界面自动化测试是指通过自动化测试工具模拟用户操作,对软件界面进行测试。
它可以自动化执行一些重复性的测试任务,如输入数据、点击按钮、验证结果等。
常用的界面自动化测试工具有Selenium、Appium、Robot Framework等。
2.接口自动化测试接口自动化测试是指通过自动化测试工具模拟客户端与服务器之间的通信,对接口进行测试。
它可以自动化执行一些接口测试任务,如发送请求、验证响应、检查数据等。
常用的接口自动化测试工具有Postman、SoapUI、JMeter等。
3.性能自动化测试性能自动化测试是指通过自动化测试工具模拟多用户同时访问系统,对系统的性能进行测试。
它可以自动化执行一些性能测试任务,如模拟并发用户、检查响应时间、分析性能瓶颈等。
常用的性能自动化测试工具有JMeter、LoadRunner、Gatling等。
4.安全自动化测试安全自动化测试是指通过自动化测试工具模拟黑客攻击,对系统的安全性进行测试。
它可以自动化执行一些安全测试任务,如SQL注入、XSS攻击、文件上传漏洞等。
常用的安全自动化测试工具有Burp Suite、OWASP ZAP、Nessus等。
二、按测试方法分类1.功能自动化测试功能自动化测试是指通过自动化测试工具模拟用户操作,对软件的功能进行测试。
它可以自动化执行一些功能测试任务,如输入数据、点击按钮、验证结果等。
常用的功能自动化测试工具有Selenium、Appium、Robot Framework等。
2.回归自动化测试回归自动化测试是指通过自动化测试工具对软件进行回归测试。
它可以自动化执行一些回归测试任务,如检查已修复的缺陷、验证新功能是否影响旧功能等。
接⼝测试(基础知识)扫盲内容:1.什么是接⼝?2.接⼝都有哪些类型?3.接⼝的本质是什么?4.什么是接⼝测试?5.问什么要做接⼝测试?6.怎样做接⼝测试?7.接⼝测测试点是什么?8.接⼝测试都要掌握哪些知识?9.其他相关知识?1.什么是接⼝?接⼝测试主要⽤于外部系统与系统之间以及内部各个⼦系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过⼀些特殊的规则也就是协议,来进⾏数据之间的交互。
2.接⼝都有哪些类型?接⼝⼀般分为两种:1.程序内部的接⼝ 2.系统对外的接⼝系统对外的接⼝:⽐如你要从别的⽹站或服务器上获取资源或信息,别⼈肯定不会把数据库共享给你,他只能给你提供⼀个他们写好的⽅法来获取数据,你引⽤他提供的接⼝就能使⽤他写好的⽅法,从⽽达到数据共享的⽬的。
程序内部的接⼝:⽅法与⽅法之间,模块与模块之间的交互,程序内部抛出的接⼝,⽐如bbs系统,有登录模块、发帖模块等等,那你要发帖就必须先登录,那么这两个模块就得有交互,它就会抛出⼀个接⼝,供内部系统进⾏调⽤。
接⼝的分类:1.webservice接⼝ 2.http api接⼝webService接⼝是⾛soap协议通过http传输,请求报⽂和返回报⽂都是xml格式的,我们在测试的时候都⽤通过⼯具才能进⾏调⽤,测试。
http api接⼝是⾛http协议,通过路径来区分调⽤的⽅法,请求报⽂都是key-value形式的,返回报⽂⼀般都是json串,有get和post等⽅法,这也是最常⽤的两种请求⽅式。
json是⼀种通⽤的数据类型,所有的语⾔都认识它。
(json的本质是字符串,他与其他语⾔⽆关,只是可以经过稍稍加⼯可以转换成其他语⾔的数据类型,⽐如可以转换成Python中的字典,key-value的形式,可以转换成JavaScript中的原⽣对象,可以转换成java中的类对象等。
)3.接⼝的本质及其⼯作原理是什么?接⼝你可以简单的理解他就是URL,⼯作原理就会说URL通过get或者post请求像服务器发送⼀些东西,然后得到⼀些相应的返回值,本质就是数据的传输与接收。
测试⼯程师web端⾃动化---⾯试题⼀、Web ⾃动化测试1.Selenium 中 hidden 或者是 display = none 的元素是否可以定位到?不能,可以写 JavaScript 将标签中的 hidden 先改为 0,再定位元素2.Selenium 中如何保证操作元素的成功率?也就是说如何保证我点击的元素⼀定是可以点击的?1. 添加元素智能等待时间 driver.implicitly_wait(30)2. 添加强制等待时间(⽐如 python 中写 sleep)3. try ⽅式进⾏ id,name,clas,x path, css selector 不同⽅式进⾏定位,如果第⼀种失败可以⾃动尝试第⼆种3.如何提⾼ Selenium 脚本的执⾏速度?代码优化,多任务,分布式部署都是可以提升脚本执⾏速度的。
4.⽤例在运⾏过程中经常会出现不稳定的情况,也就是说这次可以通过,下次就没办法通过了,如何去提升⽤例的稳定性?1. time.sleep( )2. driver.implicitly_wait(30)3. 多⽤ try 捕捉,处理异常5.你的⾃动化⽤例的执⾏策略是什么?⾃动化测试与软件开发本质上是⼀样的,利⽤⾃动化测试⼯具,经过测试需求分析,设计出⾃动化测试⽤例,从⽽搭建⾃动化测试的框架,设计与编写⾃动化脚本,验证测试脚本的正确性,最终完成⾃动化测试测试脚本(即主要功能为测试的应⽤软件)并输出测试结果6.⾃动化测试的时候是不是需要连接数据库做数据校验?从数据库层⾯来进⾏数据校验可以更⽅便验证系统的数据处理⽅⾯是否正确,数据处理逻辑正常后,UI 层⾯上的校验也是需要做的。
7.id,name,class,xpath, css selector 这些属性,你最偏爱哪⼀种,为什么?css 、xpath ⼏乎所有的元素都可以定位到,但是它们的短处在于页⾯上更改了元素后位置很容易改变,所以⾸先使⽤的还是 id 或者 name 等。
接口自动化测试用例案例全文共四篇示例,供读者参考第一篇示例:接口自动化测试是指通过自动化测试工具对接口进行测试的过程。
在现代软件开发中,接口自动化测试已经变得越来越重要,因为它可以帮助开发人员及时发现并解决接口问题,确保系统稳定性和可靠性。
接口自动化测试的用例设计是其中的重要环节,本文将介绍一些接口自动化测试用例案例,帮助读者更好地理解和应用接口自动化测试。
1. 测试接口的响应时间在接口自动化测试中,测试接口的响应时间是非常重要的一个指标。
如果接口响应时间过长,可能会影响用户体验,甚至导致系统故障。
我们可以设计一个用例来测试接口的响应时间,例如:发送一个请求到接口,并记录下请求发送时间和接口返回时间,计算二者之间的时间差,从而评估接口的响应时间是否在可接受范围内。
2. 测试接口的数据一致性另一个重要的接口自动化测试用例是测试接口的数据一致性。
在现代系统中,不同的模块之间经常需要相互交互数据,如果数据一致性出现问题,可能会导致系统功能异常。
我们可以设计一个用例来验证接口返回的数据是否与预期数据一致,例如:发送一个请求到接口,并比对返回数据与预期数据是否一致,从而检查接口的数据一致性。
3. 测试接口的安全性在接口自动化测试中,测试接口的安全性是至关重要的一环。
如今,网络攻击日益猖獗,系统的安全性问题已经成为软件开发中的一大难题。
我们可以设计一个用例来测试接口的安全性,例如:发送一个恶意请求到接口,验证系统是否能够正确地拦截和处理恶意请求,从而检查接口的安全性。
通过以上几个接口自动化测试用例案例的介绍,我希望能帮助读者更好地理解和应用接口自动化测试,提高软件开发质量和效率。
接口自动化测试是现代软件开发中不可或缺的一环,希木读者能够认真学习和应用接口自动化测试技术,共同推动软件开发行业的发展。
第二篇示例:接口自动化测试用例案例随着互联网技术的发展,越来越多的软件系统采用了分布式架构,不同的模块之间通过接口进行通信。
接⼝测试概述及测试点分析什么是接⼝接⼝主要指外部系统与系统之间以及内部各个⼦系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过⼀些特殊的规则也就是协议,来进⾏数据之间的交互。
接⼝⼀般来讲分为两种:程序内部的接⼝:⽅法与⽅法、模块与模块之间的交互,程序内部抛出的接⼝,如登录发帖,发帖就必须要登录,如果不登录不能发帖,发帖和登录这两个模块之间就要有交互,就会抛出⼀个接⼝,进⾏内部系统调⽤。
系统对外的接⼝:从别⼈的⽹站或服务器上获取资源或信息,对⽅不会提供数据库共享,只能提供⼀个写好的⽅法来获取数据,如购物⽹站和第三⽅⽀付之间,购物⽹站⽀付时可选择第三⽅⽀付⽅法,但第三⽅不会提供⾃⼰的数据库给购物⽹站,只会提供⼀个接⼝,供购物⽹站进⾏调⽤接⼝主要分类:HTTP接⼝:基于超⽂本传输协议(HyperText Transfer Protocol HTTP)开发的接⼝,是应⽤最⼴泛的⽹络协议之⼀。
基于浏览器/服务器(B/S)的软件系统⼤多数为HTTP接⼝。
Web Service接⼝:系统对外的接⼝,根据提供的⽅法引⽤提供的接⼝,从⽽获取数据。
RESTful接⼝:简称REST,描述了⼀个架构式的⽹络系统。
Dubbo接⼝:Dubbo是⼀个分布式、⾼性能、透明化的RPC服务架构。
是阿⾥巴巴公司开源的⼀个⾼性能优秀的服务治理⽅案。
可以理解HTTP是基于客户端-服务端传输,⽽Dubbo是后端服务与服务之间⽅法的调⽤,传输信息。
什么是接⼝测试接⼝测试是测试系统组件间接⼝的⼀种测试。
接⼝测试主要⽤于检测外部系统与系统之间以及内部各个⼦系统之间的交互点。
测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
接⼝测试类型⼜主要分为功能测试,性能测试,稳定性测试,安全性测试等。
为什么要做接⼝测试接⼝测试实施在多系统的平台架构下,有着极为⾼效的成本收益⽐(当然,单元测试收益更⾼,但实施单元测试的成本投⼊更⼤,技术要求更⾼)。
接口测试实践方法接口测试是软件测试中非常重要的一环,通过对系统的接口进行测试,可以快速发现系统中的问题,并提升系统的稳定性和可靠性。
在接口测试的实践中,可以采用以下方法:1. 使用自动化测试工具:自动化测试工具可以帮助减少手动测试的工作量,提高测试效率。
可以选择一款适合的自动化测试工具,如Selenium、JMeter等,根据接口的不同特点选择合适的工具进行测试。
2.制定接口测试策略:在开始接口测试之前,需要制定接口测试的策略,并明确测试的目标、范围和重点。
可以根据接口的关键性和复杂度,确定测试的深度和广度,并制定相应的测试计划。
3.关注接口的输入边界和异常情况:接口测试中常常需要对接口的输入进行测试,特别是边界情况和异常情况。
输入边界测试可以测试接口的极限情况,而异常情况测试可以验证接口的容错性和异常处理能力。
4.使用模拟器或虚拟化技术:在测试接口时,经常会涉及到多个系统之间的交互。
为了提高测试效率和减少测试成本,可以使用模拟器或虚拟化技术来模拟其他系统的行为,以便进行接口测试。
5.使用随机化测试方法:随机化测试是一种有效的接口测试方法,可以通过随机生成测试用例来测试接口。
随机化测试可以帮助发现系统中的隐藏缺陷,并对接口的稳定性进行评估。
6. 使用压力测试工具进行接口压力测试:接口压力测试可以验证接口的性能和稳定性。
可以使用压力测试工具,如JMeter、LoadRunner等,模拟多用户同时访问接口的情况,并观察系统的响应时间和负载情况。
7.注重接口的安全性测试:在进行接口测试时,需要注重接口的安全性。
可以测试接口的访问控制、身份认证和数据加密等方面,确保系统的敏感信息不会泄漏。
8.结合其他测试方法:在进行接口测试时,可以结合其他测试方法,如功能测试、性能测试和安全测试等。
综合运用多种测试方法可以更全面地评估系统的接口质量。
9.编写清晰的测试用例和报告:在进行接口测试时,需要编写清晰、可执行的测试用例,并及时记录测试结果。
Web自动化测试中的接口测试 1 背景 1.1 Web程序中的接口 1.1.1 典型的Web设计架构 web是实现了基于网络通信的浏览器客户端与远程服务器进行交互的应用,通常包括两部分:web服务器和web客户端。web客户端的应用有html,JavaScript,ajax,flash等;服务器端的应用非常丰富,比如java的servlet,jsp,ssh框架,.net的aspx,还包括其他脚本如php,python。 web服务器端的设计架构近年来一直比较流行的是三层架构(3-tier application), 通常意义上的三层架构就将业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。分层的目的在于降低代码见耦合,提高代码架构的可维护性。 总的来说,这三层架构的意义如下: 1. 表现层(UI):用户界面,即用户可见的操作界面或者入口。 2. 业务逻辑层(BLL):封装具有业务含义的操作函数。 3. 数据访问层(DAL):封装对数据库或者其他存储介质的原子性操作。
1.1.2 Web接口的概念
web接口是服务器与客户端交互的方式,即浏览器或者其他客户端工具与web服务UI层交互的协议.常见的有两大类,一是浏览器与服务器交互的HTTP协议的接口,另一类web service接口如soap,rmi,rpc等协议。 HTTP接口请求方法常用的有GET、POST两种请求类型。具有无连接无状态的特征。HTTP请求例如GET /images/logo.gif HTTP/1.1,表示从/images目录下请求logo.gif这个文件。
1.2 WEB接口自动化 1.2.1 Web接口测试 web接口测试即站在web服务程序UI层之上自动化测试的一种手段,是站在用户的角度上测试web服务程序业务逻辑的正确性。测试的重点是围绕web服务暴露的接口检查接口数据的正确性,这个过程是将web服务程序当做黑盒,通过自动化测试技术提高测试执行效率降低人工回归的成本。
1.2.2 分什么要做接口测试
下图说明了基于HTTP接口的web应用的整体架构特征,按照这种架构设计开发项目,引发两个问题: 第一、系统级测试一定要等到web服务器程序和浏览器端的程序都开发完毕后才能进行吗?参考以下传统的RD与QA合作进行的项目流程,可以看到,QA在RD提测程序后才能真正进入到测试阶段,那么项目的发布周期自然受到这种串行下来的工作安排影响,是1+1的时间周期。
第二、为了提高效率,公司的团队引入了系统级自动化测试的工具或方案,既然是从用户角度去测试,当然要寄希望于从模拟用户行为代替手工操作来进行测试。比如从浏览器操作的方式去测试,能很直接的覆盖用户的一手操作,但是需要思考的是,浏览器各个版本如ie6,7,8,chrome,firefox等,各自有各自特性,JavaScript在浏览器内表现效果又不尽相同,浏览器在不同windows环境下、不同网络条件下运行的状况又不一样,给QA带来一个难题:如何保证浏览器上的自动化case稳定、高效执行?
我们先分析第一个问题,项目团队需要提高产品发布效率,提前QA测试介入的时间点,我们可以想到有几种方案: 1. QA跟随RD进度,加入到各个层级代码参与单元测试: 假设我们没有引入TDD模式没有引入敏捷,那么常规的解决方式是一批被测函数代码由RD写完之后提交svn,然后QA update代码后先花十几分钟阅读代码再加上对业务需求的理解然后再花费十几分钟写Xunit case,与QA预期结果一致则好,不一致则需要再花时间与RD沟通原因等等。其一QA花费更多时间,要深入到RD的代码逻辑深处;其二对QA coding能力要求也很高,这取决于公司QA人员的定位,是要求QA更熟悉测试设计而代码能力次之呢,还是QA的整体技术能力都要很高,一般来讲大多数的QA强项在于业务需求的熟悉和测试设计能力,所以这种方式对团队整体人员素质的要求非常高。 2. QA不参与单测,RD依据需求纵向拆分功能点然后迭代提测,QA能提前一定时间介入测试: 对照如下的流程示意图说明这个过程,实际上是传统瀑布模型做了拆分,变为了多个短期的“小瀑布模型”,这样的效果能使得项目周期长的产品,可提前介入测试以提前发现问题。
需求分析详细设计编码实现测试 在这样的迭代流程中,如何合理利用自动化手段来提高测试效率呢?一般来讲迭代周期不会很长,常规性的为3~5天一个周期,做太复杂的自动化投入成本较高。对于web系统来讲,为避免过多的自动化投入得不偿失,需要谨慎的判断web系统的特征适合哪种自动化模式。所以这里特别要关注的就是分层自动化测试:
如上图所述,web系统可以做几种功能测试:单元测试,集成测试,系统测试。大多数的产品QA不会太多介入单元测试,集中在集成测试和系统测试。结合上面提到的迭代排期,其实在一般项目中上层UI的开发往往比较滞后,赶工的结果也是提测质量不高。所以可推荐的一种模式是迭代周期内按照UI接口划分功能点做排期,UI的开发可以放在UI接口稳定之后提测。所以迭代周期内,面向UI接口的自动化就是一个将测试前置,并且积累自动化case以待回归时代替手工操作的大好机会。
就着上面这个结论,再分析一下本节开头抛出的第二个问题:“系统级自动化测试的稳定性与可靠性”,先提出几个观点如下: 1. 有一些测试点,从系统级角度做自动化的性价比不高: 第一:目前技术手段上还不具备低成本的实现手段的,比如flash、js实现的一些效果、不规范HTML标签、对浏览器运行版本环境考虑不周等引发的问题。导致开发成本高,运行的稳定性较低。 第二:UI实现逻辑比较薄,比如只是查询DB一个字段然后显示在页面,把重点放在后端逻辑检查上性价比更高 2. 系统级测试和集成测试的关注点不同:系统级测试关注的是用户从UI直接操作所能见到的结果,而集成测试关注的是UI接口数据的准确性。比如报表功能,页面上看到的就是一个表格,而对UI接口来讲需要覆盖N种参数组合。
需求分析详细设计迭代1编程实现迭代1测试
迭代2开发迭代2测试
系统测试:以系统为整体进行黑盒测试,手工为主+UI自动化为辅集成测试:脱离UI,对server的网络通信接口进行黑盒测试,自动化为主
单元测试:对代码函数进行白盒测试单元测试集成测试单元测试上面两点说的是系统级测试和集成测试的区别之处,在自动化实施过程中,推荐分层的测试思路,既能够细化测试也能综合衡量自动化的投入成本,总的来讲就是以下几点: 1. 传统瀑布项目,持续周期长,通过迭代模式可提前介入测试,而迭代周期内系统级功能可能不具备可测性,但是接口可以具备可测性。 2. 基于UI的自动化有利有弊,需要结合系统特征综合考虑分层测试的必要,分层后各有测试的侧重点,比如UI自动化重点关注UI的操作流程和显示,集成测试更关注UI接口的参数等价类覆盖和数据正确性。
1.2.3 接口可测性分析 接口显而易见要比UI简单的都,只需要知道协议和参数即可完成一次请求,从自动化测试实施难易程度来看,有以下几个特征: 1. 驱动执行接口的自动化成本不高:HTTP,RPC,SOAP,RMI等各类都可以依据相应的协议封装一个client作为接口请求的执行器。 2. 整个自动化测试中综合性价比高:接口测试还是属于黑盒范畴,所以比单元测试难度要低;而相比UI自动化稳定性可靠性更高
2 接口测试工具选型
2.1 常见测试工具 2.1.1 JUnit JUnit作为单元测试框架常被用作白盒测试,框架具备的一些优良特征有: 1. 提供丰富API支持多种验证结果正确性的逻辑 2. 通过参数化、@before、@after等特性,支持用例代码可复用 3. suite的模式支持case的批量运行 4. 有展现良好的报表 5. 与eclipse ide集成,使用方便
2.1.2 HttpClient HttpClient是一个功能丰富支持HTTP协议的客户端编程工具包,具备以下主要功能: 1. 封装实现了所有HTTP的方法,如GET,POST,PUT,HEAD 2. 支持redirect,会话保持 3. 支持文件上传 2.1.3 HttpUnit HttpUnit是一个HTTP请求的测试辅助工具,能处理web测试的需求。通过模拟浏览器的行为,处理HTTP请求、会话保持、重定向以及对HTTP response做DOM解析。 相比于HttpClient,不同之处在于: 1. HttpUnit能对HTTP返回的结果页进行解析,比如DOM元素定位 2. HttpUnit能自己启动一个servlet来运行被测服务
2.1.4 HtmlUnit
HtmlUnit相比HttpUnit功能更加强大,就像一个浏览器,HtmlUnit是Junit 的扩展测试框架之一,该框架模拟浏览器的行为,开发者可以使用其提供的API对页面的元素进行操作。HtmlUnit支持HTTP,HTTPS,COOKIE,表单的POST和GET方法,能够对HTML文档进行包装,页面的各种元素都可以被当作对象进行调用,对JavaScript的支持也比较好。
2.1.5 JWebUnit
JWebUnit 以 HttpUnit和 JUnit为基础的一个web测试工具。可以用来验证链接跳转、表单输入和提交、表格内容以及其他 Web 应用程序特性的正确性。相比于HtmlUnit,JWebUnit封装的更友好,编写case也会更加简单。