摘要:最近研发的需求量涨了3倍,开发团队拼命赶进度,可苦了测试团队。

本以为从一线研发转管理后会清闲一些,但是没想到,我还要充当救火队员的角色。

到了第四季度,各业务部门都在憋着劲儿冲业绩,毕竟这跟年终奖可是息息相关的事儿。业务部门冲业绩,带动着研发的需求不断增加,这个部门说想要提前上线,那个部门说要临时加个需求,研发只能说我们得按排期来,这句话平时可能好使,可一旦需求和业绩相关,那研发就要火力全开,排期什么的就得靠边站了。

最近研发的需求量涨了3倍,开发团队拼命赶进度,却苦了测试团队。原本测试团队就人少压力大,现在需求涨了,测试人员却没增加,测试主管带着几个同事找到老板,说再这样下去真是干不了了。

没有测试可还行?这可急坏了老板,临时招人也来不及。他喊我过去商量,看有没有办法解决。老板的意思是希望我能够去带一带测试团队,给大家缓解下压力。但是吧,加上我一个人也解决不了什么问题呀,这可怎么办?

经过分析,我们发现测试的压力来自2个方面:一方面是要上线的项目集中爆发;另一方面是开发在赶进度,交付质量有所降低,再加上微服务架构下项目单元变多,测试的工作量也成倍增长。得想个办法从根本上解决这些问题。

琢磨了一个晚上,我给老板提交了一份方案:把原先写的测试用例注册到华为云一站式云端测试平台——云测(CloudTest)上,使用云测API进行测试用例管理、接口测试等,提高测试效率,保障项目高质量支付。

使用华为云云测API也比较容易,具体步骤如下。

一、TestHub服务操作

TestHub服务操作包括:新测试类型服务注册到云测、用户获取自己当前已经注册的服务。

1、确定调用API鉴权时使用的Token,获取响应Header参数中X-Subject-Token对应的值。

2、确定Testhub服务名称及用户服务域名并注册。

接口相关信息:URL格式-POST /v1/services

请求示例:发送一条POST请求。

POST: https://{endpoint}/v1/services

{
"service_name" : "这是一个测试类型名称",
"server_host" : "https://xxx.xxx.xxx"
}

响应示例

{
"service_name" : "这是一个测试类型名称",
"service_id" : 13
}

3、确定Testhub服务已被注册成功。

接口相关信息:URL格式- GET /v1/services

请求示例:发送一条GET请求。

GET:https://{endpoint}/v1/services

响应示例:获取到返回的注册信息即证明用户已注册成功。

{
"services" : [ {
"id" : 13,
"name" : "这是一个测试类型名称"
} ]
}

二、用例操作

用例操作包括:创建测试用例、更新测试用例、获取测试用例详情、批量执行用例接口、批量更新测试用例结果。

1、确定调用API鉴权时使用的Token,获取响应Header参数中X-Subject-Token对应的值。

2、创建新的测试用例。

接口相关信息:URL格式-POST /v1/projects/{project_id}/testcases

请求示例:发送一条POST请求。

POST: https://{endpoint}/v1/projects/{project_id}/testcases

{
"name" : "testcaseXXX",
"service_id" : 13,
"rank_id" : "2",
"testcase_number" : "1234",
"extend_info" : {
"description" : "这是一条描述信息",
"preparation" : "这是一条前置条件xxxxxx",
"steps" : [ {
"expect_result" : "<ol class=\"ordered\"><li class=\"ordered\"><span>结果一</span></li><li class=\"ordered\"><span>结果二</span></li></ol><p><br /></p>",
"test_step" : "<p>步骤一</p>"
} ],
"label_list" : [ "标签一", "标签二" ],
"module_id" : "b66aab5469cc4ab39b0dda8e644a42a4",
"test_version_id" : "8.1.2",
"fix_version_id" : "8.2.0.1",
"assigned_id" : "b66aab5469cc4ab39b0dda8e644a42a4",
"issue_id" : "b66aab5469cc4ab39b0dda8e644a42a4"
}
}

