一个自动化测试框架 vearne/autotest

241 篇文章 0 订阅
177 篇文章 0 订阅

2024软件测试面试刷题,这个小程序(永久刷题),靠它快速找到工作了!(刷题APP的天花板)_软件测试刷题小程序-CSDN博客文章浏览阅读3.4k次,点赞86次,收藏15次。你知不知道有这么一个软件测试面试的刷题小程序。里面包含了面试常问的软件测试基础题,web自动化测试、app自动化测试、接口测试、性能测试、自动化测试、安全测试及一些常问到的人力资源题目。最主要的是他还收集了像阿里、华为这样的大厂面试真题,还有互动交流板块……_软件测试刷题小程序​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502icon-default.png?t=N7T8https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502

1. 引言

小编手上的API服务不少,核心的项目都有CI和单元测试。
但是毕竟在单元测试中,对外部数据库、微服务的调用都是mock的,缺乏对整个链路的自动化测试
这段时间开发了一个自动化测试框架 https://github.com/vearne/autotest
初步实现了对HTTP协议API服务的支持,后期应该还会支持gRPC协议的API服务

2. 框架的优势

  • 无需进行程序开发,只需要编写配置文件

  • 可以指定testcase之间的依赖关系

  • 无依赖关系的testcase可以并发执行,执行速度更快

  • 使用xpath提取变量,书写方便

  • 支持从文件中导入变量,支持从response中提取变量

3. 完整的示例

3.1 启动API服务

使用docker compose启动一个HTTP RESTful API服务

cd docker-compose
docker compose up -d

这个服务是book管理服务,它支持对book的增删改查

添加
curl -X POST 'http://localhost:8080/api/books' \
--header 'Content-Type: application/json' \
--data '{"title": "book3_title", "author": "book3_author"}'

接口返回

{
     "id": 3,
     "title": "book3_title",
     "author": "book3_author"
}
修改
curl -X PUT 'localhost:8080/api/books/3' \
--header 'Content-Type: application/json' \
--data '{"title": "book3_title", "author": "book3_author-2"}'

接口返回

{
     "id": 3,
     "title": "book3_title",
     "author": "book3_author-2"
}

3.2 自动化测试

autotest run -c=./config_files/autotest.yml -e=./config_files/.env.dev

自动化测试中的每一个测试用例都是

  • 1) 针对API服务的请求

  • 2) 针对响应的一组断言

https://github.com/vearne/autotest/blob/main/config_files/my_http_api.yml

测试用例【2】
- id: 2
  request:
    # optional
    method: "post"
    url: "http://{{ HOST }}/api/books"
    headers:
      - "Content-Type: application/json"
    body: |
      {
          "title": "book3_title",
          "author": "book3_author"
      }
  rules:
    - name: "HttpStatusEqualRule"
      expectedStatus: 200
    - name: "HttpBodyEqualRule"
      xpath: "/title"
      Expected: "book3_title"
  export:
    xpath: "/id"
    # Extract the id value and export it to the variable MY_BOOK_ID
    exportTo: "MY_BOOK_ID"
    # default is string, optional value: integer | string | float
    type: integer

测试用例【2】对接口发出POST请求,添加了一本书,并且断言
1) HTTP的状态码是200
2) response的body中的title字段的值是"book3_title"
这里字段提取使用了XPath,XPath通常被用于对xml文件的解析,这里萌叔把它引申到对JSON字符串的处理
关于Xpath的语法详见参考资料1

对于测试用例【2】,萌叔还想使用接口返回中的某个值,所以后面萌叔export了其中的id值,
把它导出到变量MY_BOOK_ID,在后面的测试用例中,我们会用到它

测试用例【3】
- id: 3
  # Depends on TestCase2
  # TestCase2 must be executed first
  dependOnIDs: [2]
  request:
    # optional
    method: "put"
    # The user-defined variable HOST and the variable MY_BOOK_ID
    # obtained in TestCase2 are used here.
    url: "http://{{ HOST }}/api/books/{{ MY_BOOK_ID }}"
    headers:
      - "Content-Type: application/json"
    body: |
      {
          "title": "book3_title",
          "author": "book3_author-2"
      }
  rules:
    - name: "HttpStatusEqualRule"
      expectedStatus: 200
    - name: "HttpBodyEqualRule"
      xpath: "/author"
      Expected: "book3_author-2"

测试用例【3】依赖测试用例【2】,修改书本的作者,
这里断言http响应的状态码是200,author字段的值是"book3_author-2"

最佳实践

  • 建议对于有读有写的场景下,可以使用docker compose来构建一个干净的环境进行自动化测试

  • 要想查看自动化测试过程中,与API服务交互完整的输入输出,可以修改配置文件debug

global:
#  worker_num: 5
  worker_num: 1
  # default: true
  ignore_testcase_fail: true
  # 将debug改为true
  debug: false 
  • 对于测试用例较多的情况,请修改worker_num的值
    同一个文件内部的测试用例是并发的

注意: 同一个文件,测试用例的ID不允许重复

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群: 759968159,里面有各种测试开发资料和技术可以一起交流哦。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

​​​软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

  • 13
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值