写点什么

DevOps on DevCloud|如何实现应用接口的混合驱动测试?

  • 2019-10-15
  • 本文字数:4016 字

    阅读完需:约 13 分钟

DevOps on DevCloud|如何实现应用接口的混合驱动测试?

在“DevOps 能力之屋(Capabilities House of DevOps)”中,华为云 DevCloud 提出(工程方法+最佳实践+生态)×工具平台=DevOps 能力。华为云 DevCloud 将推出“DevOps on DevCloud”系列,针对 DevOps 领域场景,阐述该场景在华为云 DevCloud 上的实施方法与实践。


目前越来越多不同行业的企业开启了数字化转型,以提升业务敏捷性与开放合作能力,为客户或合作伙伴提供更好的体验。微服务架构(Microservices Architecture)和敏捷与 DevOps 成为诸多企业在数字化转型中对于应用架构和工程方法的不二选择。随着微服务架构的广泛流程,RESTful 风格 API 也成为大势所趋。因而,对 API 进行持续测试成为 DevOps 的关注点之一。随着微服务数量规模增加、DTAP 环境配置变化、软件交付周期缩短,持续测试自动化成为更为亟需解决的问题。毫不夸张地讲,没有测试自动化,微服务架构的实施对于企业更会成为一场灾难。


一谈到测试自动化,大多数团队通常将其视为纯粹的技术挑战,例如选择测试框架、确定测试工具等等。实际上,测试自动化成功的核心原则之一是测试设计(Test Design)。团队应该从一开始在测试设计上进行足够多的投入。测试设计过程始于分析测试需求。为了提升测试覆盖率,团队可以使用“业务流(Business Flow)”方法来分析需求。团队需要在业务层级(Business Level)与交互层级(Interaction Level)上对操作(Action)或数据(Data)进行抽象。因此,业界提出了关键字驱动测试(KDT,Keyword Driven Testing)或者数据驱动测试(DDT,Data Driven Testing)等方法来进行测试设计,提升测试自动化效率。


对于 KDT 和 DDT,从其定义来讲,存在一定的区别,即什么因素对测试结果起决定性作用就是什么驱动测试。当然 KDT 与 DDT 也有联系。例如:以登录为例,首先登录由不同的 Action 组成(按钮点击、文本框输入等),其次将登录的用户名、密码作为变化的数据(参数化),可以只关注数据。因此,为提升复用性,在实际项目中,一般会采用混合驱动测试的方法,即融合关键字驱动测试与数据驱动测试。总而言之,测试设计需要对操作与数据进行抽象、分组等。


华为云 DevCloud 云测服务提供了接口测试功能,支持 HTTP 和 HTTPS 协议,并可通过参数化、自定义环境、关键字等特性支持混合驱动测试,同时将将接口测试纳入流水线进行管理,支持产品团队践行 DevOps 理念,为微服务架构的 API 保驾护航。

准备工作

1.1 示例应用接口

华为云 DevCloud 对外提供了开放 API,供第三方平台进行集成。本接口测试将以华为云 DevCloud 项目管理服务相关 API 示例。华为云 DevCloud 的 API 列表请参考,接口调用方法请参考,获取 Token 认证的方式请参考

1.2 创建项目