响应示例

{
"testcase_id" : "efdb403066474ab08836b9eeaaa23bca",
"project_id" : "aswe4w5ty4032344tgse345eeaaa23bc",
"service_id" : 13,
"name" : "这是一个测试计划名称",
"testcase_number" : "1234",
"rank_id" : "2",
"status_id" : "0",
"assigned_user" : {
"id" : "efdb403066474ab08836b9eeaaa23bca",
"name" : "name_xxxxxx"
},
"execute_count" : 3,
"result_id" : "0",
"extend_info" : {
"author" : {
"id" : "efdb403066474ab08836b9eeaaa23bca",
"name" : "name_xxxxxx",
"time" : "2020-06-09 16:55:57"
},
"updator" : {
"id" : "efdb403066474ab08836b9eeaaa23bca",
"name" : "name_xxxxxx",
"time" : "2020-06-09 16:55:57"
},
"domain" : {
"id" : "efdb403066474ab08836b9eeaaa23bca",
"name" : "name_xxxxxx"
},
"description" : "这是一条描述信息",
"preparation" : "这是一条前置条件xxxxxx ",
"steps" : [ {
"expect_result" : "<ol class=\"ordered\"><li class=\"ordered\"><span>结果一</span></li><li class=\"ordered\"><span>结果二</span></li></ol><p><br /></p>",
"test_step" : "<p>步骤一</p>"
} ],
"label_list" : [ {
"id" : "efdb403066474ab08836b9eeaaa23bca",
"name" : "name_xxxxxx"
} ],
"defect_list" : [ {
"id" : "efdb403066474ab08836b9eeaaa23bca",
"name" : "name_xxxxxx"
} ],
"module" : {
"id" : "efdb403066474ab08836b9eeaaa23bca",
"name" : "name_xxxxxx"
},
"issue" : {
"id" : "efdb403066474ab08836b9eeaaa23bca",
"name" : "name_xxxxxx"
},
"test_version_id" : "string",
"fixed_version" : {
"id" : "efdb403066474ab08836b9eeaaa23bca",
"name" : "name_xxxxxx"
}
}
}

3、确定用例创建成功且无需修改后,可执行用例并更新用例结果。

接口相关信息:URL格式-POST /v1/projects/{project_id}/testcases/execution

请求示例:发送一条POST请求。

POST: https://{endpoint}/v1/projects/{project_id}/testcases/execution

{
"service_id": 13,
"plan_id": "b66aab5469cc4ab39b0dda8e644a42a4",
"execute_list": [
{
"testcase_id": "b66aab5469cc4ab39b0dda8e644a42a4",
"execute_id": "efdb403066474ab08836b9eeaaa23bca",
"result_id": "0",
"start_time": 2020-06-2218: 11: 54
}
]
}

响应示例

{
"error_code" : "CLOUDTEST.000XXXXXX",
"error_msg" : "失败原因XXXXX",
"error_detail" : {
"failed" : [ {
"error_code" : "CLOUDTEST.000XXXXXX",
"error_msg" : "失败原因XXXXX",
"testcase_id" : "efdb403066474ab08836b9eeaaa23bca"
} , {
"error_code" : "CLOUDTEST.000XXXXXX",
"error_msg" : "失败原因XXXXX",
"testcase_id" : "251fca07b22f493692eb06b1754f07a8"
}]
}
}

4、等待用例脚本执行完毕后,需要调用接口将执行结果通过接口返回到Testhub服务同步数据。

接口相关信息:URL格式-POST /v1/projects/{project_id}/testcases/result

请求示例:发送一条POST请求。

POST:https://{endpoint}/v1/projects/{project_id}/testcases/result

{
"service_id": 13,
"execute_list": [
{
"testcase_id": "b66aab5469cc4ab39b0dda8e644a42a4",
"execute_id": "efdb403066474ab08836b9eeaaa23bca",
"result_id": "0",
"end_time": 2020-06-23 18: 11: 54,
"duration": 120,
"description": "这是一条备注信息"
}
]
}

