• 关于DevCloud云端测试实训课中作业里面发送请求的url根本无法访问!!!!
    《7天玩转性能&接口测试实战营》及实操中的作业里面提供的url都无法访问不知道按照习题操作步骤一步步做下来的截图算不算通过呢?习题提供的url:结果可想而知:连ping地址都ping不通!不知道这算不算对
  • [经验交流] 网络传输的细聊
    首先我们来看一个例子:网络服务器向客户端传送数据的过程。下图显示了一个网络服务器向客户端传送数据的完整过程:需要传送的数据是网络服务器的 HTML 页面。应用协议 HTTP 报文头添加到 HTML 数据之前,报文头信息包括:服务器所使用的 HTTP 版本,以及表明它包含发给网络客户端信息的状态编码。HTTP 应用层协议将 HTML 格式的网页数据发送给传输层。TCP 传输层用于管理网络服务器和客户端之间的会话。IP 信息添加到 TCP 信息之前,IP 指定适当的源和目的 IP 地址,这些信息就构成了 IP 报文。以太网协议添加到 IP 报文的两端之后,就形成了数据链路帧,上述帧发送至通向网络客户端的路径上的最近的一个路由器。路由器移除以太网信息,观察 IP 报文,判定最佳路径,将报文插入一个新的帧,并发送至目标路径上下一个相邻路由器,每个路由器在转发之前都移除并添加新的数据链路层信息。客户端接收到包含数据的数据链路帧,处理各层协议头,之后以添加时相反的顺序移除协议头。首先处理并移除以太网信息,之后是 IP 协议信息,接下来是 TCP 信息,最后是 HTTP 信息。数据通过互联网网络传输,互联网网络包含媒介和中间设备。之后,将网页信息传递给客户端网页浏览器软件。数据封装消息要在网络中传输,必须对它进行编码,以特定的格式进行封装,同时需要适当地封装以足够的控制和地址信息,以使它能够从发送方移动到接收方。消息大小理论上,视频或邮件信息是能够以大块非中断型流从网络源地址传送到目的地址,但这也意味着同一时刻同一网络其他设备就无法收发消息。这种大型数据流会造成显著延时。并且,如果传输过程中连接断开,整个数据流就会丢失需要全部重传。因此更好的方法是将数据流分割(segmentation)为较小的,便于管理的片段,能够带来两点好处:发送较小片段,网络上同时可有多个会话交错进行。这种网络上将不同会话片段交错进行的过程称为多路传输(multiplexing)。分割可以提高网络通讯的可靠性。各消息片段从源地址到目的地址无需经过相同的路径,如果一条路径被堵塞或断开,其余消息可以从替换路径到达目的地址。如果部分消息到不了目的地址,那只需要重传丢失的部分即可。通过对片段打上标签的方式来保证顺序以及在接收时进行重组。协议数据单元(Protocol Data Unit,PDU)应用层数据在传输过程中沿着协议栈传递,每一层协议都会向其中添加信息。这就是封装的过程。数据片段在各层网络结构中采用的形式就称为协议数据单元(PDU)。封装过程中,下一层对从上一层收到的 PDU 进行封装。在处理的每一个阶段 PDU 都有不同的名字来反应它的功能。PDU 按照 TCP/IP 协议的命名规范:数据(Data):应用层 PDU 的常用术语分段(Segment):传输层 PDU帧(Frame):网络层 PDU比特(Bits):在介质上物理传输数据所使用的 PDU封装封装是指指传输之前为数据添加额外的协议头信息的过程。在绝大多数数据通信过程中,源数据在传输前都会封装数层协议。在网络上发送消息时,主机上的协议栈从上至下进行操作。以网络服务器为例,HTTP 应用层协议发送 HTML 格式网页数据到传输层,应用层数据被分成 TCP 分段。各 TCP 分段被打上标签,称为头(header),表明接收方哪一个进程应当接收此消息。同时也包含使得接收方能够按照原有的格式来重组数据的信息。传输层将网页 HTML 数据封装成分段并发送至网络层,执行 IP 层协议。整个 TCP 分段封装成 IP 报文,也就是再加上 IP 头标签。IP 头包括源和目的地址,以及发送报文到目的地址所必须的信息。之后,IP 报文发送到接入层,封装以帧头和帧尾。每个帧头都包含源和目的物理地址。物理地址唯一指定来本地网络上的设备。帧尾包含差错校正信息。最后,由服务器网卡将比特编码传输给介质。解封装接收主机以相反的方式进行操作称为解封装。解封装是接收设备移除一层或多层协议头的过程。数据在协议栈中向上移动直到终端应用层伴随着解封装。访问本地资源访问本地网路资源需要两种类型的地址:网络层地址和数据链路层地址。网络层和数据链路层负责将数据从发送设备传输到接收设备。两层协议都有源和目的地址,但两种地址的目的不同。如下图所示例子,客户端 PC1 和 FTP 在同一个 IP 网络中的通信示意图网络地址网络层地址或 IP 地址包含两个部分:网络前缀和主机。路由器使用网络前缀部分将报文转发给适当的网络。最后一个路由器使用主机部分将报文发送给目标设备。同一本地网络中,网络前缀部分是相同的,只有主机设备地址部分不同。源 IP 地址:发送设备,即客户端 PC1 的 IP 地址 → 192.168.1.110目的 IP 地址:接收设备,即 FTP 服务器 → 192.68.1.9数据链路地址数据链路地址的目的是在同一网络中将数据链路帧从一个网络接口发送至另一个网络接口。以太网 LAN 和无线网 LAN 是两种不同物理介质的网络示例,分别有自己的数据链路协议。当 IP 报文的发送方和接收方在同一网络,数据链路帧直接发送到接收设备。以太网上数据链路地址就是以太网 MAC 地址。MAC 地址是物理植入网卡的48比特地址。源 MAC 地址:发送 IP 报文的 PC1 以太网卡 MAC 地址,AA-AA-AA-AA-AA-AA。目的 MAC 地址:当发送设备与接收设备位于同一网路,即为接收设备的数据链路地址。本例中,FTP MAC 地址为,CC-CC-CC-CC-CC-CC。源和目的 MAC 地址添加到以太网帧中。MAC 与 IP 地址发送方必须知道接收方的物理和逻辑地址。发送方主机能够以多种方式学习到接收方的 IP 地址:比如域名系统(DNS),或通过应用手动输入,如用户指定 FTP 地址。以太网 MAC 地址是怎么识别的呢?发送方主机使用地址解析协议(Address Resolution Protocol,ARP)以检测本地网路的所有 MAC 地址。如下图所示,发送主机在整个 LAN 发送 ARP 请求消息,这是一条广播消息。ARP 请求包含目标设备的 IP 地址,LAN 上的每一个设备都会检查该 ARP 请求,看看是否包含它自身的 IP 地址。只有符合该 IP 地址的设备才会发送 ARP 响应。ARP 响应包含 ARP 请求中 IP 地址相对应的 MAC 地址。访问远程资源默认网关当主机发送消息到远端网络,必须使用路由器,也称为默认网关。默认网关就是位于发送主机同一网络上的路由器的接口 IP 地址。有一点很重要:本地网络上的所有主机都能够配置主机的默认网关地址。如果该主机的 TCP/IP 设置中没有配置默认网关地址,或指定了错误的默认网关地址,则远端网络消息无法被送达。如下图所示,LAN 上的主机 PC1 使用 IP 地址为 192.168.1.1 的 R1 作为默认网关,如果 PDU 的目的地址位于另外一个网络,则主机将 PDU 发送至路由器上的默认网关。与远端网络设备通讯下图显示了客户端主机 PC1 与远端 IP 网络服务器进行通讯的网络层地址与数据链路层地址:网络地址当报文的发送方与接收方位于不同网络,源和目的 IP 地址将会代表不同的网络上的主机。源 IP 地址:发送设备即客户端主机 PC1 的 IP 地址 → 192.168.1.110。目的 IP 地址:接收设备即网络服务器的 IP 地址 → 172.16.1.99。数据链路地址当报文的发送方与接收方位于不同网络,以太网数据链路帧无法直接被发送到目的主机。以太网帧必须先发送给路由器或默认网关。本例中,默认网关是 R1,R1 的接口 IP 地址与 PC1 属于同一网络,因此 PC1 能够直达路由器。源 MAC 地址:发送设备即 PC1 的 MAC 地址,PC1 的以太网接口 MAC 地址为 AA-AA-AA-AA-AA-AA。目的 MAC 地址:当报文发送方与接收方位于不同网络,这一值为路由器或默认网关的以太网 MAC 地址。本地中,即 R1 的以太网接口 MAC 地址 11-11-11-11-11-11。IP 报文封装成的以太网帧先被传输至 R1,R1 再转发给目的地址即网络服务器。R1 可以转发给另外一个路由器,如果目的服务器所在网路连接至 R1,则直接发送给服务器。发送设备如何确定路由器的 MAC 地址?每一个设备通过自己的 TCP/IP 设置中的默认网关地址得知路由器的 IP 地址。之后,它通过 ARP 来得知默认网关的 MAC 地址,该 MAC 地址随后添加到帧中去。
  • [热门活动] 已结束【答题赢京东卡等大礼】华为云DevCloud云测赋能培训 | 0代码门槛完成自动化测试脚本实践
    圣诞快乐 中奖名单公布 请获奖者填写领奖信息>>https://devcloud.huaweicloud.com/expert/open-assessment/qtn?id=d7322fc329f5499380fba33ca93b72f4&utm_source=yunce(发放奖品以获奖名单中的华为云账号为准,请用获奖华为云账号登录本问卷,确保信息一致。)注:领奖信息收集截止至12月31日8点,超过时间未填写将视为弃奖。奖品将于元旦后发放。—— 活动结束 ——活动时间:12月9日-23日活动规则:在活动时间内,结合给定试题,按照操作指导完成答题,并将“有效的答题截图+华为云账号”回复到本帖留言区,华为云技术专家对提交的截图进行检验,如通过则回复“答题通过”,获得“答题通过”回复的即为有效答题回帖用户,可参与抽奖。(下文附操作指导及有效答题截图示例,请认真查看,按照指导进行操作即可完成,so easy~)抽奖规则:12月25日主办方用有效答题回帖用户提供的华为云账号进行抽奖,中奖概率为有效答题回帖人数的40%,且总中奖名额不超过60人。中奖名单将在论坛公布。注意:l   每个用户可重复提交回帖,但只享有一次抽奖机会,不可重复获奖。每个论坛用户对应回帖中提交的华为云账号统一,且与截图中的保持一致,否则视为无效。 l   有效答题回帖指截图是按照示例要求上传的、且通过华为云技术专家检验合格回复“答题通过”的回帖。需要上传2张图片:一张是显示“成功”的操作结果,一张是附带华为云账号的执行页面(示例见版主留言回帖),l   操作过程中有疑问也可在留言区提问交流,提问帖和交流帖不参与抽奖。 —— 奖品包括——HUAWEI Sound 智能音箱(帝瓦雷四喇叭 40W低音炮)(1个,当获奖人数≥20人时发放)、荣耀xSport运动蓝牙耳机、100元京东卡、50元京东卡、荣耀体脂称2、AM115半入式耳机,以上奖品随机发放(每样奖品的数量将按照实际参与抽奖人数进行分配,具体以实际发放为准),颜色不可选。(往下看操作指导还有大奖彩蛋~)抽奖时间:12月25日,中奖名单及兑奖地址将在论坛公布,请收藏本帖以免错过哦~奖品将于活动结束后7-30天内发放。 (以上奖品图片供参考,具体以实际发放为准) 彩蛋1:观看直播《HCIP职业认证专场——DevOps持续测试与反馈》还可以获得直播抽奖>>https://bbs.huaweicloud.com/live/DevRun_live/202012162000.html—— 试题:订单系统接口测试自动化实操 —— 本实例是为了测试一个订单系统微服务的登录API接口,类似:您打开XX网站,输入用户名和密码,然后后台服务如何能知道您的用户名和密码是正确的,那么通过本实例您就很容易的了解了后台的登录API接口是如何工作的,写一个简单的接口测试用例其实很简单。 —— 操作指导 ——前期准备1、  完成账号实名认证>>点击实名认证链接:https://account.huaweicloud.com/usercenter/?region=cn-north-1&locale=zh-cn#/accountindex/realNameAuthing 2、 开通DevCloud基础版打开https://devcloud.huaweicloud.com/cloudtest/home,登录自己的华为云账号或者注册一个华为云账号,选择切换地域;按照弹窗提示开通DevCloud基础版(免费,不需要选择支付方式,直接按照步骤点击即可完成开通)彩蛋2!!!开通后截图返回这里,还有很多机会得HUAWEI MatePad大奖哦>>https://bbs.huaweicloud.com/forum/thread-90536-1-1.html一、新建测试项目1、刷新页面或进入https://devcloud.huaweicloud.com/cloudtest/home,新建一个scrum项目,项目名称自己定义。2、新建接口测试用例新建后点击“测试设计->接口测试->新建”,新建一个接口测试用例,输入用例名称后,点击“保存并编写脚本”。 二、设置环境参数设置hostIP,由于IP和端口涉及敏感参数,所以选择加密。hostIP地址是:114.115.173.182:84431、点击按钮弹出环境参数页面2、录入参数名:hostIP;值:114.115.173.182:8443如果需要加密,勾选【敏感参数】;不需要加密,则无需勾选。三、录入URL,登录系统1、录入URL和请求体请求信息设置,点击URL请求设置请求方法。点击请求方法下拉列表,将GET改成POST;设置请求协议,点击网络协议下拉列表,将https://改成http://;填写URL。输入入登录接口的URL:$${hostIP}/cloudtest-demo/v1/login,IP和端口使用已定义的环境参数代替;设置请求参体:点击【+JSON请求体】按钮,录入请求体:{   "name":"张三"   “pwd”:"123456" }2、录入检查点点击“检查点”,选择响应码,目标值为200。点击保存。3、点击调试检查结果点击调试按钮,检查响应是否符合预期,符合条件则用例执行成功,不符合条件则用例执行失败。显示成功,及表示后台测试验证通过,账户登录成功。操作完成。四、需要上传的截图包括(示例)图一,点击“结果记录”,找到位置。展示自己的用例执行的结果记录以及对应的日志,获取调试成功的截图。(需要返回的答题截图1)图二,刷新页面,选择“测试执行”,找到页面。展示自己的接口用例名称以及自己的用例执行结果(此截图将附带操作者的华为云账号,证明本人操作)(需要返回的答题截图2) *活动解释权归主办方所有。补充说明a)      本活动需要用户按照要求完成操作,同一电话号码注册的账号(包括兑奖时提供的电话号码相同者)视为同一个用户,使用非正常途径或手段(如写脚本刷接口等方式)获得的奖励无效,且一旦发现作弊行为,华为云开发者社区将取消对应人员的获奖资格、冻结违规账号,已兑换的礼品也不予发放。b)      中奖名单已本帖公布,请获奖者填写领奖信息>>https://devcloud.huaweicloud.com/expert/open-assessment/qtn?id=d7322fc329f5499380fba33ca93b72f4&utm_source=yunce(发放奖品以获奖名单中的华为云账号为准,请用获奖华为云账号登录本问卷,确保信息一致。)注:领奖信息收集截止至12月31日8点,超过时间未填写将视为弃奖。奖品将于元旦后发放。抽奖截图
  • [技术干货] 【转载】【API进阶之路】研发需求突增3倍,测试团队集体闹离职
     摘要:最近研发的需求量涨了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精选手册》
  • [体验官] 沙箱实验室之基于CloudTest对云端应用进行性能测试体验
    实验室最新活动要求的五个实验之一:基于CloudTest对云端应用进行性能测试以前做过,轻车熟路。这里有个小窍门,左边实验手册上的找各种资源的时候,如果有英文简写(一般都有的,如ECS,CCE,CPT等),可以直接在任务列表后面的搜索框直接敲,快一点。这里是使用云性能测试服务之前需要进行的授权,这里就好玩了!看到那个红色的“同意授权”按钮了么?要想让它呈现出来,总共需要三步:1,把手册关上2,右上角实验桌面全屏3,firefox最下面的提示条叉掉哈哈哈,无用的知识又增加了。启动测试任务需要购买CCE服务,买它,9块钱。买好后回到执行页面,因为CCE拉起需要时间,这里要等大概1分钟左右,再执行。总共也没用30分钟,很顺利。
  • [技术干货] 【API进阶之路】研发需求突增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>结果一<li class=\"ordered\"><span>结果二<br />",       "test_step" : "步骤一"     } ],     "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>结果一<li class=\"ordered\"><span>结果二<br />",       "test_step" : "步骤一"     } ],     "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精选手册》【拓展阅读】【API进阶之路】因为不会创建云服务器,我被实习生摆了一道【API进阶之路】前浪的绝地反击与自我证明【API进阶之路】甩锅大会上,我是如何绝地求生的【API进阶之路】一个技术预案,让老板当场喊出了“奥利给”【API进阶之路】万万没想到,一个技术方案帮实习生追到了运营妹子!【API进阶之路】一个技术盲点,差点让整个项目翻车【API进阶之路】老板给我涨薪30%!如何通过SDK接口搞定千万级流量直播【API进阶之路】半天搞定百万条手机号归属地查询,竟影响了公司战略方向!【API进阶之路】无法想象!大龄码农的硬盘里有这么多宝藏【API进阶之路】高考要考口语?一场10w+刷屏活动是如何用多模态评测API做出来的【API进阶之路】帮公司省下20万调研费!如何巧用情感分析API实现用户偏好调研【API进阶之路】逆袭!用关键词抽取API搞定用户需求洞察【API进阶之路】破圈,用一个API代替10人内容团队【API进阶之路】用API打造一条自动化内容生产流水线【API进阶之路】没有AI工程师也能做OCR文字识别【API进阶之路】太秃然了,老板要我一周内检测并导入一万个小时的视频【API进阶之路】干掉PPT!现场编码的职级晋升答辩你参加过么?——活动推荐——华为云已经成为全球主要云服务供应商,在华为云上开放了2400+ API,包括计算、存储、网络、应用服务、软件开发服务、视频、数据库、EI智能等74+产品,如何利用这些丰富强大的API快速开发自己的应用和服务,成为大家关注的热点。华为云API学习赛,为入门初学者量身定制的学习平台,以赛带学,学以致用。无需代码,只需下载体验模板,按操作文档操作即可完成作品。参赛、邀请都有丰富奖品,还有机会拿P40 5G手机超级激励!!识别下图二维码即可报名参加。API入门学习赛·AI人脸识别报名地址奖项设置API入门学习赛·探险寻宝之旅报名地址奖项设置
  • 【API进阶之路】研发需求突增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精选手册》【拓展阅读】【API进阶之路】因为不会创建云服务器,我被实习生摆了一道【API进阶之路】前浪的绝地反击与自我证明【API进阶之路】甩锅大会上,我是如何绝地求生的【API进阶之路】一个技术预案,让老板当场喊出了“奥利给”【API进阶之路】万万没想到,一个技术方案帮实习生追到了运营妹子!【API进阶之路】一个技术盲点,差点让整个项目翻车【API进阶之路】老板给我涨薪30%!如何通过SDK接口搞定千万级流量直播【API进阶之路】半天搞定百万条手机号归属地查询,竟影响了公司战略方向!【API进阶之路】无法想象!大龄码农的硬盘里有这么多宝藏【API进阶之路】高考要考口语?一场10w+刷屏活动是如何用多模态评测API做出来的【API进阶之路】帮公司省下20万调研费!如何巧用情感分析API实现用户偏好调研【API进阶之路】逆袭!用关键词抽取API搞定用户需求洞察【API进阶之路】破圈,用一个API代替10人内容团队【API进阶之路】用API打造一条自动化内容生产流水线【API进阶之路】没有AI工程师也能做OCR文字识别【API进阶之路】太秃然了,老板要我一周内检测并导入一万个小时的视频【API进阶之路】干掉PPT!现场编码的职级晋升答辩你参加过么?——活动推荐——华为云已经成为全球主要云服务供应商,在华为云上开放了2400+ API,包括计算、存储、网络、应用服务、软件开发服务、视频、数据库、EI智能等74+产品,如何利用这些丰富强大的API快速开发自己的应用和服务,成为大家关注的热点。华为云API学习赛,为入门初学者量身定制的学习平台,以赛带学,学以致用。无需代码,只需下载体验模板,按操作文档操作即可完成作品。参赛、邀请都有丰富奖品,还有机会拿P40 5G手机超级激励!!识别下图二维码即可报名参加。API入门学习赛·AI人脸识别报名地址奖项设置API入门学习赛·探险寻宝之旅报名地址奖项设置
  • [产品体验官] 体验官有奖体验第34期 |华为云云测-Mock中心服务体验及评测 by云宝
    此处省略
  • [产品体验官] 华为云云测-Mock中心服务体验及评测_Smirk
    挺好
  • [活动分享] 体验官有奖体验第34期 |华为云云测-Mock中心服务体验及评测 by luobosir
    华为云账号:luobosir微信群昵称:华为水行者
  • [活动分享] 体验官有奖体验第34期 |华为云云测-Mock中心服务体验及评测 by PU_AIUI
    用户名:PU_AIUI详情见附件内容。
  • [活动分享] 华为云云测-Mock中心服务体验及评测—by铺路能手
    此处省略,详见附件。。。。
  • [产品体验官] 体验官有奖体验第34期 |华为云云测-Mock中心服务体验及评测 by Mike Cao
    账号: vipmike007群内名称: Mike Cao(1)使用体验: 感觉API Mock 是一个非常强大的产品,非常适用于集成测试的时候某个api没有完全实现去做fake API然后进行测试,但是感觉Mock API 藏得太深了,不太容易找到(2)需求建议:         A.只要是有API相关经验的,会非常容易上手,API Mock服务使用帮助很差,找了半天也找不到API Mock入口,关于调用API 钱获得token遇到postman/Huawei bug ;         B.对于产品性能很好,操作便捷性不错,可视化界面感觉不太好;         C.你觉得哪一模块可以使用其他更优的方案替代;             暂无  .      D.使用过程中有哪些不好的体验就是感觉遇到的问题             1.获取token遇到问题。没有加到已知问题列表里面会比较耽误时间             2.另外添加接口信息的时候不能同时添加规则;             3.目前看不能通过key的方式去永久调用api,只能获得24小时的token,这个设计不方便做自动化             4.Mock API入口太深不容易好到,不过经常用的话mark 到常用地址也还好             5. API 支持导入不支持导出(3) 满意度及推荐度:当有Mock一个微服务的场景时,您是否愿意推荐API Mock服务?理由是?            比较愿意推荐,功能上非常强大,性能上也很不错 见详细附件
  • [产品体验官] 体验官有奖体验第34期 |华为云云测-Mock中心服务体验及评测 by RabbitCloud
    华为云账号:RabbitCloud    微信群昵称:云之山
  • [产品体验官] 华为云云测-Mock中心服务体验及评测 by fjqsun
    华为云云测-Mock中心服务体验及评测 by fjqsun详情见附件内容。
总条数:92 到第
上滑加载中