java接口自动化怎么做的,java接口自动化框架有哪些?

dylinchen 302 2022-07-11


 java接口自动化怎么做的

1、开发的主要内容

展示层:TestNG+ExtentReport

逻辑控制层:HttpClient+TestNG

持久层:MyBatis+MySQL

 

2、为什么要做接口测试?

更容易实现持续集成;

自动化测试落地性价比更高,比UI更稳定;

大型系统更多更复杂,系统间模块越来越多,Bug更容易定位;

降低研发成本,提高效率。

3、接口自动化测试开发技能

开发语言Java

测试框架TestNG、HttpClient

Mock技术(模拟接口、集成实现前后端分离)

数据持久层框架(MyBatis)

持续集成工具(Jenkins)

接口协议相关的基础知识(HTTP)(所有的接口自动化测试区分处:协议可能不同)

4、接口自动化测试落地过程

需求阶段:项目立项、产品设计、需求文档

研发阶段:UI设计、前端开发、后端开发、测试设计、测试开发

测试阶段:环境搭建、多项测试执行、Bug修复、测试报告

项目上线:线上回归测试、上线报告、添加监控


  • 现阶段流行推荐使用:Python+unittest+requests+HTMLTestRunner框架

    二、Java Rest-assured框架:

      Java Rest-assured 是使用代码来实现接口的请求,封装业务流程,对于公司的业务支持比较高,灵活度很强,可以通过代码的方式打造自己公司的接口自动化框架,上手有点难度,需要有Java 编程基础,才可以使用。

    三、python+ Request框架:

    python+ Request 是使用代码来实现接口的请求,封装业务流程,对于公司的业务支持比较高,可以根据业务的灵活度来定制化开发接口框架,再加上Jenkins 就可以持续化集成。上手有点难度,需要有Python 编码的基础,才可以使用。

    四、Robot Framework框架:

    官网介绍机器人框架是一个通用的开放源码自动化框架,用于验收测试、验收测试驱动开发(ATDD)和机器人过程自动化(RPA)。它具有易于使用的表格测试数据语法,并利用关键字驱动的测试方法.它的测试功能可以通过用Python或Java实现的测试库来扩展,用户可以使用与创建测试用例相同的语法从现有的测试库中创建新的更高级别的关键字。

    1、它的优点:

    (1)关键字驱动,自定义用户关键字。

    (2)支持测试日志和报告生成。

    (3)支持系统关键字开发,可扩展性好。

    (4)支持数据库操作。

    2、它的缺点:

    接口测试用例写起来不简洁。

    需要掌握特定语法。

    *** Settings ***

    Library    RequestsLibrary

    Library    Collections

    *** Test Cases ***

    test_get_event_list    # 查询发布会(GET请求)

    ${payload}=    Create Dictionary    eid=1

    Create Session    event    http://127.0.0.1:8000/api

    ${r}=    Get Request    event    /get_event_list/    params=${payload}

    Should Be Equal As Strings    ${r.status_code}    200

    log    ${r.json()}

    ${dict}    Set variable    ${r.json()}

    #断言结果

    ${msg}    Get From Dictionary    ${dict}   message

    Should Be Equal    ${msg}    success

    ${sta}    Get From Dictionary    ${dict}    status

    ${status}    Evaluate    int(200)

    Should Be Equal    ${sta}    ${status}

    总结:不考虑,没人愿意这么写接口用例。

    五、HttpRunner框架:

    HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求, 网址:https://cn.httprunner.org/ 官网已经有很详细的介绍。

    1、它的优点:

    基于YAML/JSON格式,专注于接口本身的编写。

    接口编写简单

    生成测试报告

    接口录制功能。

    2、它的缺点:

    没有编辑器插件对语法校验,容易出错。

    官方文档没有详细的说明。

    扩展不方便。

    [

    {

    "config": {

    "name": "testcase description",

    "variables": [],

    "request": {

    "base_url": "http://127.0.0.1:5000",

    "headers": {

    "User-Agent": "python-requests/2.18.4"

    }

    }

    }

    },

    {

    "test": {

    "name": "test case name",

    "request": {

    "url": "/api/get-token",

    "headers": {

    "device_sn": "FwgRiO7CNA50DSU",

    "user_agent": "iOS/10.3",

    "os_platform": "ios",

    "app_version": "2.8.6",

    "Content-Type": "application/json"

    },

    "method": "POST",

    "date": {"sign": "958a05393efef0ac7c0fb80a7eac45e24fd40c27"}

    },

    "validate": [

    {"eq": ["status_code", 200]},

    {"eq": ["headers.Content-Type", "application/json"]},

    {"eq": ["content.success", true]},

    {"eq": ["content.token", "baNLX1zhFYP11Seb"]}

    ]

    }

    }]

    总结:可以考虑,至于接口数据的初始化可能需要单独处理。

    六、Postman+Newman框架:

    postman + Newman  + Jenkins 实现接口自动化框架,postman 方便日常的调试,非常的方便,测试的断言,设置前置条件,环境变量,response 参数提取 非常方便,我在日常工作中经常使用 postman进行接口的调试。postman高级的功能可以付费进行定制化,官网文档地址: https://learning.getpostman.com/docs/

     七、Jmeter+Ant框架:

    Jmeter可以做于接口自动化工具,也可以用于性能测试,在性能测方面很强大,大家可以去了解。

    1、它的优点:

    支持参数化

    不需要写代码

    2、它的缺点:

    创建接口用例效率不高。

    不能生成查看每一个接口执行情况的测试报告。

    总结:不考虑,接口编写不方便,最主要是不能生成测试报告,如果做接口性能的话可以考虑。

    八、Vue+Flask&Django框架:
    Vue+Flask 搭建自己公司的接口测试平台,可以自由定制化自己公司的业务,实现公司特殊的需求,接口测试平台,对于测试的开发能力有要求,前端 Vue ,后端 Flask & Django 框架,代码能力要求高,前后端的技术都需要懂。
    九、Python+unittest+requests+HTMLTestRunner框架(推荐使用):
    利用现有的框架和库自己定制:Unittest+Request+HTMLRunner

    1、它的优点:

    足够灵活强大: 分层测试、数据驱动、测试报告,集成CI...

    2、它的缺点:

    有一定的学习成本

      数据文件:

    {

    "test_case1": {

    "key": "value1",

    "status_code": 200

    },

    "test_case2": {

    "key": "value2",

    "status_code": 200

    },

    "test_case3": {

    "key": "value3",

    "status_code": 200

    },

    "test_case4": {

    "key": "value4",

    "status_code": 200

    }}

      测试用例:

    import requests

    import unittest

    from ddt import ddt, file_data

    @ddtclass InterfaceTest(unittest.TestCase):

    def setUp(self):

    self.url = "http://httpbin.org/post"

    def tearDown(self):

    print(self.result)

    @file_data("./data/test_data_dict.json")

    def test_post_request(self, key, status_code):

    r = requests.post(self.url, data={"key": key})

    self.result = r.json()

    self.assertEqual(r.status_code, status_code)

    总结:推荐使用,代码相对简单,功能足够灵活。

     十、总结:

     1、对于单接口,变化不多的可以使用  Postman、 Jmeter、HttpRunner框架就可以满足了,需要多个接口组合满足于一些场景的,需要自己编写代码来实现了 比如:
      登录,提取token,查询商品ID 订单ID 进行购买商品,支付,以及查询用户购买订单状态

     2、对于一些业务场景涉及多个接口的,需要使用代码的方式来查询接口需要的前置信息,如 token, 商品ID,订单ID,订单状态,以实现业务场景的接口功能测试。




版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:休克文案:这8个女性文案,很飒!
下一篇:广告情报局:OPPO请姜文拍广告,找对了!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~