响应示例

{
"error_code" : "CLOUDTEST.000XXXXXX",
"error_msg" : "失败原因XXXXX",
"error_detail" : {
"failed" : [ {
"error_code" : "CLOUDTEST.000XXXXXX",
"error_msg" : "失败原因XXXXX",
"testcase_id" : "efdb403066474ab08836b9eeaaa23bca"
} , {
"error_code" : "CLOUDTEST.000XXXXXX",
"error_msg" : "失败原因XXXXX",
"testcase_id" : "251fca07b22f493692eb06b1754f07a8"
}]
}
}

通过云测平台,测试效率、交付质量都得到了提升,测试团队再也没人提离职了。

了解更多华为云API信息:“免费下载创新加速利器《华为云API精选手册》

——活动推荐——

华为云已经成为全球主要云服务供应商,在华为云上开放了2400+ API,包括计算、存储、网络、应用服务、软件开发服务、视频、数据库、EI智能等74+产品,如何利用这些丰富强大的API快速开发自己的应用和服务,成为大家关注的热点。

华为云API学习赛,为入门初学者量身定制的学习平台,以赛带学,学以致用。无需代码,只需下载体验模板,按操作文档操作即可完成作品。参赛、邀请都有丰富奖品,还有机会拿P40 5G手机超级激励!!

API入门学习赛·AI人脸识别

API入门学习赛·探险寻宝之旅

点击关注,第一时间了解华为云新鲜技术~

