精华内容
下载资源
问答
  • 昨晚在某个测试交流群,听了一个测试老司机分享接口自动化测试的内容,对接口自动化有了更深的一些认识,也为接下来公司的接口自动化实施,提供了更多的思路。这篇博客,就说说功能测试到接口自动化的进阶,以及接口...

    ef547b27e988e99fc33344fc1a28400b.png

    昨晚在某个测试交流群,听了一个测试老司机分享接口自动化测试的内容,对接口自动化有了更深的一些认识,也为接下来公司的接口自动化实施,提供了更多的思路。

    这篇博客,就说说功能测试到接口自动化的进阶,以及接口自动化的一些事。。。

    前言

    自动化测试,算是近几年比较火热的一个话题,当然,更是软件测试未来的一个发展趋势。未来,功能测试等非核心的测试工作,都将被外包。

    想要在软件测试这个行业继续前行,就必须拥有核心竞争力,掌握自动化测试技术,是必不可少的一个技能。

    在《Google软件测试之道》一书中有介绍到:在Google,70%的自动化测试工作集中于单元测试,20%集中于接口测试,剩下10%才是UI测试。

    诚然,我们没有Google那么完善的机制和工程师文化,没必要一切照搬Google,但Google作为互联网2.0时代最耀眼的一个公司,它的技术发展方向,流程管理等可以说是不久的将来,

    我们也要到达的方向。选择适合自己的,落地应用,是当下我们应该做的。

    目前国内的互联网行业,大环境来说,还处在一个快速发展,需要流程化标准化的时期,如何跟上不断变幻发展的节奏,除了不断了解接触新的东西,还需要不断学习,提升自身,以内在

    的驱动力,去紧跟时代浪潮。即使做不了弄潮儿,也不能变成时代淘汰的那一批。说到这里,推荐2本书:吴军的著作《浪潮之巅》、《硅谷之谜》,感兴趣的童鞋可以去看看。。。

    一、接口测试的必要性和意义

    接口,即API,应用程序编程接口,关于接口的介绍,之前的博客就有详细介绍过,感兴趣的童鞋可以去看看:https://blog.csdn.net/A_Kaka/article/details/107410497

    这里主要说说接口测试的必要性和意义:

    接口测试实施在多系统的平台架构下,有着极为高效的成本收益比(当然,单元测试收益更高,但实施单元测试的成本投入更大,技术要求更高,所以应该选择更适合自身的才是最好的方案)。

    接口测试天生为高复杂性的平台带来高效的缺陷检测和质量监督能力,平台复杂,系统越庞大,接口测试的效果越明显。

    总的来说,接口测试是保证高复杂性系统质量的内在要求和低成本的经济利益驱动作用下的最佳方案,主要体现在如下三个方面:

    1、节省了测试成本

    根据数据模型推算,底层的一个程序BUG可能引发上层的8个左右BUG,而且底层的BUG更容易引起全网的死机;接口测试能够提供系统复杂度上升情况下的低成本高效率的解决方案。

    2、接口测试不同于单元测试

    接口测试是站在用户的角度对系统接口进行全面高效持续的检测。

    3、效益更高

    将接口测试实现为自动化和持续集成,当系统复杂度和体积越大,接口测试的成本就越低,相对应的,效益产出就越高。

    二、做接口测试需要哪些技能

    关于这点,在之前的博客也说过,传送门:https://blog.csdn.net/A_Kaka/article/details/107413846

    做接口测试,需要的技能,基本就是以下几点:

    业务流:了解系统及内部各个组件之间的业务逻辑交互;

    数据流:了解接口的I/O(input/output:输入输出);

    协议:包括http协议,TCP/IP协议族

    工具:工具可以辅助我们更好更高效的完成工作,常用的接口测试工具有:jmeter、loadrunner、soapui、postman等;

    数据库知识:无论是从数据库获取知识,还是确认数据落地,抑或接口对数据执行了哪些操作,都需要确认,因此数据库知识(其实就是增删改查)就很有必要;

    补充:接口文档的几个必要点:完整性、一致性、容错性

    三、接口自动化测试

    1、如何开展

    首先,调试单个接口,保证单个接口的正确和通畅(类似于性能测试中的基准测试);

    其次,明确数据流,业务流;

    最后,将N个接口测试脚本串起来,执行即可;

    最重要的一点,别想太多太复杂,先把最基础最简单的做起来,就成功一大半了,至于扩展性的第三方接口、https、定时任务、自动出测试报告、自动发邮件等等功能,这都是不断累计和优化的,

    行动起来就行,想太多不如行动起来,让接口自动化测试落地,才是我们首先需要考虑的!

    2、开展之前需要知道的

    现在的测试对象包含几个页面?

    每个页面涉及几个接口?

    分别在哪一步调用?

    每个接口包含哪些字段?

    各个字段对应数据库哪张表?

    每个表中各个字段是什么意思?

    各个接口对表产生了怎样的操作?

    3、自动化框架

    什么是框架?你可以理解为一个完整的环,也可以理解为让接口测试脚本运行的一整套环境,平台,随便什么都可以;一般一个自动化测试框架包含以下几点:

    数据池:即测试数据的存储管理,一般集成为一个data包,其中包括:

    log(日志文件)、report(测试报告文件,一般为xml格式)、case-data(单个接口的测试数据,一般为json格式)、server-data(接口业务串联的数据,可以用excel管理)

    脚本管理中心:接口测试脚本的统一管理、存储、调度中心,常用的工具有maven、ant等,或者可以使用编程语言中的单元测试框架提供的功能,选择自己适用的即可;

    运行平台:一般是借助工具来运行这些测试脚本,工具可以使用上面提及到的几种(jemter、loadrunner、soapui等),同样,选择合适的很重要;

    持续集成工具:最常见的就是Jenkins,它的作用就是监控外部程序的调用执行,定时或者触发调度任务,测试脚本执行等功能;

    通信服务:dubbo、spring_boot、thrift等RPC、REST同步调用服务;

    测试结果统计管理中心:比如testlink,目的是为了测试结果自动更新上传,更好的统计测试结果,以便后期的优化;

    上面说了这么多,实际上它的意义就是:数据与脚本分离,测试结果自动提交通知,提高测试脚本和测试数据的维护便利等等。。。

    我正在使用的框架为:jemter+maven+Jenkins+dubbo+MySQL......

    关于接口自动化测试,基本就是上述的内容,当然,选择适合自身实际情况的框架,落地实施,才是重点,行动起来,才能咸鱼翻身。。。

    欢迎加入我们,软件测试交流群(群号见文章开头图片)

    展开全文
  • 接口自动化测试项目中,比较常见的是基于HTTP协议的Restful设计风格和开发方式,基于GRPC协议的少,项目实践后心得较多,故记录之上一篇:《基于GRPC协议的Jmeter性能测试脚本开发》第03节,介绍了编译protoproto...

    在接口自动化测试项目中,比较常见的是基于HTTP协议的Restful设计风格和开发方式,基于GRPC协议的少,项目实践后心得较多,故记录之

    上一篇:《基于GRPC协议的Jmeter性能测试脚本开发》

    第03节,介绍了编译proto

    proto的编译完成后,即可编写GPRC客户端,访问服务器,开展接口自动化测试工作

    本篇内容:

    • 工程目录 & 配置host & 加入testng

    • 代码实现GRPC的Client

    • 封装BaseClient

    • 生成测试报告

    01

    工程目录 & 配置host & 加入testng

    下图是我的接口自动化测试工程目录:

    • client,客户端代码文件

    • test,测试用例文件

    • resource,资源文件

    78340edf4cbfa11d34d2b81fe21d4f71.png

    在resources/application.properties,添加内容:

    20edd0aee8f1587313111972074fddbd.png

    引用示例:

    4a03cce4ae3c48fc6f5a4edd7d76d4dc.png

    也可以建个utils/ConfigFile文件,把要引用的变量封装一下

    d77083bd972bb7a52584654767e7095a.png

    在pom.xml添加testng:

    ade7401d6cde863a9eb14b4c755582ce.png

    testng.xml的内容:

    bfcda1fc228fa1e7f351724c0a8881d6.png

    02

    代码实现GRPC的Client

    依据proto文件编写Client

    以accout.proto为例:

    • 定义 LoginRequest  LoginReply

    • 定义 ChangeUserRoleRequest

      ChangeUserRoleReply

    a4ec2fbe558dbaab3272baa094037ed3.png

    c2edde01c1d474e8e2fc819c1ad39727.png

    从上图的proto文件中,我们可以看到,login」接口的请求是「LoginRequest」,返回是「LoginReply」

    LoginRequest为例,即「login」接口入参的包含:

    • 枚举enum,登录方法

    • Method对象

    • User对象

    • 统一请求封装对象

    由此,login的Client编写如下:

    08fa0456b464afc67ffeb906d311e2a8.png

    在test文件夹下,新建TestAccount,测试login接口

    43ca81c078ab001dc322475931a5b146.png

    03

    封装BaseClient

    一个项目的proto文件很多,每个proto包含多个接口

    每个接口client的编写,格式差不多,所以,考虑封装成Base类

    bde4f5950c9e25661fc73ba45f35bd38.png

    BaseClient的运用

    7f258b59a5542e70f045a554bb69dad1.png

    28a516837dc5490bbc09a85ba54d2eea.png

    04

    生成测试报告

    脚本编写完成

    运用config/ExtentTestNGIReporterListener

    生成测试报告

    f4c6a7570e65b9760cae9858c01512cc.png

    展开全文
  • testng接口自动化测试 许多Java开发人员和自动化测试工程师在他们的工作中都使用TestNG作为测试框架。 我也不例外。 这是一个显而易见的选择,因为TestNG提供了非常强大的工具集,这使处理各种测试变得更加容易。 ...
    testng接口自动化测试

    testng接口自动化测试

    许多Java开发人员和自动化测试工程师在他们的工作中都使用TestNG作为测试框架。 我也不例外。 这是一个显而易见的选择,因为TestNG提供了非常强大的工具集,这使处理各种测试变得更加容易。 为了证明这一点,我将在本文中向您展示如何解决一项不平凡的任务。

    问题

    如何使用不同的数据集以特定顺序在单个类中运行测试? 好吧,好像我用一句话就暴露了这个问题。 但是,如果您要我以更严格的形式提出这句话,我将提供以下列表:

    • 多种测试方法
    • 一门考试
    • 序列运行
    • 每种测试方法都有不同的数据集

    这里总结一下是该问题的抽象模式:

    TestClass {
    firstTest(String testData)
    secondTest(String testData)
    thirdTest(String testData)
    }
    
    TestDataSets {
    “string 1″
    “string 2″
    }

    运行这些测试应得出以下结果:

    firstTest(string 1)
    secondTest(string 1)
    thirdTest(string 1)
    
    firstTest(string 2)
    secondTest(string 2)
    thirdTest(string 2)

    在突出显示并解释了问题之后,我们可以继续解决问题。

    TestNG的实现

    我将使用最简化的代码构造,但是您可以使用这种方法通过一些特定的逻辑对其进行自定义。

    package kill.me.later;
    
    import static org.testng.Assert.assertTrue;
    
    import org.testng.annotations.Test;
    
    public class SomeTest {
    
    	private int id = 0;
    	private String account = "";
    
    	public SomeTest(int id, String account) {
    		this.id = id;
    		this.account = account;
    	}
    
    	@Test
    	public void firstTest() {
    		System.out.println("Test #1 with data: "+id+". "+account);
    		assertTrue(true);
    	}
    
    	@Test
    	public void secondTest() {
    		System.out.println("Test #2 with data: "+id+". "+account);
    		assertTrue(true);
    	}
    
    	@Test
    	public void thirdTest() {
    		System.out.println("Test #3 with data: "+id+". "+account);
    		assertTrue(true);
    	}
    
    }

    检查上面的代码,每个人都可以注意到我使用了常规的TestNG @Test批注应用于void方法。 我也声明了一个构造函数,但是其目的将在后面讨论。 TestNG具有非常有用的注释– @Factory@DataProvider 我建议在官方TestNG文档站点上阅读有关它们的信息 在阅读这些注释时,我将继续进行实际操作:

    package kill.me.later;
    
    import org.testng.annotations.DataProvider;
    import org.testng.annotations.Factory;
    
    public class SampleFactory {
    
    	@Factory(dataProvider="dp")
    	public Object[] createInstances(int id, String account) {
    		return new Object[] {new SomeTest(id, account)};
    	}
    
    	@DataProvider(name="dp")
    	public static Object[][] dataProvider() {
    		Object[][] dataArray = {
    				{1, "user1"},
    				{2, "user2"}
    		};
    		return dataArray;
    	}
    
    }

    最后一个代码片段提供了SomeTest类中每个测试方法的运行,并在dataProvider中声明了数据集。 但是,如果尝试在TestNG的帮助下运行SampleFactory类,则不会从“问题”部分中获得测试方法的执行顺序。 为了实现顺序执行测试方法的顺序,您需要使用TestNG XML启动器:

    < !DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

    请注意group-by-instances参数。 确实,它为测试方法的执行提供了非常理想的顺序。 因此,现在您可以轻松地组织此类DDT运行的测试。

    翻译自: https://www.javacodegeeks.com/2014/01/testng-run-tests-sequentially-with-dataprovider-inside-one-test-class.html

    testng接口自动化测试

    展开全文
  • 今天跟大家介绍UI测试接口测试、单元测试主要内容,以及每种测试花费时间讨论。UI测试【Selenium】UI测试是最接近软件真实用户使用行为的测试类型。通常是模拟真实用户使用软件的行为,即模拟用户在软件界面上的...

    今天跟大家介绍UI测试、接口测试、单元测试主要内容,以及每种测试花费时间讨论。

    UI测试【Selenium】UI测试是最接近软件真实用户使用行为的测试类型。通常是模拟真实用户使用软件的行为,即模拟用户在软件界面上的各种操作,并验证这些操作对应的结果是否正确。

    接口测试【API测试】API测试,主要针对的是各模块暴露的接口,通常采用灰盒测试方法。首先以黑盒方式设计如何调用API的测试用例,同时在测试执行过程中统计代码覆盖率,然后根据代码覆盖率情况来补充更多、更有针对性的测试用例。

    单元测试单元测试,属于白盒测试的范畴,通常由开发工程师自己完成,越早发现缺陷其修复成本越低。

    f775ea4d43577cd0601ab70554ab2c09.png

    每种测试的优缺点

    一、UI自动化测试大家所在公司都属于互联网公司,最大的特点就是快——产品需要不停的迭代,迭代时间基本在15天左右。UI自动化测试的优点是,能够实际模拟真实用户的行为,直接验证软件的商业价值;缺点是用例的维护和执行代价很大。另外,UI自动化测试的稳定性问题,是长期以来阻碍GUI测试发展的重要原因。在快速迭代的情况下,页面的改动可能会很频繁,而UI自动化测试本身基于页面元素,前端小小的改动可能需要测试的大大改。

    二、接口测试相比于UI自动化测试,接口测试更稳定,更具有价值。

    效率。接口测试是通过测试数据验证请求【request】与响应【response】是否符合预期。因此,接口测试开发和调试的效率会比ui自动化测试高很多。

    稳定性。如果接口改动,那基本属于业务重新设计。所以接口测试用例执行的稳定性很高。

    实用性。UI自动化测试验证的主要是页面显示,而接口测试验证的主要是数据。在当前开发水平下,功能测试基本可以完全验证页面显示的问题,所以UI测试有点类似于“这些没问题了,为了保证一直没问题,所以要写UI自动化,每天去执行”。接口测试则是对接口返回数据的验证,开发在开发新的接口时涉及到接口互相的调用,中间难免出现比如数据类型、key-value不匹配的情况,因此在实用性考虑,接口测试实用性更高。

    三、单元测试船长所在的互联网公司单元测试是由开发完成的,在时间紧张的情况下,我们一般会出一个开发自测文档,只需要开发完成小量的单元测试设计。事实也是如此,开发因为任务在身,写好接口后大多不愿意写大量单元测试。所以单元测试需要根据公司不同而定。鉴于上述原因,我们在做非功能测试时,可以利用UI自动化测试,覆盖产品主要或者说关键流程(包含兼容性测试),也就是说只要保证主要流程不出错,剩下的即使有了问题也不会影响产品的正常使用。把时间更多的放在接口测试用例的设计和实现上,保证数据的准确性。单元测试则可以根据公司情况选择时间分配。

    如果对接口、性能、自动化测试、面试经验交流等感兴趣的,可以关注我的头条号,我会不定期的发放免费的资料,这些资料都是从各个技术网站搜集、整理出来的,如果你有好的学习资料可以私聊发我,我会注明出处之后分享给大家。欢迎分享,欢迎评论,欢迎转发。需要资料的同学可以关注小编+转发文章+私信【测试资料】

    展开全文
  • 会执行以下几步操作:拿到所有全局变量拿到集合变量(集合变量只会在该集合内生效,不会在其他集合中生效)声明测试报告的保存路径更新集合的最后执行人与最后执行时间调用testng类,进行接口执行,并生成报告Service@...
  • 前言1 简介1.1 技术栈1.2 特点2 详述2.1 权限管理设计2.1 平台入口2.2 分级设计2.2.1 项目管理2.2.2 接口列表2.2.3 用例管理2.2.3.1 基本信息...测试结果3 难点与待优化列表3.1 关联的实现3.2 待优化列表前言接口自动化...
  • 对于自动化测试,原来谈这方面...也包括了单元测试,接口自动化测试和UI自动化测试的分类。DevOps成熟度中测试管理概述测试管理是一个过程,通过该过程,所有和测试相关的方法,流程,人员都被定义。在产品投入到生...
  • testNG接口自动化测试干货分享

    千次阅读 2018-12-03 10:48:17
    开发语言: java 干货内容: 1.涉及框架:testNG、springboot、mock、mybatis、git、httpclient、Jenkins等 2.接口测试理论 链接:https://pan.baidu.com/s/16rS103xjCkPUpkSrvHixWQ 提取码:y6yt ...
  • 参数2在testng.xml中增加parameter可以赋值给DataProvider<parametername="sheetIndex"value="0">parameter>测试代码:publicclassRegisterCase{publicintsheetIndex;@BeforeClass@Parameters({"s...
  • TestNG :JAVA一个主流的测试框架,引入了注解、依赖、分组等便于使用的新功能。Rest Assured :基于REST服务的测试过程的Java DSL,支持GET、POST等请求,且可以通过断言验证响应的信息。测试类demo创建一个测试...
  • 现在代码可以运行了,但是每次运行都需要我们手工去执行,并且测试报告也只能在执行测试的电脑上才能看到,我们希望能够定时自动执行测试,并且能够做到自动发送测试报告到相关人员的电子邮箱中。Jenkins 正好可以很...
  • TestNG是一个开源的测试框架 与Junit的发行顺序:Junit3->TestNG->Junit4,TestNG的灵感来自于Junit3,在TestNG推出不久后,Junit借鉴了其中很多概念,也推出了差不多四年以来首个发行版本Junit4。 所以,...
  • 上一篇自动化测试我们大概了解了测试的目标、测试的技术选型以及搭建平台的目标及需求,也确定了自动化测试方案以testNg作为整个测试流程贯穿的基础支持框架,那么testNg究竟有什么特点?本篇开始我们来详细的学习...
  • 摘要本文主要依据之前测试经验,涉及接口自动化测试,文章旨在帮助小公司想开展自己独立的接口自动化测试环境,主要从接口自动化测试是什么,接口自动化测试适应哪些公司哪些项目,接口自动化环境怎么搭建以及怎么...
  • 为什么要做接口测试
  • eclipse +TestNG接口自动化框架搭建

    千次阅读 2017-08-02 11:31:04
    把群博里关于接口自动化的文章都看了一遍,都是关于测试过程中遇到的问题及解决方法,还没有框架搭建的博文。对于未做过接口自动化和java菜鸟的我,搭建好框架才是迈出的第一步。记录下搭建的过程,希望能够对想做...
  • package findyou.testcase;import java.io....import org.testng.Assert;import org.testng.Reporter;import org.testng.annotations.Test;import findyou.Interface.Common;import findyou.Interface.getC...
  • (1)解压eclipse-testng离线包.zip(2)将【eclipse-testng离线包/feature】中的文件夹org.testng.eclipse_6.8.6.20130607_0745复制到【MyEclipse安装目录/features】目录下(3)将【eclipse-testng离线包/org.testn...
  • JAVA+TESTNG接口自动化小白自学之旅(1)——关键字学习 【1】@Test:标记用例–用于标记测试用例方法 使用方法: 【2】@Beforemethod:测试方法之前运行–标记某个方法使其在每一条测试用例之前执行 @Aftermethod...
  • 通过xml文件或数组给接口赋参数,看接口的运行情况。 一、通过xml来赋值 新建ParameterTest类 import org.testng.annotations.Parameters; import org.testng.annotations.Test; public class ParameterTest {...
  • 手把手教你用Eclipse+TestNG搭建接口自动化测试框架话不多说,直接上~一、环境安装1、前提安装好jdk配置好Java环境变量安装Eclips这些网上都有,就不再详细介绍。资源分享链接:/s/1v9Fw62、安装TestNG插件在线安装...
  • Eclipse+TestNG搭建接口自动化测试框架

    千次阅读 2017-08-11 17:52:30
    一、环境安装 ...1.下载testNG 离线安装包【eclipse-testng离线包】,并解压。资源可以在下载:http://download.csdn.NET/detail/u012100968/9623613; 2.将解压后的文件..\eclipse-testng离线包\feature
  • 1 packagecom.testng.config;23 importcom.aventstack.extentreports.ExtentReports;4 importcom.aventstack.extentreports.ExtentTest;5 importcom.aventstack.extentreports.ResourceCDN;6 importcom.aventstack.e...
  • 转载于:http://qa.blog.163.com/blog/static/190147002201510275306185/把群博里关于接口自动化的文章都看了一遍,都是关于测试过程中遇到的问题及解决方法,还没有框架搭建的博文。对于未做过接口自动化和java菜鸟...
  • 1、数据驱动测试  数据驱动测试的核心是:测试数据与测试脚本分离,实现测试脚本参数化,提高测试脚本的可重用性。在自动化功能测试中如果... TestNG是一个开源自动化测试框架;TestNG表示下一代(Next Generati...
  • 转自 ... ...3.1 HTTP接口(GET)测试实例 3.1.1 待测接口说明 3.1.2 新建JAVA工程 1.工程目录说明 2.Common.java源码 3.getCityWeathe.java源码 4.URLConnection.java源码 3.1.3
  • 本文是转载Wade Xu的文章http://www.cnblogs.com/wade-xu/p/4229805.html接口自动化测试– Java+TestNG 测试 Restful Web Service关键词:基于Rest的Web服务,接口自动化测试,数据驱动测试,测试Restful Web ...
  • 主要对举例对国家气象局接口自动化测试进行讲解(Get请求及结果断言),以达到自动化测试入门目的,需要有一定的JAVA知识(HTTP相关)。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 513
精华内容 205
关键字:

testng接口自动化测试