开发者可以访问华为云 DevCloud(https://www.huaweicloud.com/devcloud/),登录后在首页新建项目,选择“空白项目”的Scrum或者看板之一,输入项目名称(例如:Prj4ApiHDT)即可创建项目。


在访问 Prj4ApiHDT 项目,并进入“测试”-“接口测试”后,就可以开展接口测试相关工作了。

API 测试

本次 API 测试将覆盖一个业务流(Business Flow):获取授权令牌->创建项目->查询项目当前工作项列表->在项目中新建工作项->查询项目当前工作项列表->删除项目。

2.1 创建关键字 getAuthToken

调用华为云 DevCloud 的开放 API 首先需要获取授权令牌(token),详细情况请参考“获取用户token”。为了测试 API 的所有用例方便获取 token,将创建关键字 getAuthToken。


在进入“接口测试”页面后,点击“新建”,在“新建用例”页面输入名称“manageProject”等信息,并点击“确定”,用例创建成功并进入编辑用例脚本页面。


在用例“manageProject”的编辑用例脚本页面,进入“测试步骤”,新建“URL 请求”,名称设置为“getAuthToken”,并输入以下信息:


请求:如图 1 所示,请求信息的方法选为“POST”,URL 填为“iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens”;请求体选择“JSON”,并填写如下信息:


{  "auth": {    "identity": {      "methods": [        "password"      ],      "password": {        "user": {          "name": "$${userName}",          "password": "$${password}",          "domain": {            "name": "$${domainName}"          }        }      }    },    "scope": {      "domain": {        "name": "$${domainName}"      }    }  }}
复制代码


检查点:来源为“响应码”,比较符为“等于(数字)”,目标值为“201”。参见图 2。


响应提取:出参为“X-Auth-Token”,来源为“响应头”,属性为“X-Subject-Token”。参见图 3。



图 1 填写请求信息



图 2 填写检查点信息



图 3 填写响应提取信息


在 JSON 格式的请求中,大家会发现



{userName}、$${password}等 3 个参数。这些均为项目管理的环境参数,可以用于整个项目。如图 4 所示,创建了 alpha、Prod 等 2 个环境,在 Prod 环境中增加了 3 个参数,如下:


  • domainName:可以填写为账号名;

  • userNanme:可以填写 IAM 用户用户名;

  • password:可以填写为密码,并设置为敏感参数。



图 4 管理环境参数


在用例“manageProject”的编辑用例脚本页面,点击“存为关键字”图标,输入关键字名称“getAuthToken”,并选择测试步骤中的“getAuthToken”。如下图所示:



图 5 将测试步骤设置为关键字


进入“测试”-“接口测试”页面,我们将在测试用例的列表中看到刚才创建的关键字。

2.2 测试项目管理相关 API

在用例“manageProject”的编辑用例脚本页面,可以在“测试步骤”中,将 getAuthToken 步骤删除,然后在“前置步骤”中,添加关键字 getAuthToken。



图 6 使用关键字

2.2.1 “创建项目”步骤

在用例“manageProject”的编辑用例脚本页面的“测试步骤”中,新建“URL 请求”, 名称设置为“createProject”,并输入以下信息:


请求:请求信息的方法选为“POST”,URL 填为“api.devcloud.huaweicloud.com/pcedge/v1/projects”;请求头名称为“X-Auth-Token”,值为“${X-Auth-Token}”,此值为关键字getAuthToken的响应提取中的出参名称“X-Auth-Token”。请求体选择“JSON”,并填写如下信息:


{


“name”: “demo1”,


“description”: “项目描述”,


“type”: “scrum”,


“homepage”: “”


}


检查点:【1】来源为“响应码”,比较符为“等于(数字)”,目标值为“200”。【2】来源为“响应体(JSON)”,属性为“status”,比较符为“等于(字符串、区分大小写)”,目标值为“success”。


响应提取:出参为“project_uuid”,来源为“响应体(JSON)”,属性为“result.project.project_uuid”。此参数将作为后续 API 接口的输入。

2.2.2 “查询工作项列表” 步骤

在用例“manageProject”的编辑用例脚本页面的“测试步骤”中,新建“URL 请求”, 名称设置为“queryWorkItemList”,并输入以下信息:


请求:请求信息的方法选为“POST”,URL 填为“api.devcloud.huaweicloud.com/pcedge/v1/projects/{X-Auth-Token}”,此值为关键字getAuthToken的响应提取中的出参名称“X-Auth-Token”。请求体选择“JSON”,并填写如下信息:


{  "page_num": "1",  "page_size": "15",  "query_type": "backlog",  "tracker_id": [    2,    3,    7  ]}
复制代码


检查点:来源为“响应码”,比较符为“等于(数字)”,目标值为“200”。

2.2.3 “创建工作项”步骤

在用例“manageProject”的编辑用例脚本页面的“测试步骤”中,新建“URL 请求”, 名称设置为“createWorkItem”,并输入以下信息:


请求:请求信息的方法选为“POST”,URL 填为“ api.devcloud.huaweicloud.com/mobile/v1/projects/${project_uuid}/issues ”; 请求头名称为“X-Auth-Token”,值为“${X-Auth-Token}”,此值为关键字 getAuthToken 的响应提取中的出参名称“X-Auth-Token”。请求体选择“JSON”,并填写如下信息:


{  "subject": "Item1",  "description": "工作项描述",  "type_id": 3,  "start_date": "1566809662",  "due_date": "1566896062",  "priority_id": 3,  "servity_id": 12,  "status_id": 1,  "expected_work_hours": 8}
复制代码


检查点:来源为“响应码”,比较符为“等于(数字)”,目标值为“200”。

2.2.4 “查询工作项列表” 步骤

在用例“manageProject”的编辑用例脚本页面的“测试步骤”中,在步骤“queryWorkItemList”上点击“复制”,并将新的步骤拖拽到 createWorkItem 后面。

2.2.5 测试步骤“删除项目”

在用例“manageProject”的编辑用例脚本页面的“测试步骤”中,新建“URL 请求”, 名称设置为“deleteProject”,并输入以下信息:


请求:请求信息的方法选为“DELETE”,URL 填为“api.devcloud.huaweicloud.com/pcedge/v1/projects/{X-Auth-Token}”,此值为关键字getAuthToken的响应提取中的出参名称“X-Auth-Token”。


检查点:来源为“响应码”,比较符为“等于(数字)”,目标值为“200”。

2.3 测试情况分析

假如测试用例正确创建,那么执行的正常结果应该为:成功创建项目;项目中工作项数量为 0;成功创建工作项;工作项数量为 1;成功删除项目。在此过程中如果出现失败的情况,可以查看测试用例 manageProject 的结果页面,进行分析。


当然,大家仔细观察测试步骤中有 2 步是“查询工作项列表”,可以用关键字来进行处理,供大家自行实现。


本文通过案例展示了华为云 DevCloud 的接口测试特性的关键能力以及使用。在实际项目中,测试场景与测试用例等将更为复杂,因此正如前文所述,产品团队应该投入精力进行测试设计,在此基础上进行测试自动化,实现持续测试。当然持续测试不可能一蹴而就,产品团队可以采用迭代的方式,持续重构优化。


2019-10-15 16:331350

评论

发布
暂无评论
发现更多内容

【干货】零售商的商品规划策略

第七在线

搭建外汇交易所系统、海外公司注册、金融牌照代办

一个普通的写作

ChatGPT 人工智能助手为你定制测试计划,精准又高效!

测吧(北京)科技有限公司

测试

GPT-4 Turbo 融合视觉能力;Google 新添 AI 视频应用 Vids丨 RTE 开发者日报 Vol.181

声网

eBPF 开发者大会倒计时!4 月 13 日不见不散

乘云数字DataBuff

智能运维 ebpf Kubernetes, 云原生, eBPF 一体化可观测平台Databuff 云原生运维

基于istio实现单集群地域故障转移

华为云开发者联盟

微服务 istio 华为云 华为云开发者联盟 企业号2024年4月PK榜

澜起科技率先试产DDR5时钟驱动器( CKD )芯片

财见

CST电磁仿真基本单位设置和保存结果【仿真教程】

思茂信息

教程 cst 电磁仿真

沙丘世界,如何抵抗勒索病毒的入侵?

脑极体

数据安全

教你构建一个优秀的SD Prompt

程序那些事

程序那些事 AIGC Stable Diffusion

实用指南:使用Pytest Allure测试框架添加用例失败截图

霍格沃兹测试开发学社

如何设计一个实时数据同步系统

golang redis 系统设计 数据同步

小红书笔记详情API接口解析:轻松抓取内容数据,提升业务效率

技术冰糖葫芦

API Explorer api 货币化 API】 pinduoduo API

了解一下 SSE

袁世超

stream kitex sse

杭州悦数 2023 年回顾:领航创新,多维突破

悦数图数据库

图数据库

2024-04-10:用go语言,考虑一个非负整数数组 A, 如果数组中相邻元素之和为完全平方数,我们称这个数组是正方形数组。 现在要计算 A 的正方形排列的数量。 两个排列 A1 和 A2 被认为是

福大大架构师每日一题

福大大架构师每日一题

Qt Group与高通公司合作,简化工业物联网的用户界面开发

财见

ES6生成器,看似同步的异步流程控制表达风格

华为云开发者联盟

JavaScript 前端 华为云 华为云开发者联盟 企业号2024年4月PK榜

表设计的18条军规

苏三说技术

数据库 表设计

抓包神器wireshark安装保姆级教程

霍格沃兹测试开发学社

DevOps on DevCloud|如何实现应用接口的混合驱动测试?_文化 & 方法_华为云容器服务团队_InfoQ精选文章