【API进阶之路】研发需求突增3倍,测试团队集体闹离职的更多相关文章

  1. 【API进阶之路】API带来的微创新,打动投资人鼓励我创业

    摘要:怎么帮助创作者提高视频的推荐量呢?我发现了:视频的封面图非常重要. 上回说到,老板一拍脑门,交代了一个新项目:小成本开发一款短视频剪辑工具([<[API进阶之路]人少钱少需求多的新项目该怎 ...

  2. 【API进阶之路】高考要考口语?我用多模态评测API做了一场10w+刷屏活动

    摘要:闲着没事用多模态评测API做了一个测评英语口语的互动小游戏,居然成了一场10万人参与的刷屏级活动. 上一期故事说到,我成为了公司技术委员会副主席,上任后的第一件事是建立了一个云容器化的研发资料库 ...

  3. 【API进阶之路】破圈,用一个API代替10人内容团队

    摘要:我用一个API代替10人内容团队,一年帮老板省了一百万. 自从学习API以后,我用技术手段相继帮助业务部.市场部解决了不少难题,算是从纯研发破圈发展到了业务端.老板召开业务讨论会的时候也会带上我 ...

  4. 【API进阶之路6】一个技术盲点,差点让整个项目翻车

    上次教了实习生一个方案之后,这小子跟运营妹子的关系是越走越近,时不时地撒把狗粮,在我司真正实现了研发运营一家亲~(上回你没看?戳上文剧情回顾:万万没想到,一个技术方案帮实习生追到了运营妹子) 这回想跟 ...

  5. 【API进阶之路】无法想象!大龄码农的硬盘里有这么多宝藏

    摘要:通过把所需建立的工具库做成云容器化应用,用CCE引擎,通过API网关调用云容器引擎中的容器应用.不仅顺应了云原生的发展趋势,还能随时弹性扩容,满足公司规模化发展的需求. 公司开完年中会后,大家的 ...

  6. 【API进阶之路】用API打造一条自动化内容生产流水线

    摘要:搞定了内容审核之后,我又把抓取工具.内容审核API.文本摘要生成API串联在一起,从抓到审再到编,建立了一条自动化的内容生产流水线,编辑团队只需要做优质内容的推荐就可以了. 上周,运营部将官网上 ...

  7. 【API进阶之路】老板给我涨薪30%!如何通过SDK接口搞定千万级流量直播

    摘要:看我如何通过API Explorer 的SDK接口搞定千万级流量直播. 最近几个月,我的变化其实还蛮大的,从一个被实习生“无视”的“前浪”,转变成了不仅能够解决技术问题还能解决业务问题(顺手还能 ...

  8. 【API进阶之路】帮公司省下20万调研费!如何巧用情感分析API实现用户偏好调研

    摘要:自从学习API后,仿佛解锁了新技能,可别小看了一个小小的API接口,用好了都是能力无穷.这不,用情感分析API来做用户偏好调研,没想到这么一个小创意给公司省了20万调研费用. 上次借着高考热点整 ...

  9. 【API进阶之路】逆袭!用关键词抽取API搞定用户需求洞察

    摘要: 老大说,我这份用关键词抽取API搞定的用户需求洞察报告,简直比比市场调研的科班人士做得还好. 最近这半个月的午饭,那可是相当不错,市场老大天天请吃饭,不是外面下馆子,就是从家带饺子.说是感谢我 ...

随机推荐

  1. 【知识分享】Navicat Premium for Mac的破解教程

    转自Navicat Premium for Mac v12.0.22.0 破解教程,macOS上手动破解,无需补丁,无毒下载了Navicat,没有注册码,突然发现了这篇破解教程,竟爱不释手,顾Copy ...

  2. 基础篇:详解JAVA对象实例化过程

    目录 1 对象的实例化过程 2 类的加载过程 3 触发类加载的条件 4 对象的实例化过程 5 类加载器和双亲委派规则,如何打破双亲委派规则 欢迎指正文中错误 关注公众号,一起交流 参考文章 1 对象的 ...

  3. 使用koa-log4管理nodeJs日志笔记

    前言 对于后端程序应用来说,日志是必不可少的,在nodeJs当中并没有自带的日志模块.最近正好使用koa框架来做后端服务,需要对日志进行分割处理,特记录下分享给大家. 一.后端代码目录结构 ├── b ...

  4. 理解RESTful:理论与最佳实践

    什么是 REST 什么是 RESTful Richardson 成熟度模型 RESTful API 设计最佳实践 补充:HTTP 状态码及说明 什么是 REST REST 一词,是由 HTTP 协议的 ...

  5. CISCO交换机STP实验(生成树协议)

    目录 一.前言:生成树协议(STP) 二.CISCO交换机STP命令汇总 三.运用STP搭建简单拓扑 四.实战:STP综合实验 五.结语 一.前言:生成树协议(STP) 计算机网络中,我们为了减少网络 ...

  6. Java知识系统回顾整理01基础03变量05变量命名规则

    一.命名规则 变量命名只能使用字母 .数字. $. _ 变量第一个字符 只能使用: 字母. $. _ 变量第一个字符 不能使用数字 注:_ 是下划线,不是-减号或者-- 破折号 int a= 5; i ...

  7. 基于Intel x86 Android的RAD游戏开发

    zip文件还包含编译的"MonkeyGame-debug".可以在模拟器中运行的二进制文件.在"game.build"文件夹中有一个HTML5 build.在C ...

  8. linux的pci驱动模型

    做个笔记 linux通过pcibios_scan_root函数以深度优先的算法搜索整个pci架构,建立一个树形的链表,如下: 之后再调用pci_bus_add_devices函数把所有搜索到的pci_ ...

  9. 多测师讲解 _接口自动化框架设计_高级讲师肖sir

    背景:因为把传入接口参数.组建测试用例.执行测试用例和发送报告,都放入一个.py文件对于接口的使用非常不灵活就需要数据和接口业务进行分离让代码之间的 耦合性降低.和实现接口的分层管理,所以需要对代码进 ...

  10. linux centos 04

    1.python的虚拟环境 1.将当前机器上的解释器作为一个 本地,复制出的很多歌 虚拟解释器 物理机上的 本体解释器 ,什么事也不做 分身1:  解释器1:虚拟环境1     运行django  1 ...