摘要:最近研发的需求量涨了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. 部署Go语言程序的N种方式

    部署Go语言项目 本文以部署 Go Web 程序为例,介绍了在 CentOS7 服务器上部署 Go 语言程序的若干方法. 独立部署 Go 语言支持跨平台交叉编译,也就是说我们可以在 Windows 或 ...

  2. js实现表单验证

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  3. Shiro性能优化:解决Session频繁读写问题

    目录 背景 应对思路 本地缓存 Session 避免不必要的 Session 更新 代码实现 ShiroSessionDAO.java ShiroConfig.java 背景 Shiro 提供了强大的 ...

  4. O、Θ、Ω&主定理

    1.这些是时间复杂度的.(e.g. O(n).Θ(n).Ω(n)) 主要为主定理(坏东西) 2.本质 O <= Θ = Ω >= 3.(你可以把他们都试一遍)主要用处(目前,2020-09 ...

  5. vue学习02-v-text

    vue学习02-v-text 引入环境版本,cdn网络引用或者本地js应用 html的结构,一般是div 创建vue实例 el:挂载点 v-text指令的作用是设置标签的内容 默认写法会替换全部内容, ...

  6. Spring事务管理(编码式、配置文件方式、注解方式)

    1.事务(https://www.cnblogs.com/zhai1997/p/11710082.html) (1)事务的特性:acdi (2)事务的并发问题:丢失修改,脏读,不可重复读 (3)事务的 ...

  7. Springer editorial manager上传latex文件

    Springer的投稿系统editorial manager在初次投稿时只需要上传pdf文件,修改后要求上传Latex源文件.上传过程遇到好多问题,花了快两天才搞定,整理如下: 1. 主要上传的文件包 ...

  8. HTML中css水平居中的几种方式

    1. 子元素为行内元素时,父元素使用 text-align: center; 实现子元素的水平居中: 2. 子元素为块级元素时, 2.1. 将子元素设置 margin: 0 auto; 实现居中: 2 ...

  9. K8S环境的Jenkin性能问题处理续篇(任务Pod设置)

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos K8S环境的Jenkin性能问题处理 本文是<K ...

  10. xor 和 or 有什么区别

    参考:https://zhidao.baidu.com/question/67532331.html 1.定义区别: ①OR是或运算,A OR B的结果:当A.B中只要有一个或者两个都为1时,结果为1 ...