云测 CloudTest
云测(CloudTest)是面向软件开发者提供的一站式云端测试平台,覆盖测试管理、接口测试、性能测试,融入DevOps敏捷测试理念,帮助您高效管理测试活动,保障产品高质量交付
测试管理5用户+500M存储空间以内,接口测试30分钟内 免费体验,性能测试 免费公测中
高效
一站式云端测试平台,整合测试管理和自动化测试,高效协同,开展用例设计、测试执行、缺陷提交、生成报告,提高测试效率
双向追溯
测试需求、测试用例/套件、缺陷、测试结果数据相互关联,记录修改历史,避免漏测、误测,易追溯审计,规范测试流程
自动化测试
基于接口URL或Swagger文档快速编排接口、性能测试,分钟级输出性能报告,集成流水线,支持微服务测试、分层自动化测试
可视化
仪表盘实时统计测试进度、缺陷、测试需求覆盖率,多方位评估产品质量,保障产品高效验收
软件测试和质量管理
持续自动化测试
优势
提高反馈和发布效率
代码提交自动触发流水线执行自动化测试,及时反馈质量问题,提升版本发布效率,支持DevOps开发模式
分层自动化测试
原生支持Swagger接口描述、HTTP/HTTPS、REST风格接口,支持前后端分离和微服务架构的分层自动化测试
自动生成测试报告
集成测试管理,生成自动化测试报告,包含测试覆盖率、测试通过率等
简洁的测试任务管理
基于测试用例的任务管理,支持测试设计、测试执行、提交缺陷、回归测试、度量反馈
基于需求的测试管理
支持开发测试协同,基于需求设计用例、执行用例、度量和验收测试,提供需求、用例、缺陷的双向关联追溯
便捷的自动化测试
接口测试、性能测试原生支持Swagger接口描述、HTTP/HTTPS、REST风格接口,可视化编辑脚本,与流水线搭配支持持续自动化测试反馈
多维度质量报告
多维度版本质量报告,提供需求覆盖率、用例完成率、用例通过率和缺陷分布等实时统计数据,辅助管理决策
产品概述
更新时间: 2018-12-03 14:53
测试管理源于华为和业界先进的敏捷测试管理理念和实践。融入全生命周期追溯、团队多角色协作、敏捷测试、需求驱动测试等理念,覆盖测试需求管理、测试任务分配、测试任务执行、测试进度管理、测试覆盖率管理、测试结果管理、缺陷管理、测试报告、测试仪表盘,一站式管理手工和自动化测试,提供适合不同团队规模、流程的自定义能力,帮助多维度评估产品质量,高效管理测试活动,保障产品高质量交付。
产品功能
更新时间: 2018-12-03 14:53
测试管理功能列表如表1所示。
表1 功能列表
特性
描述
个人测试仪表盘
展示与个人日常工作相关的信息:我的测试用例、我提交的缺陷,以及统计报表等。
测试需求关联
基于产品需求的测试验收,测试用例设计、测试用例执行关联产品需求,清晰看到产品需求测试情况与质量验收结果。
测试用例分配
测试用例准确快速分配到测试人员,通过测试报告把控测试进度。
测试用例设计
手工测试和自动化测试用例统一设计,支持用例分级、前置条件、操作步骤、预期结果等,引导完成测试用例设计。
测试套件设计
基于测试用例组装手工或接口测试套件、性能测试套件。
测试用例执行
执行手工测试用例,设置步骤实际结果、创建结果、用例结果、添加截图。
执行接口测试用例,自动化执行反馈测试结果。
执行性能测试用例,自动化执行,生成测试报告反馈吞吐量、响应时间、TP90等接口性能指标。
测试套件执行
执行手工测试套件,设置套件结果、用例结果、创建缺陷、添加截图。支持中途中断执行测试套件后,下次继续执行。
执行接口测试套件,自动化执行反馈测试结果。
执行性能测试套件,自动化执行反馈测试结果。
查看测试用例结果
查看测试用例历史执行结果,展示用例结果、步骤结果、截图。
查看测试套件结果
查看测试套件历史执行结果,展示套件结果、用例结果、步骤结果、截图。
缺陷提交
执行测试用例创建缺陷,或者直接为用例创建缺陷。
质量报告
多维度版本质量看板,展示需求覆盖率、缺陷、用例通过率、用例完成率、缺陷报表、用例报表、任务统计,导出为PDF或Word格式报告,支持自定义测试报表。
产品优势
更新时间: 2018-12-03 14:53
高效
一站式云端测试平台,高效协同,支持不同规模团队敏捷测试流程,开展用例设计、测试执行、缺陷提交,提高测试效率。
双向追溯
通过需求-用例-缺陷双向追溯,确保所有需求都被正确测试,杜绝漏测、误测。
可视化
多维度产品质量看板,全方位评估产品质量,保障产品高效验收。
应用场景
更新时间: 2018-12-03 14:53
测试管理主要应用于软件测试和质量管理,如图1所示。
图1 软件测试流程
详细说明如下:
测试管理者有效管理团队的测试任务、测试进度,掌握产品质量状况。
测试管理者有效管理测试覆盖率、测试人力投入,提升投入产出比。
测试人员基于开发或者测试需求创建用例并测试,实现需求驱动的测试。
测试人员从用例追溯测试需求和缺陷,快速获取关联信息。
测试人员及时获取测试需求变更信息,避免漏测或误测。
测试人员及时掌握新分配的用例、提交缺陷的变更信息。
测试人员提交缺陷时自动填写缺陷复现步骤,减轻测试和开发沟通成本。
测试人员及时输出测试报告,减低工作量,避免差错。
名词解释
更新时间: 2018-12-03 14:53
介绍测试管理相关的名词,如表1所示。
表1 名词解释
名词
释义
测试用例(Test Case)
为某个目标而编写的一组测试步骤,以测试某个程序路径或核实是否满足某个特定需求。
测试步骤(Test Step)
一组测试步骤组成一个测试用例,测试步骤包含测试输入和预期结果。
测试套件(Test Suite)
一组测试用例的集合,包含同一个测试目的或同一运行环境下的一系列测试用例的有机组合。如:某个模块的批量测试、某个版本的回归测试。
缺陷(Defect)
也称为Bug,软件中存在的某种破坏软件正常运行的问题、错误。
测试报告
测试阶段最后的输出文档,对软件质量进行评估,对发现的软件缺陷进行分析,为纠正软件质量问题提供依据。
版本说明
更新时间: 2018-12-03 14:53
表1 版本列表
版本
发行时间
说明
07
2018.11.30
第七次更新
产品概述
更新时间: 2018-12-03 14:53
接口测试结合了华为优秀研发实践和研发理念,基于接口URL或Swagger文档快速编排接口测试用例,集成流水线,支持微服务测试、分层自动化测试。测试用例免代码编写,技术门槛低,适合接口开发者、接口消费者、测试人员、业务人员等不同角色使用。一键导入Swagger接口定义自动生成脚本模板,基于脚本模板组装编排、管理接口自动化测试用例。支持HTTP和HTTPS协议,可视化用例编辑界面,丰富的预置检查点、内置变量,支持自定义变量、参数传递、持续自动化测试。
三张图片快速了解接口测试,如下:
产品功能
更新时间: 2018-12-03 14:53
接口测试功能列表如表1所示。
表1 功能列表
特性
描述
测试用例
测试用例包含一系列测试请求和测试逻辑,完成对接口的功能测试。
定义测试步骤
填写请求URL、请求方法、请求头、请求体定义接口请求。
定义测试检查点
定义接口测试请求测试步骤的测试检查点,检查点验证请求响应结果是否符合预期。
一键导入Swagger接口描述文档,生成脚本模板
导入Swagger接口描述文件,自动生成每个接口的脚本模板。脚本模板包含接口的路径、请求参数、接口描述、名称等内容,基于脚本模板可以创建接口请求测试步骤。
基于Swagger脚本模板定义测试步骤
将测试脚本模板添加至测试用例,自动生成测试步骤,填写模板的请求参数、请求头定义接口请求。
调试接口请求测试步骤
调试整个测试用例的接口请求步骤,或禁用某些测试步骤做调试,查看接口请求、响应和测试检查点是否符合设计预期。可单击步骤调试【成功】或【失败】结果标签快速定位该步骤的调试日志。
预置测试检查点
预置30多种测试检查点。
全局和局部测试参数
定义测试参数,以在测试步骤中引用使用。全局测试参数生效范围是当前项目全局,引用方式为$ 全 局 参 数 名 称 , 局 部 测 试 参 数 的 生 效 范 围 是 当 前 测 试 用 例 , 引 用 方 式 为 {全局参数名称},局部测试参数的生效范围是当前测试用例,引用方式为 全局参数名称,局部测试参数的生效范围是当前测试用例,引用方式为{局部测试参数}。
内置参数
内置参数是将HTTP/HTTPS响应的对应部分参数化,以供检查点和参数快速调用。包含 b o d y 响 应 体 、 {body}响应体、 body响应体、{code}响应头、${header}响应体。
多环境参数管理
全局参数支持分环境管理参数,以实现多个环境复用同一套测试用例或测试套件。
测试关键字
测试关键字是特殊的测试用例,将测试用例设置为测试关键字后可以被其他测试用例引用,实现测试复用。
结果提取/参数传递
提取接口测试步骤的响应结果,参数化后供后续测试步骤引用。
测试套件批量接口测试
通过测试套件批量并行或串行执行测试用例,汇总测试结果。
流水线实现持续接口自动化测试
通过流水线调用接口测试套件,实现CI持续自动化接口测试,并支持接口测试通过率门禁卡点。
测试步骤分组
测试步骤分组做为一个逻辑单元,以有效组织测试步骤。
循环逻辑
测试用例中循环执行某段测试脚本。
判断逻辑
测试用例中使用If判断以实现分支测试逻辑。
等待逻辑
测试用例中等待一段时间继续执行测试。
产品优势
更新时间: 2018-12-03 14:53
简单
测试用例免代码编写,免自建环境,可快速上手,适合接口开发者、接口消费者、测试人员、业务人员等不同角色使用。
高效
可视化编排测试用例,通过云端弹性资源池保证高效执行环境,实时反馈测试结果。
专业
支持多种协议,高级测试场景编排,7类30+预置检查点,多环境测试参数管理,结合流水线实现CI自动化测试。
应用场景
接口功能测试
应用测试金字塔测试设计方式,在接口层次进行功能自动化测试,如图1所示。
和UI测试相比,接口测试开发成本低、运行时间短、运行稳定性高,可以实现快速准确的测试反馈。
图1 应用场景
持续集成和自动化测试
应用持续集成方法,使用流水线实现构建、部署、测试,快速测试及时发现问题,避免带问题的制品进入下个环节或环境,如图2所示。
图2 应用场景
生产环境服务和第三方依赖API监控
在生产环境建立对产品或第三方依赖API的接口级7x24测试监控,早于客户发现现网问题,并及时修复,如图3所示。
名词解释
更新时间: 2018-12-03 14:53
介绍接口测试相关的名词,如表1所示。
表1 名词解释
名词
释义
HTTP方法
GET、POST、PUT、DELETE等。
HTTP请求头
描述请求消息的信息。例如:Accept:application/json,指定接收JSON格式的响应体。
HTTP响应头
描述响应消息的信息。例如:Content-type:application/json,说明响应体是JSON格式。
HTTP响应码
描述响应的状态。例如:200代表成功,401代表当前请求需要用户验证。
HTTP消息体
HTTP消息的消息内容,包含向服务器或客户端发送的消息内容。
Swagger
Swagger是一种广泛使用的开发API的工具组合,包含API描述规范和开发框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。Swagger接口描述文件基于OpenAPI标准描述REST接口,目前比较流行的是Swagger 2.0版本。
脚本模板
基于Swagger文档生成,一个脚本模板对应Swagger中的一个接口,包含了接口定义,基于脚本模板可以可视化编排测试用例。
测试用例(Test Case)
为某个目标而编写的一组测试步骤,以测试某个程序路径或核实是否满足某个特定需求。
测试步骤(Test Step)
一组测试步骤组成一个测试用例,测试步骤包含测试输入和预期结果。
测试套件(Test Suite)
一组测试用例的集合,包含同一个测试目的或同一运行环境下的一系列测试用例的有机组合,例如:某个模块的批量测试、某个版本的回归测试。
测试检查点
也称为测试断言,检查请求响应结果是否符合预期值。更多参见测试检查点列表。
全局参数
全局参数可以用于项目全局,如测试步骤的参数、检查点、变量、URL等都可以引用全局参数。全局参数引用形式为 参 数 名 , 如 参 数 名 为 h o s t n a m e , 则 可 以 使 用 {参数名},如参数名为hostname,则可以使用 参数名,如参数名为hostname,则可以使用{hostname}来引用该参数。可以按环境上下文配置全局参数,如类生产环境中hostname=stage.example.com,生产环境中hostname=prod.example.com,执行测试时可选择环境执行。
局部参数
局部参数可以用于当前测试用例,如测试步骤的参数、检查点、变量等都可以引用局部参数。局部参数引用形式为 参 数 名 , 如 参 数 名 为 h o s t I p , 则 可 以 使 用 {参数名},如参数名为hostIp,则可以使用 参数名,如参数名为hostIp,则可以使用{hostIp}来引用该参数。
参数传递
提取当前测试步骤中请求的响应结果内容并参数化,供后续测试步骤引用。
测试关键字
特殊类型的测试用例,测试用例被设置为关键字后可以被用例嵌套使用,以实现测试逻辑的复用。
其中,脚本模板和Swagger接口描述中字段的对应关系如表2所示。
表2 脚本模板-Swagger接口
脚本模板属性
Swagger接口定义属性
名称
默认使用operationId,可在设置中配置使用summary
路径
schema + / + basePath + path
请求参数:hostURL
host
其他请求参数
parameters
产品概述
更新时间: 2018-12-03 14:53
性能测试结合了华为优秀研发实践和理念,利用云上大规模弹性计算资源,模拟网站大规模用户使用的真实业务场景,多方位评估业务站点的性能、容量和稳定性。
性能测试提供快速性能测试模式和高级测试模式。基于接口URL或Swagger文档可以快速编排接口测试用例,通过集成流水线,可以支持微服务测试、分层自动化测试。测试用例免代码编写,技术门槛低,适合接口开发者、接口消费者、测试人员、业务人员等不同角色使用。一键导入Swagger接口定义自动生成脚本模板,基于脚本模板组装编排、管理接口自动化测试用例。支持HTTP和HTTPS协议,可视化用例编辑界面,丰富的预置检查点、内置变量,支持自定义变量、参数传递、持续自动化测试。
产品功能
更新时间: 2018-12-03 14:53
丰富场景构建
支持基于接口URL或Swagger文档快速创建测试用例,支持全局和局部变量,测试检查点、参数传递、设置测试逻辑等,并可以配置加压策略和性能指标KPI。
监控和压测报告
持续丰富中的监控指标看板,实时监控包括各用例的负载、响应时间、吞吐量等核心指标以及细分数据。
具体功能列表如表1所示。
表1 功能列表
特性
描述
测试用例
测试用例包含一系列测试请求和测试逻辑,完成对接口的性能测试。
定义接口请求
填写请求URL、请求方法、请求头、请求体定义接口请求。
定义测试检查点
定义接口测试请求测试步骤的测试检查点,检查点验证请求响应结果是否符合预期。
一键导入Swagger接口描述文档,生成脚本模板
导入Swagger接口描述文件,自动生成每个接口的脚本模板,脚本模板包含接口的路径、请求参数、接口描述、名称等内容,基于脚本模板可以创建接口请求测试步骤。
基于Swagger脚本模板定义测试步骤
将测试脚本模板添加至测试用例,自动生成测试步骤,填写模板的请求参数、请求头定义接口请求。
调试测试步骤
调试整个测试用例的接口请求步骤,或禁用某些测试步骤做调试,查看接口请求、响应和测试检查点是否符合设计预期。可点击步骤调试【成功】或【失败】结果标签快速定位至此步骤的调试日志。
全局和局部测试参数
定义测试参数,以在测试步骤中引用使用。全局测试参数生效范围是当前项目全局,引用方式为$ 全 局 参 数 名 称 , 局 部 测 试 参 数 的 生 效 范 围 是 当 前 测 试 用 例 , 引 用 方 式 为 {全局参数名称},局部测试参数的生效范围是当前测试用例,引用方式为 全局参数名称,局部测试参数的生效范围是当前测试用例,引用方式为{局部测试参数}。
内置参数
内置参数是将HTTP/HTTPS响应的对应部分参数化,以供检查点和参数快速调用。包含 b o d y 响 应 体 、 {body}响应体、 body响应体、{code}响应头、${header}响应体。
多环境参数管理
全局参数支持分环境管理参数,以实现多个环境复用同一套测试用例或测试套件。
测试关键字
测试关键字是特殊的测试用例,将测试用例设置为测试关键字后可以被其他测试用例引用,实现测试复用。
结果提取/参数传递
提取性能测试步骤的响应结果,参数化后供后续测试步骤引用。
测试套件批量接口测试
通过测试套件批量并行或串行执行测试用例,汇总测试结果。
测试步骤分组
测试步骤分组做为一个逻辑单元,以有效组织测试步骤。
循环逻辑
测试用例中循环执行某段测试脚本。
判断逻辑
测试用例中使用If判断以实现分支测试逻辑。
等待逻辑
测试用例中等待一段时间继续执行测试。
产品优势
更新时间: 2018-12-03 14:53
简单
测试用例免代码编写,免自建环境,可快速上手,适合接口开发者、接口消费者、测试人员、业务人员等不同角色使用。
高效
可视化编排测试用例,通过云端弹性资源池保证高效执行环境,实时反馈测试结果。
专业
支持多种协议,高级测试场景编排,7类30+预置检查点,多环境测试参数管理,结合流水线实现CI自动化测试。
应用场景
更新时间: 2018-12-03 14:53
性能测试支持多种使用场景:
新应用上线,压测防止流量导致系统瘫痪。
现有服务升级验证,基数架构升级后的性能评估,探测系统性能瓶颈点针对优化。
互联网场景中例如电商大促、游戏高峰等的测试,保证在高负载突发流量高峰的场景下,网站和应用运营的稳定性。
名词解释
更新时间: 2018-12-03 14:53
介绍性能测试相关的名词,如表1所示。
表1 名词解释
名词
释义
虚拟用户数(Virtual Users,VM)
虚拟用户是性能测试工具模拟出的并发用户,虚拟用户数就是执行性能测试时最大的并发用户数量。注册用户数、在线用户数、并发用户数三个成比例递减,递减比例与待测系统的业务相关。
平均响应时间(Return Time,RT)
响应时间计算用户从客户端发起一个请求到接收到服务器端返回响应报文所耗费的时间。平均响应时间指一段时间内所有事务响应时间的平均值。不同行业和业务的TPS经验值不同:互联网电子商务或消费类应用在500毫秒以下;金融应用1秒以下为佳;普通网站在3秒以下。
平均吞吐量(Transaction Per Second,TPS)
并发量除以平均响应时间,服务器每秒处理的请求数,用来衡量一个系统性能的重要指标。1000 TPS代表被测系统在每秒可以处理1000个请求。不同行业和业务的TPS经验值不同:互联网电子商务10000TPS-100000TPS;互联网小型网站50TPS-100TPS;互联网中型网站100TPS-500TPS。
成功率
检查点通过的请求数/所有请求数。
TP90
所有的响应时间按照由小到大的顺序排队,排在第90%位置的时间,用于评估90%请求的响应时间情况。
TP50
所有的响应时间按照由小到大的顺序排队,排在第50%位置的时间,用于评估50%请求的响应时间情况。
开通服务
更新时间: 2018-11-29 19:58
免开通即可使用云测的测试管理,每个租户5人以下免费使用,超出后会提示开通云测,开通后对超出免费额度的部分计费。
进入云测首页
更新时间: 2018-11-29 19:58
1.登录DevCloud首页。
2.在上方功能菜单区单击“服务 > 云测”,进入云测首页,如图1所示。
首页汇总了当前租户在DevCloud项目下相关的测试工件(用例、缺陷),还统计了用例完成率、用例通过率、缺陷状态和缺陷的重要程度。
图1 云测首页
3.在“我的项目”选择项目,单击进入项目下测试管理;单击点击放大创建新的项目,直接进入该项目的测试管理。
创建第一个手工测试用例
更新时间: 2018-11-29 19:58
1.进入项目下测试管理-测试用例页面,如图1所示。
图1 测试管理
2.单击“新建用例”,选择“新建手工测试用例”,进入新建用例页面,如图2所示。
图2 新建手工测试用例
3.输入用例名称,填写测试步骤和预期结果等信息,单击“保存”。
执行测试用例
更新时间: 2018-11-29 19:58
1.在用例列表单击操作列,如图1所示。
图1 执行用例
2.进入“执行测试用例”页面,如图2所示。
按照测试步骤进行测试操作,输入实际结果,检查实际结果是否符合期望结果,设置步骤结果和用例结果。
图2 执行过程
创建缺陷
更新时间: 2018-11-29 19:58
1.在“执行测试用例”页面,单击创建缺陷,如图1所示。
图1 创建缺陷
2.进入“新建缺陷”页面,录入缺陷信息,用例的测试步骤会被自动录入到缺陷的“复现步骤”,如图2所示。
图2 创建过程
3.单击“保存”,并关闭缺陷页面,用例和缺陷之间将自动建立双向关联关系。
创建测试套件
更新时间: 2018-11-29 19:58
1.切换到“测试套件”页签,如图1所示。
图1 测试套件
2.单击“新建”,进入新建测试套件页面,如图2所示。
图2 新建测试套件
3.输入测试套件名称,并添加测试用例,单击“保存”。
执行测试套件
更新时间: 2018-11-29 19:58
1.在测试套件列表单击操作列,如图1所示。
图1 执行测试套件
2.分别执行测试套件中的所有测试用例,并保存测试结果,如图2所示。
图2 执行过程
3.执行完所有测试用例,设置测试套件结果并保存,如图3所示。
图3 设置测试套件结果
生成测试报告
更新时间: 2018-11-29 19:58
1.切换到“测试总览”页签,如图1所示。
可以查看需求覆盖率、缺陷、用例通过率、用例完成率概览或详细信息。
图1 测试总览
2.单击导出报告,可以导出PDF/Word类型测试报告,如图2所示。
图2 测试报告
开通服务
更新时间: 2018-11-29 19:58
免开通即可使用云测的接口测试,每个租户有30测试分钟的免费额度,超出后会提示开通云测,开通后对超出免费额度的部分计费。
进入云测首页
更新时间: 2018-11-29 19:58
1.登录DevCloud首页。
2.在上方功能菜单区单击“服务 > 云测”,进入云测首页,如图1所示。
首页汇总了当前租户在DevCloud项目下相关的测试工件(用例、缺陷),还统计了用例完成率、用例通过率、缺陷状态和缺陷的重要程度。
图1 云测首页
3.在“我的项目”选择项目,单击进入项目下测试管理;单击点击放大创建新的项目,直接进入该项目下测试管理。
4.切换至“接口测试”页签,进入接口测试页面,如图2所示。
图2 接口测试
有两种模式创建接口测试用例:
直接输入被测接口URL和请求信息。
导入Swagger YAML或JSON文件生成脚本模板,基于脚本模板拼装用例。
可以根据页面引导熟悉两种模式,也可以单击“跳过引导”直接创建。
创建第一个接口测试用例
更新时间: 2018-11-29 19:58
1.进入项目下接口测试-测试用例页面,如图1所示。
图1 接口测试
2.单击“新建”,进入“新建用例”页面,如图2所示。
图2 新建用例
3.输入用例名称,其他信息可以置空,单击“保存并编写脚本”,进入“编辑用例脚本”页面。
4.单击“+URL请求”,添加一个求测试步骤,如图3所示。
图3 添加测试步骤
5.在测试步骤URL输入框中输入接口的URL,单击左上角GET旁边的下拉按钮,可以修改HTTP请求方法,如图4所示。
图4 设置测试步骤
6.在请求头标签页中可以定义请求的请求头,如Content-Type:application/json,如图5所示。
在请求体标签页中可以定义请求体,请求体可以是form表单、JSON或文本形式,并且可以发送文件。
图5 定义请求
7.要测试接口行为是否符合预期,需要创建测试检查点(或称为断言),如图6定义了一个简单的检查点 ${code}==200,验证请求响应码是200成功。
接口测试中预置了30多个比较操作符,可以参数化引用内置参数响应码、响应头、响应体等,详细用法请参考测试检查点 。
调试接口测试用例
更新时间: 2018-11-29 19:57
测试步骤设置完成后,单击“调试”,系统将调试该用例,执行完成后可以根据调试日志分析测试步骤涉及是否符合预期,如图1所示。
执行接口测试用例
更新时间: 2018-11-29 19:57
返回测试用例列表,单击操作列,执行测试用例,执行完成后,单击可以查看执行结果详情,如图1所示。
流水线集成接口测试
更新时间: 2018-11-29 19:58
1.接口测试被流水线调用前,需要创建接口测试套件。
切换至测试套件页签,如图1所示。
图1 测试套件
2.单击新建测试套件,进入“新建测试套件”页面,如图2所示。
图2 新建套件
3.输入套件标题,,其他信息可以置空,单击“保存”创建测试套件。
创建完成后返回测试套件列表页面,如图3所示。
图3 测试套件列表
4.单击套件名称,进入“编辑测试套件”页面,如图4所示。
图4 编辑测试套件
5.单击“添加用例”,选择用例并添加到测试套件。
6.在页面上方功能菜单区单击“构建&发布 > 流水线”,进入流水线首页,如图5所示。
图5 流水线首页
7.选择已有流水线或者新建一个流水线,为流水线添加任务,如图6所示。
图6 新建流水线任务
8.编辑任务时,选择对应接口测试套件,加入流水线中自动化执行,即可实现持续自动化测试。
申请公测
更新时间: 2018-11-29 19:58
本节主要介绍如何申请性能测试公测。目前性能测试仅在华为云华北区开放公测申请。
前提条件
已经注册了华为云账号。
操作步骤
1.进入云测官网首页,如图1所示。
图1 云测官网首页
2.单击“立即体验”并登录华为云账号进入云测首页,如图2所示。
如果是第一次进入云测首页,单击“新建项目”,创建完成后直接进入项目下测试管理。
如果已有项目,单击 进入项目下测试管理。
图2 云测首页
3.进入项目下测试管理后,单击性能测试页签进入性能测试页面,根据提示申请公测,等待审批。
一分钟快速开始压力测试
导读
更新时间: 2018-11-29 19:58
本节介绍以接口访问为例进行压测的相关操作,只需通过简单的几步操作,就可以完成一次性能测试,包括进入性能测试、创建测试用例、执行测试用例、查看报告。
进入性能测试
更新时间: 2018-11-29 19:58
1.登录DevCloud首页。
2.在上方功能菜单区单击“服务 > 云测”,进入云测首页,如图1所示。
图1 云测首页
3.在“我的项目”选择项目,单击进入项目下测试管理;单击点击放大创建新的项目,直接进入该项目下测试管理。
4.切换至“性能测试”页签,进入性能测试页面,如图2所示。
图2 性能测试
创建测试用例
更新时间: 2018-11-29 19:58
在性能测试页面,单击“快速测试”,弹出“快速性能测试”页面,如图1所示。
该页面有GET、POST、PUT、DELETE四种接口类型可供选择,填入必填信息后即可快速执行。
执行测试用例
更新时间: 2018-11-29 19:57
执行上一节中创建的性能测试用例,如图1所示。
系统开始准备性能测试环境,当收集到第一批性能测试数据后将展示实时测试报告。
查看报告
更新时间: 2018-11-29 19:58
两种方式查看测试报告:
测试用例执行完成后,直接展示测试报告,查看性能测试报告信息,如图1所示。
图1 测试报告
在测试用例列表,单击操作列,查看每次执行的历史记录报告,如图2所示。
图2 历史记录报告
导读
更新时间: 2019-02-25 17:55
迭代计划录入后,测试人员便可以对迭代需要开发的需求进行对应的测试用例设计工作。
新建用例
更新时间: 2019-02-25 17:55
1.进入云测-测试管理页面,如图1所示。
图1 测试用例
2.单击“新建用例”,可以创建手工测试用例或接口测试用例。
手工测试用例
创建手工测试用例用于管理测试场景、测试步骤等,如图2所示。
用例名称
用例的名称。可以描述用例对应的测试测试场景或功能。
步骤
请录入具体的测试步骤和对应的预期结果。
用例等级
请根据用例对应场景或功能的重要程度选择用例等级。
0级
最基本的功能验证,用例不宜过多,各模块尽量保证在10-20个,占比5%左右。
1级
基本功能验证,可用于继承特性的基本功能验证、迭代验收前的基本功能验证等,占比20%左右。
2级
重要特性验证,可用于测试版本(非回归版本)中功能测试,占比60%左右。
3级
一般功能/非重要功能验证,包括对基本/重要功能的异常测试,占比15%~20%左右。
4级
非常特殊输入、场景、阈值条件的用例,该级别用例不宜过多,占比0%~5%左右。
迭代
可选。请根据当前用例需要在哪个迭代进行测试选择对应迭代。
处理人
可选。指定完成对应测试任务的人员。
关联需求
建议把测试用例和测试需求双向关联。如果当前用例用于测试某一特定需求且该需求已录入“项目管理”服务,单击“关联需求”可以将用例和需求工作项进行关联。
接口测试用例
创建接口测试用例用于管理基于接口测试的自动化测试用例,如图3所示。
图3 新建接口测试用例
说明:
测试管理仅记录接口测试用例的基础信息,接口详细信息如接口地址、请求方式等,可以单击“保存并编写脚本”进入接口测试服务进行具体编写,详见创建接口测试用例对应内容。
示例说明
以敏捷开发为例,当前迭代已在项目管理录入如下需求:
前端:实现一个HelloWorld界面。
后台:使用RESTful接口实现HelloWorld接口向前台提供界面展示的数据。
测试人员可以在测试工作开始前,先在测试管理创建相应测试用例。
1.测试人员根据前端需求,创建相应的手工测试用例,按照测试场景录入用以描述该需求涉及的测试场景及测试步骤,并将该手工测试用例与对应需求进行关联,如图4所示。
图4 新建手工测试用例
2.测试人员根据后台需求,创建相应的接口测试用例对后台接口进行测试,如图5所示。
图5 新建接口测试用例
用例迁移
更新时间: 2019-02-25 17:55
背景信息
用户在其他地方维护的测试用例可以直接导入测试管理服务。
操作步骤
1.进入测试管理-测试用例页面,单击“更多操作 > 导入”,弹出选择文件对话框,如图1所示。
图1 测试用例
2.单击“下载模板”,下载用例导入模板并按照模板中的格式要求填写用例信息,如图2所示。
图2 用例模板
说明:
单次导入用例条数不超过500条。
3.选择填写好的用例模板,单击“导入”。
如果数据不符合导入标准,请根据页面提示修改数据重新导入。
注意事项
导入模板中数据不能为空。
保持导入模板列标题和排列顺序不变。
每次导入用例条数与项目中已有用例数加起来不能超过项目下最大用例条数限制(10000条)。
导入文件大小不能超过5MB。
用例名称/用例编号:长度必须在3到128个字符之间,只能包含中文、英文字母、数字和符号(空格,-_/|*&`^~;;::()(){}=+,×¥……——’!@#$%.’+"’"+’[]<>?·!"、‘“”?—。,《》【】)。
每个测试步骤或预期结果长度不能超过500字符。
其他注意事项,可在导入模板中标题的注解上查看,如图3所示。
图3 批注
表1 用例模板字段详解
模板字段
是否必填
要求
用例名称
是
用例名称不能重复,字符长度为3-128个字符。
用例编号
否
用例编号不能重复,字符长度为3-128个字符,不填将由系统自动生成。
处理人
否
请使用项目中存在的用户名或用户昵称,否则导入后处理人为空。
用例状态
否
新建、设计中、测试中、完成,或其他自定义状态。
用例结果
否
成功、失败、待核查、不可用、阻塞,或其他自定义结果。
用例级别
否
示例:Level 1、L1或者1,不区分大小写,用例的级别包括0-4。未填写则自动设置为L0级别。
迭代
否
请使用项目设置的迭代名称,否则导入后用例模块为空。
模块
否
请使用项目设置的模块名称,否则导入后用例模块为空。
需求编号
否
导入时可只填写需求编号不填写需求名称。
需求名称
否
导入时可只填写需求编号不填写需求名称。
描述
否
前置条件
否
归属目录
否
目录格式:一级目录/二级目录/三级目录/四级目录。提示:一级目录是根目录(与项目同名)下的第一级目录。
测试步骤1…
否
每个测试步骤限500字。
预期结果1…
否
每个预期结果限500字。
测试套件
更新时间: 2019-02-25 17:55
测试套件用于管理一组测试用例。一般可以使用测试套来进行多轮次或多迭代的回归测试。根据用例类型的不同,可以选择新建手工测试用例套件或接口测试用例套件。
以下仍以HelloWord项目为例进行介绍。
1.进入测试管理-测试用例页面,如图1所示。
测试人员针对当前迭代(迭代1)需求,共创建了两个手工测试用例,一个接口测试用例。为了便于管理同类型测试用例,测试人员可将当前迭代手工/接口用例分别打包到对应测试套件进行管理。
图1 测试用例
2.切换到“测试套件”页签,单击“新建 > 新建手工测试套件”,进入“新建手工测试套件”页面,如图2所示。
图2 新建手工测试套件
说明:
单击可以将对应迭代中的手工测试用例添加到该测试套件。
3.(略)接口测试套创建步骤与手工测试套创建步骤相同。
测试结果
更新时间: 2019-02-25 17:55
迭代开发完成后,测试人员开始进行测试工作。
对于手工测试用例,测试人员需要在完成功能验证后,在对应的用例上记录验证结果;对于接口测试用例,系统会对接口进行自动化测试并给出测试结果。
手工测试用例
在用例列表单击操作列点击放大,开始执行手工测试用例,手工测试用例结果需要在用例编辑界面手工录入,如图1图。
通常在用例执行结果时需要维护以下信息:
对于用例中的每个测试步骤录入实际测试结果。
根据测试步骤的执行结果选择测试用例的执行结果。
在备注中填入一些其他需要记录的信息。
接口测试用例
接口测试用例执行和结果由接口测试提供。
在用例列表单击操作列点击放大,开始执行接口测试用例,可以通过“执行结果”列或单击用例名称查看详情,实时查看接口用例执行结果,如图2所示。
管理缺陷
更新时间: 2019-02-25 17:55
测试人员执行测试用失败后,建议根据失败原因及时录入缺陷,用户在用例视图和追溯视图都可以对缺陷进行管理。
用例视图
在用例列表页面,单击操作列 创建对应缺陷,如图1所示。
图1 测试用例
在用例列表页面,单击操作列“更多 > 关联缺陷”,在弹出框中选择当前项目下已有的缺陷进行关联。
在用例详情页面,单击右上角创建缺陷,或者单击关联当前项目下已有的缺陷,如图2所示。
缺陷创建/关联完成后,可在 “缺陷列表”中查看缺陷信息。
图2 创建缺陷
追溯视图
测试管理提供了追溯视图,方便从需求的维度对用例和缺陷进行管理,通过追溯视图可以直观的了解所有需求的用例覆盖情况。
单击右上方点击放大,可以在用例视图和追溯视图间切换。
追溯视图中,需求前如果有点击放大图标,表示该需求下已关联了用例,可点击点击放大展开需求详情,查看该需求已管理的用例列表。
如果在追溯视图中发现某一需求未覆盖用例(如上图第二条需求),可单击操作列点击放大或点击放大为该需求创建手工测试用例或接口测试用例。
测试套件
更新时间: 2019-02-25 17:55
测试套件的执行和结果查看与测试用例执行基本相同。
执行接口测试套件会自动执行并反馈结果,执行手工测试套件会进入手工测试套件执行页面,需要手工逐个设置用例的测试结果和用例步骤的实际测试结果,创建缺陷。
执行手工测试套件
在测试套件列表中,单击操作列点击放大执行测试套件,如图1所示。
图1 执行测试套件
1.在“执行测试套件”页面左侧列表选择要执行的测试用例。
2.填写用例步骤实际结果。
3.设置用例结果并报错。
4.如果测试出现缺陷可以单击点击放大创建对应缺陷。
执行接口测试套件
在测试套件列表中,单击操作列点击放大执行测试套件,或者打开测试套件单击,系统会自动执行测试套中的接口测试用例,如图2所示。
图2 执行测试套件
1.点击后开始执行测试套件。
2.测试套件执行完成后,在“结果记录”页签单击详情列,可以查看各接口测试用例的执行结果及日志。
项目仪表盘
更新时间: 2019-02-25 17:55
测试总览根据迭代及模块展示了对应的“需求覆盖率”、“缺陷数”、“用例通过率”、“用例完成率”图表,以及需求、用例、需求对应缺陷的详细信息,如所示。
表1 测试总览
总览项
说明
需求覆盖率
需求覆盖率反映功能点测试覆盖情况,统计选中的迭代、模块下所有需求的测试覆盖率。
未测试:需求没有测试用例,或者关联的每个测试用例的状态均为未完成。
测试中:需求关联的测试用例的状态有一部分为未完成。
已完成:需求关联的测试用例的状态均为完成。
覆盖率=已完成数/总数。
说明:
在Scrum项目类型中,默认仅统计Feature和Story类型的需求,如需要统计Epic类型的需求,请选中Epic。
缺陷
统计选中的迭代、模块下所有的缺陷总数,并按缺陷重要程度分组统计。
用例通过率
用例通过率和缺陷综合反映产品质量,统计选中的迭代、模块下所有用例的通过率,并按执行结果字段分组统计,未执行的用例计入“未执行”分组。
用例通过率=执行结果字段为成功的用例数/用例总数。
用例完成率
用例完成率反映测试活动的进度,统计选中的迭代、模块下所有用例的完成率,并按用例状态字段分组统计,完成状态的用例计入“已完成”,测试中状态的用例计入“测试中”,其他状态的用例计入“未测试”。
用例完成率=状态字段为完成的用例数/用例总数。
缺陷列表
统计选中的迭代、模块下所有缺陷的详情。可以单击最大化查看。
需求的缺陷统计
统计需求关联的用例所关联的缺陷。可以点击最大化查看。可以勾选模块过滤。
用例列表
统计选中的迭代、模块下的每个需求下所关联用例,按状态分组统计进展详情。可以单击最大化查看。可以勾选模块过滤。
需求列表
统计选中的迭代、模块下的所有需求的测试状态。可以点击最大化查看。可以勾选模块过滤。
如果需求关联的所有用例状态字段均为“完成”,则需求的测试状态为已完成。
如果需求关联的用例中至少有一条状态字段为“测试中”,则需求的测试状态为测试中。
如果需求关联的用例中所有用状态字段既不是“完成”,也不是“测试中”,则需求的测试状态为未测试。
自定义报表
以柱状图或饼图的形式,从用例或套件的维度,使用自定义的用例过滤器(测试套件不支持),按照模块、创建人、处理人、结果、状态、级别、迭代7种分组(测试套件支持模块、处理人、结果、状态4种分组)统计用例,并支持数据下钻。
1.单击右上角“创建自定义报表”,在弹出框中选择以用例维度,按用例结果字段分组统计用例个数,如图2所示。
图2 自定义报表
2.单击“确定”,统计结果如图3所示。
图3 统计结果
图中结果字段为“—”表示分组字段值未设置。
单击饼图或柱状图中的某个分组,右侧会自动显示选中分组的数据,再次单击则重新显示所有数据。
导出报告
可将测试总览页面当前所选过滤条件下,除自定义报表的所有统计数据以PDF或Word形式导出为离线测试报告供存档使用。
单击右上角“导出报告”,在弹出框中选择导出的文件格式即可。
发送邮件
可将测试总览当前过滤条件下的统计数据以邮件的形式发送给指定的测试管理成员。
单击右上角“发送邮件”,在弹出框中选择要发送的成员,发送邮件。相关成员收到邮件后,单击邮件红的链接,便可进入此页面查看报告。
个人仪表盘
更新时间: 2019-02-25 17:55
登录DevCloud首页,在上方功能菜单区单击“服务 >云测”,进入到“云测”首页,即个人仪表盘界面,如图1所示。
个人仪表盘按项目展示了“我的用例完成率”、“我的用例通过率”、“我提交的缺陷状态”、“我提交的缺陷的重要程度”的统计信息,以及“我的测试用例”和“我提交的缺陷”信息。
自定义报表
更新时间: 2019-02-25 17:55
自定义报表以柱状图或饼图的形式,从用例或套件的维度,使用自定义的用例过滤器(测试套件不支持),按照模块、创建人、处理人、结果、状态、级别、迭代7种分组(测试套件支持模块、处理人、结果、状态4种分组)统计用例,并支持数据下钻。
1.在测试总览页面,单击右上角“创建自定义报表”,在弹出框中选择以用例维度,按用例结果字段分组统计用例个数,如图1所示。
图1 自定义报表
2.单击“确定”,统计结果如图2所示。
图2 统计结果
图中结果字段为“—”表示分组字段值未设置。
单击饼图或柱状图中的某个分组,右侧会自动显示选中分组的数据,再次单击则重新显示所有数据。
自定义状态和结果
更新时间: 2019-02-25 17:55
如果预置的用例/套件状态和结果不满足实际使用要求,可以在“测试管理 > 设置 > 用例自定义/套件自定义”中增加所需的状态,如图1所示。
图1 用例/套件自定义
自定义过滤器
更新时间: 2019-02-25 17:55
系统默认不对用例进行任何过滤,如果希望根据某些字段进行过滤查询,可以使用系统提供的自定义过滤器功能。
单击展开自定义过滤列表,可以根据列表中提供的字段进行自定义过滤,设置完过滤条件后,可以保存当前过滤规则以便下次使用,如图1所示。
图1 过滤用例
说明:
自定义过滤器可以作为自定义报表的过滤条件使用。
配置测试目录
更新时间: 2019-02-25 17:55
进入测试管理-设置-配置目录页签,可以对测试目录进行管理(添加、删除、修改目录),如图1所示。
测试目录主要用于分类分级管理测试用例,如:可以按产品或功能模块创建目录,对用例进行管理。
消息通知
更新时间: 2019-02-25 17:55
进入测试管理-设置-消息通知页签,可对系统事件选择配置是否发送服务动态及是否向测试管理成员发送邮件,如图1所示。
自定义用例表格列
更新时间: 2019-02-25 17:55
测试用例列表支持自定义显示列和显示顺序。
单击用例列表右上角,在弹出框中可以配置显示的列和隐藏的列,并可以拖拽排列显示顺序,如图1所示。
创建测试用例
更新时间: 2019-02-25 17:55
背景信息
测试用例包含了用例基本信息和测试脚本两部分。基本信息用于管理和描述测试用例,测试脚本定义自动化测试步骤。
基本信息
用例名称(必填)、用例编号、用例标签、用例等级、责任人、归属目录、设计描述、前置条件、测试步骤、预期结果。
测试脚本
测试步骤、逻辑控制、测试参数。
操作步骤
1.进入云测-接口测试-测试用例页面,如图1所示。
图1 测试用例
2.单击“新建”,进入“新建用例”页面,如图2所示。
图2 新建用例
3.输入用例名称,其他信息可以置空,单击“保存并编写脚本”,进入“编辑用例脚本”页面。
4.单击“+URL请求”,添加一个求测试步骤,如图3所示。
图3 添加测试步骤
如果有被测接口的Swagger描述文件,可以导入描述文件生成脚本模板,基于脚本模板编排测试用例。
请先导入Swagger接口描述文件生成脚本模板,详见生成脚本模板。
选择脚本模板,拖拽脚本模板卡片或单击脚本模板卡片的+,添加至测试步骤,如 图4所示。
图4 添加测试步骤
按照脚本模板输入请求参数、请求头、检查点,如 图5所示。
图5 设置参数项
表1 配置项说明
配置项
描述
请求头
预置了常见的HTTP请求头信息,如Accept、Content-Type等,如图6所示。
确定请求头名称后,输入请求头的值。如果预置的请求头不满足需求,可以手工输入请求头名称,详见请求头。
图6 设置请求头
请求体
请求体是接口请求需要传递的消息(报文),支持JSON、表单两种格式。
JSON格式下,JSON编辑器可以自动格式化显示JSON、校验JSON语法,如图7所示。
图7 JSON请求头
表单格式下,支持文本和文件两种类型(文件类型不支持调试)。文本类型设置参数名和值,文件类型设置参数名和文件,如图8所示。
图8 表单请求头
5.配置测试阶段。
测试用例包括三个阶段:准备阶段、测试阶段、销毁阶段。
准备阶段实现测试前置条件的准备;测试阶段实现接口的功能测试;销毁阶段实现准备阶段和测试阶段测试数据的释放或恢复。
准备阶段(可选):准备测试阶段需要的前置条件的数据,如果没有前置条件,可以忽略此阶段。
通过调用接口的方式初始化前置条件,如果前置条件的数据需要在测试阶段中引用,可以使用参数传递将数据参数化后供测试阶段引用,详见参数传递。
测试阶段:定义核心测试步骤测试接口的功能,测试阶段中的测试步骤可以引用准备阶段定义的参数传递。
销毁阶段(可选):为了不影响其他测试或者下一次测试,建议在每次测试结束后清理测试环境数据,恢复测试环境的初始状态,销毁准备阶段创建的数据。
如果没有数据需要销毁,可以忽略此阶段。通过调用接口的方式销毁数据,销毁阶段的测试步骤可以引用准备阶段定义的参数传递。
6.所有设置完后,单击“保存”,测试用例编写完成。
调试测试脚本
更新时间: 2019-02-25 17:55
编写测试用例后,需要检查是否符合用例的设计预期,可以通过调试功能做验证。在编写测试用例时,需要及时调试验证用例编写是否正确。
1.在测试用例编辑页面,单击“调试”,等待调试结果,如图1所示。
图1 调试用例
2.查看调试日志,如图2所示。
调试用例执行成功或者失败都会有信息提示,如果失败,请查看具体的调试日志。
如果调试的接口比较多,想查看某个接口的调试信息,可以单击测试步骤的成功或者失败标志,调试日志框自动定位至对应的日志。
图2 调试日志
生成脚本模板(可选)
更新时间: 2019-02-25 17:55
脚本模板是DevCloud云测-接口测试的一个独创功能。脚本模板封装了接口的基本定义,只需要根据模板输入测试数据就可以创建出接口测试用例。
通过导入接口Swagger描述文件可以生成脚本模板。一个脚本模板对应Swagger中的一个接口定义,基于脚本模板可以可视化编排测试用例。
脚本模板和Swagger接口描述中字段的对应关系如下。
脚本模板属性
Swagger接口定义属性
名称
默认使用operationId,可在设置中配置使用summary。
路径
schema + / + basePath + path
请求参数:hostURL
host
其他请求参数
parameters
操作步骤
1.在测试用例编辑页面,单击“导入Swagger文件”,如图1所示。
图1 导入Swagger文件
2.选择配置好的Swagger接口文档,单击“确定”,如图2所示。
图2 选择接口文档
3.导入Swagger接口文档后,系统自动解析生成脚本模板,如图3所示。
脚本模板包含了接口的基本描述信息,只需要按模板输入测试参数等就可以测试接口。
图3 脚本模板
4.模板导入后可以在接口测试-脚本模板页签进行查看/管理,如所示。
也可以导入脚本模板,单击 “导入Swagger文件”,选择本地要上传的Swagger文件,然后选择
图4 脚本模板管理
请求头
更新时间: 2019-02-25 17:55
接口测试预置了HTTP协议的常用请求头。在“请求头”标签页中,输入要填写的请求头信息,如图:
测试参数
更新时间: 2019-02-25 17:55
合理的测试设计要求分离测试逻辑和测试数据,实现测试逻辑的最大化复用,增强测试用例的可维护性和投入产出比。例如不同测试环境的URL域名是一种独立于测试逻辑,和测试环境相关的测试数据。测试参数管理这些测试数据。
接口测试中的测试参数分为两类:全局参数、局部参数。
全局参数
全局参数使用范围是当前项目的测试用例,如测试步骤的参数、检查点、变量、URL等都可以引用全局参数。
全局参数引用形式为 参 数 名 , 如 参 数 名 为 h o s t n a m e , 则 可 以 使 用 {参数名},如参数名为hostname,则可以使用 参数名,如参数名为hostname,则可以使用{hostname}来引用该参数。
可以分环境分组配置管理全局参数,如类生产环境中hostname=stage.example.com,生产环境中hostname=prod.example.com。执行测试时可选择环境执行,实现一套接口测试在所有环境复用。
3.第一个环境会自动作为默认环境,如果需要设置其他环境为默认环境,可以单击点击放大设置。
局部参数
局部参数使用范围是当前测试用例,如测试步骤的参数、检查点、变量等都可以引用局部参数。
局部参数引用形式为 参 数 名 , 如 参 数 名 为 h o s t I p , 则 可 以 使 用 {参数名},如参数名为hostIp,则可以使用 参数名,如参数名为hostIp,则可以使用{hostIp}来引用该参数。
参数引用
URL、请求头的值、检查点的值、请求参数支持引用全局参数或局部参数,输入“$”符号会自动提示出定义好的全局变量和局部变量。
内置参数
更新时间: 2019-02-25 17:55
内置参数是将HTTP/HTTPS响应的对应部分参数化,以供检查点和参数传递调用,在编写测试步骤时会频繁使用到。详细说明如表1所示。
说明:
如果内置参数支持多级取值,例如body为{“result”:{“appId”:12}}时,则取appId的格式为 b o d y . r e s u l t . a p p I d , 如 果 r e s u l t 是 数 组 格 式 则 为 {body}.result.appId,如果result是数组格式则为 body.result.appId,如果result是数组格式则为{body}.result[i].appId,其中,i为非负整数。
参数传递
更新时间: 2019-02-25 17:55
参数传递是提取接口响应结果的某一部分,命名为参数,供后续测试步骤参数化调用。
说明:
参数传递需要在前序测试步骤定义,后续测试步骤使用。
1.在前序测试步骤中,在“参数传递”页签中创建要传递的参数。参数传递用到内置参数功能,请参考内置参数了解如何使用内置参数。
2.在后续测试步骤中,通过${参数名}方式引用前序测试步骤创建的参数传递。
测试检查点
更新时间: 2019-02-25 17:55
背景信息
测试检查点又名断言,通过检查接口响应是否符合预期,判定系统是否满足预期。
示例
在“检查点”页签,输入测试检查点的属性、比较和值定义测试检查点。检查点的属性用到内置参数功能,请参考内置参数了解如何使用内置参数。
示例:
${code} == 200:检查请求响应码是200。
${body}.item.name equals cat:检查响应体JSON字段item.name 字符串值为cat。
检查点参数说明如下:
属性:被检测字段,如请求响应码、请求响应体、请求响应头,可分别使用内置参数 c o d e 、 {code}、 code、{body}、 h e a d e r 代 替 , 支 持 嵌 套 取 值 , 如 {header}代替,支持嵌套取值 ,如 header代替,支持嵌套取值,如{body}.item.name。
比较:支持数字、字符串、JSON对象比较,类型比较等多种比 较符,详见表1。
值:检查点期望值。
重试次数:如果测试接口调用不通,重试的次数,支持0-10的整数。
重试间隔:重试调用接口之间的时间间隔,支持0-60000的整数。
表1 接口测试检查点的说明和举例
逻辑控制
更新时间: 2019-02-25 17:55
逻辑控制包含等待时间、分组、判断、循环,用于编排测试场景。
等待时间
如果执行某个测试步骤后需要间隔一段时间再继续后续测试步骤,可以使用等待时间。
在脚本编辑页面,单击“等待时间”,添加等待时间,支持0-60000的整数。
分组
单击“分组”,添加分组,拖拽相关的测试步骤到分组,使用分组名称描述分组中测试步骤的功能。分组中可添加测试步骤、判断、分组、等待、循环、测试关键字。
支持拖拽编排分组在测试用例中的顺序。
支持拖拽编排分组内部测试步骤的顺序。
支持整体禁用或者删除分组。
判断
如果需要根据前序测试步骤的结果决定后续需要执行的测试步骤,可使用判断。
单击“if判断”,添加判断逻辑,输入if判断条件,在分支中添加后续测试步骤。判断分支中可添加测试步骤、判断、分组、等待、循环、测试关键字。
说明:
If判断使用Java语言编写if判断条件,支持引用局部变量和传递参数,支持||和&&操作符。如:${id} > 0 && ${name}.length() > 0。
循环
单击“循环”,添加循环逻辑,设置循环次数。循环中可添加测试步骤、判断、分组、等待、循环、测试关键字。
测试关键字
更新时间: 2019-02-25 17:55
背景信息
测试关键字来源于关键字驱动的测试方法,是特殊类型的测试用例。测试关键字用于封装常用测试逻辑,可以被多个测试用例调用实现逻辑复用。
在测试设计时,常常会遇到有一些相同的前置步骤或者测试逻辑。如果每一个测试用例中都编写这些步骤,重复工作量很大,并且难以维护。测试关键字可以帮助复用这些测试步骤。测试关键字是特殊类型的测试用例,可以单独执行,也可以嵌套在普通测试用例中。
配置关键字
1.在用例列表中选择一个测试用例,单击“更多操作 > 设置为关键字”将此用例设置为测试关键字。
2.在用例编辑页面中,单击“添加关键字”,选择添加要使用的测试关键字。
说明:
测试关键字不能在引用它的测试用例中修改,可点击点击放大打开测试关键字编辑页面修改。修改测试关键字后,引用它的测试用例将使用修改后的测试关键字。
参数传递
1.测试用例和被引用测试关键字之间可以使用参数传递。
在测试关键字中设置参数传递,参数传递将被引用它的测试用例使用。
2.在普通测试用例中添加测试关键字。
3.在普通测试用例中引用测试关键字生成的参数传递
创建测试套件
更新时间: 2019-02-25 17:55
测试套件是一组测试用例的集合。测试用例用于验证功能是否符合预期,测试套件把一组相关的服务于同一目的的一批测试用例组织起来,例如某一个模块的测试用例、某一个执行环境的测试用例、某一个版本的测试用例等。
操作步骤
1.在测试-接口测试-测试套件页面,单击“新建测试套件”,创建测试套件。
2.输入测试套件名称,其他属性可以置空,单击“保存”创建测试套件。
4.单击“更多操作 > 添加用例”选择用例添加到此测试套件中。
执行用例
更新时间: 2019-02-25 17:55
1.在测试用例列表页面,单击操作列点击放大执行测试用例。如果配置了全局参数,会使用默认环境中的全局参数执行。
2.单击“更多操作 > 参数执行”,选择环境执行。选择某个环境执行时,将使用选中环境中的全局参数执行用例。
执行套件
更新时间: 2019-02-25 17:55
1.在测试套件列表页面,单击操作列点击放大执行测试套件。如果配置了全局参数,则使用默认环境中的全局参数执行。
2.单击“更多操作 > 参数执行”,选择环境执行。选择某个环境执行时,将使用选中环境中的全局参数执行测试套件。
持续集成
更新时间: 2019-02-25 17:55
持续集成是DevOps的重要实践,通常至少每天完成一次集成,通过自动化的编译构建、部署、自动化测试实现快速反馈。
自动化测试是持续集成的重要实践,详见流水线集成接口测试。
说明:
流水线仅支持添加接口测试套件作为接口测试任务,不支持添加接口测试用例。
测试用例结果
更新时间: 2019-02-25 17:55
在测试用例列表页面,结果列显示最新执行的结果。
单击操作列,可以查看某个测试用例的执行历史记录,在执行历史记录列表中,点击点击放大按钮可以查看详情信息。
测试套件结果
更新时间: 2019-02-25 17:55
在测试套件列表页面,结果列显示最新执行的结果。
单击操作列点击放大,可以查看某个测试套件的执行历史记录,在执行历史记录列表中,点击点击放大按钮可以查看详情信息。
与测试管理的关系
测试管理集成了接口测试,从测试管理可以创建、执行、管理接口测试用例或测试套件,并查看测试结果、关联缺陷。
1.测试管理中,在测试用例页面展示了手工测试用例和接口测试用例,在测试套件页面展示了手工测试套件和接口测试套件。
2.在测试管理-测试用例页面,单击“新建接口测试用例”,创建接口测试用例。
3.填写完用例基本信息,单击“保存并编写脚本”前往接口测试编写测试脚本,或者单击“保存”仅保存基本信息,后续再补充接口测试脚本。
4.在测试管理-测试套件页面,单击“新建接口测试套件”,创建接口测试套件,并添加接口测试用例。
5.在测试管理中测试用例或测试套件页面中,可以分别执行测试用例和测试套件。
消息通知
更新时间: 2019-02-25 17:55
用户或者流水线执行完测试套、测试用例时,可以发送站内消息通知或者邮件通知。
创建测试用例
更新时间: 2019-02-25 17:55
背景信息
测试用例包含了用例基本信息和测试脚本两部分。基本信息用于管理和描述测试用例,测试脚本定义自动化测试步骤。
基本信息
用例名称(必填)、用例编号、用例标签、用例等级、责任人、归属目录、设计描述、前置条件、测试步骤、预期结果。
测试脚本
测试步骤、逻辑控制、测试参数。
3.输入用例名称,其他信息可以置空,单击“保存并编写脚本”,进入“编辑用例脚本”页面。
4.单击“+URL请求”,添加一个求测试步骤。
如果有被测接口的Swagger描述文件,可以导入描述文件生成脚本模板,基于脚本模板编排测试用例。
请先导入Swagger接口描述文件生成脚本模板,详见生成脚本模板。
选择脚本模板,拖拽脚本模板卡片或单击脚本模板卡片的+,添加至测试步骤。
按照脚本模板输入请求参数、请求头、检查点。
表1 配置项说明
配置项
描述
请求头
预置了常见的HTTP请求头信息,如Accept、Content-Type等,如图1所示。
确定请求头名称后,输入请求头的值。如果预置的请求头不满足需求,可以手工输入请求头名称,详见请求头。
图1 设置请求头
请求体
请求体是接口请求需要传递的消息(报文),支持JSON、表单两种格式。
JSON格式下,JSON编辑器可以自动格式化显示JSON、校验JSON语法,如图2所示。
图2 JSON请求头
表单格式下,支持文本和文件两种类型(文件类型不支持调试)。文本类型设置参数名和值,文件类型设置参数名和文件,如图3所示。
图3 表单请求头
5.配置测试阶段。
测试用例包括三个阶段:准备阶段、测试阶段、销毁阶段。
准备阶段实现测试前置条件的准备;测试阶段实现接口的性能测试;销毁阶段实现准备阶段和测试阶段测试数据的释放或恢复。
说明:
准备阶段和销毁阶段仅执行一次并不会被每个指定的虚拟用户执行;测试阶段会被每个虚拟用户执行。
准备阶段(可选):准备测试阶段需要的前置条件的数据,如果没有前置条件,可以忽略此阶段。
通过调用接口的方式初始化前置条件,如果前置条件的数据需要在测试阶段中引用,可以使用参数传递将数据参数化后供测试阶段引用,详见参数传递。
测试阶段:定义核心测试步骤测试接口的功能,测试阶段中的测试步骤可以引用准备阶段定义的参数传递。
销毁阶段(可选):为了不影响其他测试或者下一次测试,建议在每次测试结束后清理测试环境数据,恢复测试环境的初始状态,销毁准备阶段创建的数据。
如果没有数据需要销毁,可以忽略此阶段。通过调用接口的方式销毁数据,销毁阶段的测试步骤可以引用准备阶段定义的参数传递。
6.配置性能测试用例加压策略和KPI检查点。
性能测试具备三种加压策略
按给定的虚拟用户数和执行时长爬升加压。默认爬升时间30秒,爬升阶梯数5次,以1000虚拟用户数、1分钟执行时长为例,在第6、12、18、24、30秒时运行的虚拟用户数分别为200、400、600、800、1000,然后以1000虚拟用户数持续执行1分钟。
按给定的虚拟用户数和执行时长直接加压。当设置爬升时间为0秒时,运行此加压策略,在0秒时创建出所有虚拟用户数,然后持续运行指定的时长。
按给定的虚拟用户数和执行次数加压。使用此加压策略时,在0秒时创建出指定的虚拟用户数,每个虚拟用户以指定的执行次数运行测试用例。
KPI检查点
用于判定当前测试用例执行成功或者失败,KPI检查点可以组合使用,具有以下KPI检查点,指标说明如表2所示。
表2 指标说明
指标项
释义
平均响应时间
响应时间计算用户从客户端发起一个请求到接收到服务器端返回响应报文所耗费的时间。平均响应时间指一段时间内所有事务响应时间的平均值。不同行业和业务的TPS经验值不同:互联网电子商务或消费类应用在500毫秒以下;金融应用1秒以下为佳;普通网站在3秒以下。
平均吞吐量
并发量除以平均响应时间,服务器每秒处理的请求数,用来衡量一个系统性能的重要指标。1000 TPS代表被测系统在每秒可以处理1000个请求。不同行业和业务的TPS经验值不同:互联网电子商务10000TPS-100000TPS;互联网小型网站50TPS-100TPS;互联网中型网站100TPS-500TPS。
成功率
检查点通过的请求数/所有请求数。
TP90
所有的响应时间按照由小到大的顺序排队,排在第90%位置的时间,用于评估90%请求的响应时间情况。
TP50
所有的响应时间按照由小到大的顺序排队,排在第50%位置的时间,用于评估50%请求的响应时间情况。
7.配置完各项信息,单击“保存”,测试用例编写完成。
调试测试脚本
更新时间: 2019-02-25 17:55
编写测试用例后,需要检查是否符合用例的设计预期,可以通过调试功能做验证。在编写测试用例时,需要及时调试验证用例编写是否正确。
2.查看调试日志。调试用例执行成功或者失败都会有信息提示,如果失败,请查看具体的调试日志。
如果调试的接口比较多,想查看某个接口的调试信息,可以单击测试步骤的成功或者失败标志,调试日志框自动定位至对应的日志。
生成脚本模板(可选)
更新时间: 2019-02-25 17:55
脚本模板是DevCloud云测-接口测试的一个独特功能。脚本模板封装了接口的基本定义,只需要根据模板输入测试数据就可以创建出接口测试用例。
通过导入接口Swagger描述文件可以生成脚本模板。一个脚本模板对应Swagger中的一个接口定义,基于脚本模板可以可视化编排测试用例。
脚本模板和Swagger接口描述中字段的对应关系如下。
脚本模板属性
Swagger接口定义属性
名称
默认使用operationId,可在设置中配置使用summary。
路径
schema + / + basePath + path
请求参数:hostURL
host
其他请求参数
parameters
步骤:
在测试-性能测试-脚本模板页面,单击“导入Swagger文件”,选择本地要上传的Swagger文件,然后选择放置脚本模板的文件夹,单击“确定”。
请求头
更新时间: 2019-02-25 17:55
接口测试预置了HTTP协议的常用请求头。在“请求头”标签页中,输入要填写的请求头信息,如图:
测试参数
更新时间: 2019-02-25 17:55
合理的测试设计要求分离测试逻辑和测试数据,实现测试逻辑的最大化复用,增强测试用例的可维护性和投入产出比。例如不同测试环境的URL域名是一种独立于测试逻辑,和测试环境相关的测试数据。测试参数管理这些测试数据。
性能测试中的测试参数分为两类:全局参数、局部参数。
全局参数
全局参数使用范围是当前项目的测试用例,如测试步骤的参数、检查点、变量、URL等都可以引用全局参数。
全局参数引用形式为“ 参 数 名 ” , 如 参 数 名 为 “ h o s t n a m e ” , 则 可 以 使 用 “ {参数名}”,如参数名为“hostname”,则可以使用“ 参数名”,如参数名为“hostname”,则可以使用“{hostname}”来引用该参数。
局部参数
局部参数使用范围是当前测试用例,如测试步骤的参数、检查点、变量等都可以引用局部参数。
局部参数引用形式为“ 参 数 名 ” , 如 参 数 名 为 “ h o s t I p ” , 则 可 以 使 用 “ {参数名}”,如参数名为“hostIp”,则可以使用“ 参数名”,如参数名为“hostIp”,则可以使用“{hostIp}”来引用该参数。
参数引用
URL、请求头的值、检查点的值、请求参数支持引用全局参数或局部参数。全局参数引用方式为$ 全 局 参 数 , 局 部 参 数 引 用 方 式 为 {全局参数},局部参数引用方式为 全局参数,局部参数引用方式为{局部参数}
内置参数
更新时间: 2019-02-25 17:55
内置参数是将HTTP/HTTPS响应的对应部分参数化,以供检查点和参数传递调用,在编写测试步骤时会频繁使用到。详细说明如表1所示。
表1 内置参数列表
说明:
如果内置参数支持多级取值,例如body为{“result”:{“appId”:12}}时,则取appId的格式为 b o d y . r e s u l t . a p p I d , 如 果 r e s u l t 是 数 组 格 式 则 为 {body}.result.appId,如果result是数组格式则为 body.result.appId,如果result是数组格式则为{body}.result[i].appId,其中,i为非负整数。
参数传递
更新时间: 2019-02-25 17:55
参数传递是提取接口响应结果的某一部分,命名为参数,供后续测试步骤参数化调用。
说明:
参数传递需要在前序测试步骤定义,后续测试步骤使用。
1.在前序测试步骤中,在“参数传递”页签中创建要传递的参数。参数传递用到内置参数功能,请参考内置参数了解如何使用内置参数。
2.在后续测试步骤中,通过${参数名}方式引用前序测试步骤创建的参数传递。
测试检查点
更新时间: 2019-02-25 17:55
背景信息
测试检查点又名断言,通过检查接口响应是否符合预期,判定系统是否满足预期。
示例
在“检查点”页签,输入测试检查点的属性、比较和值定义测试检查点。检查点的属性用到内置参数功能,请参考内置参数了解如何使用内置参数。
示例:
${code} == 200:检查请求响应码是200。
${body}.item.name equals cat:检查响应体JSON字段item.name 字符串值为cat。
检查点参数说明如下:
属性:被检测字段,如请求响应码、请求响应体、请求响应头,可分别使用内置参数 c o d e 、 {code}、 code、{body}、 h e a d e r 代 替 , 支 持 嵌 套 取 值 , 如 {header}代替,支持嵌套取值 ,如 header代替,支持嵌套取值,如{body}.item.name。
比较:支持数字、字符串、JSON对象比较,类型比较等多种比 较符,详见表1。
值:检查点期望值。
重试次数:如果测试接口调用不通,重试的次数,支持0-10的整数。
重试间隔:重试调用接口之间的时间间隔,支持0-60000的整数。
逻辑控制
更新时间: 2019-02-25 17:55
逻辑控制包含等待时间、判断、循环,用于编排测试场景。
等待时间
如果执行某个测试步骤后需要间隔一段时间再继续后续测试步骤,可以使用等待时间。
在脚本编辑页面,单击“等待时间”,添加等待时间,支持0-60000的整数。
判断
如果需要根据前序测试步骤的结果决定后续需要执行的测试步骤,可使用判断。
单击“if判断”,添加判断逻辑,输入if判断条件,在分支中添加后续测试步骤。判断分支中可添加测试步骤、判断、分组、等待、循环、测试关键字。
说明:
If判断使用Java语言编写if判断条件,支持引用局部变量和传递参数,支持||和&&操作符。如:${id} > 0 && ${name}.length() > 0。
循环
单击“循环”,添加循环逻辑,设置循环次数。循环中可添加测试步骤、判断、分组、等待、循环、测试关键字。
测试关键字
更新时间: 2019-02-25 17:55
背景信息
测试关键字来源于关键字驱动的测试方法,是特殊类型的测试用例。测试关键字用于封装常用测试逻辑,可以被多个测试用例调用实现逻辑复用。
在测试设计时,常常会遇到有一些相同的前置步骤或者测试逻辑。如果每一个测试用例中都编写这些步骤,重复工作量很大,并且难以维护。测试关键字可以帮助复用这些测试步骤。测试关键字是特殊类型的测试用例,可以单独执行,也可以嵌套在普通测试用例中。
操作步骤
1.在用例列表中选择一个测试用例,单击“更多操作 > 设置为关键字”将此用例设置为测试关键字。
2.在用例编辑页面中,单击“添加关键字”,选择添加要使用的测试关键字。
说明:
测试关键字不能在引用它的测试用例中修改,可点击点击放大打开测试关键字编辑页面修改。修改测试关键字后,引用它的测试用例将使用修改后的测试关键字。
参数传递
测试用例和被引用测试关键字之间可以使用参数传递。
1.在测试关键字中设置参数传递,参数传递将被引用它的测试用例使用。
2.在普通测试用例中添加测试关键字。
3.在普通测试用例中引用测试关键字生成的参数传递.
加压策略
更新时间: 2019-02-25 17:55
性能测试具备以下三种加压策略:
按给定的虚拟用户数和执行时长爬升加压。
默认爬升时间30秒,爬升阶梯数5次,以1000虚拟用户数、1分钟执行时长为例,在第6、12、18、24、30秒时运行的虚拟用户数分别为200、400、600、800、1000,然后以1000虚拟用户数持续执行1分钟。
按给定的虚拟用户数和执行时长直接加压。
当设置爬升时间为0秒时,运行此加压策略,在0秒时创建出所有虚拟用户数,然后持续运行指定的时长。
按给定的虚拟用户数和执行次数加压。
使用此加压策略时,在0秒时创建出指定的虚拟用户数,每个虚拟用户以指定的执行次数运行测试用例。
KPI检查点
更新时间: 2019-02-25 17:55
测试用例调试成功后说明测试用例已经编辑成功,此时可以在测试用例编辑界面中设置KPI检查点信息。
KPI检查点用于判定当前测试用例执行成功或者失败,KPI检查点可以组合使用,具有以下KPI检查点。
指标说明如表1所示。
表1 指标说明
指标项
释义
平均响应时间
响应时间计算用户从客户端发起一个请求到接收到服务器端返回响应报文所耗费的时间。平均响应时间指一段时间内所有事务响应时间的平均值。不同行业和业务的TPS经验值不同:互联网电子商务或消费类应用在500毫秒以下;金融应用1秒以下为佳;普通网站在3秒以下。
平均吞吐量
并发量除以平均响应时间,服务器每秒处理的请求数,用来衡量一个系统性能的重要指标。1000 TPS代表被测系统在每秒可以处理1000个请求。不同行业和业务的TPS经验值不同:互联网电子商务10000TPS-100000TPS;互联网小型网站50TPS-100TPS;互联网中型网站100TPS-500TPS。
成功率
检查点通过的请求数/所有请求数。
TP90
所有的响应时间按照由小到大的顺序排队,排在第90%位置的时间,用于评估90%请求的响应时间情况。
TP50
所有的响应时间按照由小到大的顺序排队,排在第50%位置的时间,用于评估50%请求的响应时间情况。
创建测试套件
更新时间: 2019-02-25 17:55
测试套件是一组测试用例的集合。测试用例用于验证功能是否符合预期,测试套件把一组相关的服务于同一个目的的一批测试用例组织起来,例如某一个模块的测试用例、某一个执行环境的测试用例、某一个版本的测试用例,等等。
操作步骤
1.在测试-性能测试-测试套件页面,单击“新建套件”,创建测试套件。
2.输入测试套件名称,其他属性可以置空,单击“保存”创建测试套件。
4.单击“更多操作 > 添加用例”选择用例添加到此测试套件中。
执行测试用例
更新时间: 2019-02-25 17:55
1.进入测试-性能测试-测试用例页签,单击待执行的测试用例所在行的点击放大,弹出“测试执行报告”界面。
2.待有数据输出时,数据信息将会以图表的方式显示。
如果在执行过程中您想停止执行当前测试用例,可以单击页面右上角“停止”,会终止本次执行。如果停止按钮消失则说明您本条测试用例已经执行完成了。
测试报告展示了最大虚拟用户数、成功率、平均吞吐量、平均响应时间、最大(最小)响应时间、TP90、TP50指标,具体指标说明可参考产品介绍-性能测试-名称解释。
虚拟用户数(Virtual Users,VM)
虚拟用户是性能测试工具模拟出的并发用户,虚拟用户数就是执行性能测试时最大的并发用户数量。注册用户数、在线用户数、并发用户数三个成比例递减,递减比例与待测系统的业务相关。
平均响应时间(Return Time,RT)
响应时间计算用户从客户端发起一个请求到接收到服务器端返回响应报文所耗费的时间。平均响应时间指一段时间内所有事务响应时间的平均值。不同行业和业务的TPS经验值不同:互联网电子商务或消费类应用在500毫秒以下;金融应用1秒以下为佳;普通网站在3秒以下。
平均吞吐量(Transaction Per Second,TPS)
并发量除以平均响应时间,服务器每秒处理的请求数,用来衡量一个系统性能的重要指标。1000 TPS代表被测系统在每秒可以处理1000个请求。不同行业和业务的TPS经验值不同:互联网电子商务10000TPS-100000TPS;互联网小型网站50TPS-100TPS;互联网中型网站100TPS-500TPS。
成功率
检查点通过的请求数/所有请求数。
TP90
所有的响应时间按照由小到大的顺序排队,排在第90%位置的时间,用于评估90%请求的响应时间情况。
TP50
所有的响应时间按照由小到大的顺序排队,排在第50%位置的时间,用于评估50%请求的响应时间情况。
执行测试套件
更新时间: 2019-02-25 17:55
1.进入性能测试主界面,单击测试套件跳转至测试套件界面,您将会看到已创建的测试套件,单击要执行测试套件后的点击放大图标,弹出测试执行报告界面。
2.待有数据输出时,数据信息将会为您以图表的方式显示。如果在执行过程中想停止执行测试套件,可以单击页面右上角停止。如果停止按钮消失则说明您测试套件已经执行完成了。
测试报告展示了最大虚拟用户数、成功率、平均吞吐量、平均响应时间、最大(最小)响应时间、TP90、TP50指标。
具体指标说明如表1所示。
表1 指标说明
指标项
释义
平均响应时间
响应时间计算用户从客户端发起一个请求到接收到服务器端返回响应报文所耗费的时间。平均响应时间指一段时间内所有事务响应时间的平均值。不同行业和业务的TPS经验值不同:互联网电子商务或消费类应用在500毫秒以下;金融应用1秒以下为佳;普通网站在3秒以下。
平均吞吐量
并发量除以平均响应时间,服务器每秒处理的请求数,用来衡量一个系统性能的重要指标。1000 TPS代表被测系统在每秒可以处理1000个请求。不同行业和业务的TPS经验值不同:互联网电子商务10000TPS-100000TPS;互联网小型网站50TPS-100TPS;互联网中型网站100TPS-500TPS。
成功率
检查点通过的请求数/所有请求数。
TP90
所有的响应时间按照由小到大的顺序排队,排在第90%位置的时间,用于评估90%请求的响应时间情况。
TP50
所有的响应时间按照由小到大的顺序排队,排在第50%位置的时间,用于评估50%请求的响应时间情况。
性能测试报告
更新时间: 2019-02-25 17:55
待测试数据全部获取到之后将会在测试执行报告中显示执行结果信息。
表1 测试报告说明
结果项
说明
最大虚拟用户数
当前最大的并发用户数。
平均响应时间
平均相应时间=总请求数/总请求次数。
平均吞吐量
平均吞吐量=并发量/平均响应时间。
90分位响应时间和50分位响应时间
指在一个时间段内,统计该接口每次调用所消耗的时间,并将这些时间按照从小到大进行排序,取第90%和50%那个值作为90分位响应时间和50分位响应时间。
结果
成功/失败表示验证测试得到的数据是否满足设置的KPI检查点要求。
测试用例结果
更新时间: 2019-02-25 17:55
在性能测试-测试用例界面,单击已经执行完的测试用例项的点击放大图标,可以查看执行历史结果信息,还可以单击某条执行历史后的详情查看该次执行的结果信息。
测试套件结果
更新时间: 2019-02-25 17:55
在性能测试-测试套件界面,单击已经执行完的测试套件项的点击放大图标,可以查看执行历史结果信息,还可以单击某条执行历史后的详情查看该次执行的结果信息。
消息通知
消息通知功能可以在执行完测试用例或测试套后通过发送站内消息或者邮件的形式告知用户执行的结果信息。
在性能测试-设置界面,根据需要选择消息通知类型,通知会在执行完测试用例或测试套后发出。
更新时间: 2018-12-28 17:21
本章主要介绍DevCloud云测相关方法论、最佳实践、案例等,具体参见如下链接:
【摘要】 一个用户叫好的产品除了优秀的产品设计、精妙的架构设计,还离不开产品质量的把关者和守门人–测试工程师。测试工程师依据产品设计和规格测试软件,拦截质量缺陷。完整的测试过程经过几个阶段:分析测试需求、制定测试计划和策略、编写测试用例、执行测试用例、复查缺陷修复、编写测试报告。测试工程师在这个过程中经常会遇到一些影响测试效果和测试效率的问题,比如:软件测试常见问题 …
软件测试常见问题
缺乏工具有效规范地管理团队的测试任务、测试进度和产品质量状况
测试资源投入不均衡个别模块测试投入过多或过少导致投入产出比不稳定
团队使用敏捷和精益开发模式没有及时把新增或变更的需求和设计通知到测试工程师导致漏测或误测
开发工程师抱怨测试工程师提交的缺陷描写不细致比如没有复现步骤导致沟通成本增加
缺陷修复后开发工程师没有通知测试工程师导致缺陷复查不及时
测试工程师手工维护测试报告工作量大并且容易出错
测试管理服务内置最佳测试方法和实践
如何轻轻松松避开这些坑呢测试管理内置了软件测试的最佳方法和实践帮助团队有效沟通协作高效高质量完成测试工作包含
需求驱动的测试管理
测试用例和需求、缺陷的追溯管理
测试执行管理
测试需求变更管理
测试覆盖率管理
测试进度管理
自动化测试管理
缺陷模板管理
自动填写缺陷复现步骤
实时测试报表
个人测试仪表盘
BabyWebStore示例介绍测试管理最佳测试方法和实践
下面以一个简单的电商网站BabyWebStore为例介绍如何高效完成测试工作。
垂直领域电商网站BabyWebStore完成产品立项开发团队刚刚组建完毕产品总监带领团队以精益创业的理念小步快跑开发产品每个迭代交付一个MVP最小可用的产品然后邀请一些早期用户做内测收集反馈不断迭代改进。下图是BabyWebStore产品规划可以看到很多特性定义粒度仍然很大没有做细化但同时个别特性已经细化到用户故事的粒度。迭代1交付第一个MVP仅有4个用户故事支持用户和商户的手机验证码注册、商户上架简单商品、用户简单搜索商品。测试团队在迭代1的任务就是测试验证开发工程师的交付物符合这4个用户故事定义的功能范围并且没有明显的缺陷和体验问题。
图 1使用精益MVP方式开发BabyWebStore产品迭代1交付4个用户故事
图 2使用精益MVP方式开发BabyWebStore产品迭代1交付4个用户故事
需求驱动的测试管理
需求驱动的测试管理就是以需求为标尺衡量开发工程师的交付结果验证是否符合需求。优点是测试活动有的放矢目标明确测试任务容易拆分。主要实践为基于需求创建测试用例完成测试设计在测试管理中有两种方式。
第一种方式在测试管理追溯视图中基于需求设计测试用例首先选择迭代1过滤出本迭代的的需求如用户使用手机号和验证码完成注册然后在需求下创建3个测试用例每个用例覆盖一种用户场景
用户管理_用户注册_用户使用正确的手机号和验证码完成注册
用户管理_用户注册_用户使用已经注册的手机号注册提示已注册
用户管理_用户注册_用户使用格式非法的手机号注册提示手机号格式不正确
图 3追溯视图下基于需求设计测试用例
第二种方式在项目管理中为需求创建测试用例
图 4需求详情中查看、新建测试用例
方式一是在测试管理中更适用于测试团队使用。方式二是在项目管理中更适用于在没有专门测试团队的情况下开发人员自测试或交叉测试自己管理测试用例。两种方式效果一样仅需使用其中一种方式创建测试管理、项目管理两边均显示需求和用例的关联关系。
测试用例和需求、缺陷的追溯管理
测试团队的核心工件是测试用例测试需求是测试的上游工件缺陷是测试的下游工件。三种工件有效地关联起来可以帮助测试人员快速准确完成测试需求分析、测试用例设计、缺陷管理、缺陷复查并可以帮助开发人员透明地快速了解缺陷的背景信息。
测试用例和需求的追溯管理上节中谈到的需求驱动的测试管理中实质上就是创建了需求和测试的双向追溯关系由用例出发可以追溯到需求由需求出发可以追溯到用例。以BabyWebStore中测试用例用户管理_用户注册_用户使用正确的手机号和验证码完成注册和需求用户使用手机号和验证码完成注册为例在多个视图中均可以方便地查看测试用例和需求之间的追溯关系点击需求或者测试用例查看上下文信息
图 5用例视图中展示测试用例关联的测试需求或关联/取消关联需求
图 6测试用例详情中展示关联的测试需求或关联/取消关联需求
测试用例和缺陷的追溯管理测试人员执行测试用例提交缺陷系统会自动创建测试用例和缺陷的双向追溯关系由测试用例可以追溯到缺陷反之亦然并且缺陷自动关联为需求的子工作项。
在BabyWebStore例子中测试工程师执行测试用例用户管理_用户注册_用户使用正确的手机号和验证码完成注册发现获取不到手机验证码提交了一个缺陷用户管理_用户注册使用手机号注册新用户收不到验证码。系统自动建立了测试用例、缺陷、需求三者之间的追溯关系开发人员从缺陷中查看关联的测试用例即可以了解测试上下文信息快速定位缺陷问题。缺陷自动设置为需求的子工作项免除手工关联工作帮助开发团队有序地管理缺陷。
图 7用例视图中展示测试用例的缺陷
图 8用例详情中缺陷列表展示提交的缺陷
图 9 缺陷自动关联为需求的子工作项
测试执行管理
测试执行管理就是管理测试用例和测试套件的执行过程和执行结果。测试执行结果记录了测试执行的执行人、执行时间、实际测试结果、缺陷等信息。
测试需求变更管理
测试需求变更管理就是当测试需求发生变更时及时有效地通知受变更影响的干系人测试用例执行者、测试用例设计者采取对策。需求变更各式各样比如需求的规格发生变更、需求的设计发生变更、开发转测时间延期。需求变更按照影响程度大小可以分为不同级别如果测试需求变更不及时通知测试工程师就会造成功能漏测或者无效测试开发工程师和测试工程师之间产生扯皮问题影响团队士气和效率。比较大规模的团队一般会有专门的变更管理系统这样的系统在规范化流程的同时也降低了团队组织运作的弹性和敏捷力。
在测试管理中测试需求变更通过消息通知传播测试工程师可以根据自己需求按需订阅消息和处理测试需求变更。以BabyWebStore为例迭代1接近尾声测试团队已经完成需求用户使用手机号和验证码完成注册的测试工作准备发布首版测试报告。此时产品创始人告知美国人Dan希望评估产品原型做天使投资因此产品总监在迭代1增加了产品增加英文页面的需求并更改了需求用户使用手机号和验证码完成注册范围添加了支持境外手机注册的要求。测试团队如何管理需求用户使用手机号和验证码完成注册的范围变更呢实际工作中产品经理根据市场和用户反馈经常提一些临时需求或需求变更。需求的每次变更操作都会被记录并发送消息通知。当产品总监更新需求用户使用手机号和验证码完成注册后在相关测试工程师的视图中此需求右上角会出现小红点代表此需求有未处理的变更。
图 11测试管理追溯视图需求更新提醒
测试工程师点击小红点查看需求用户使用手机号和验证码完成注册的变更历史记录发现需求新增了支持境外手机注册的要求采取对策创建新的测试用例覆盖此变更。
图 12点击小红点自动定位到需求历史记录
测试工程师可以根据自己的需求打开或者关闭需求更新通知功能。
图 13需求更新提醒开关
测试覆盖率管理
测试覆盖率管理就是管理测试用例覆盖的测试范围。测试覆盖率=测试已覆盖的功能点/所有的功能点*100%。主要实践包括量化管理测试覆盖率识别测试用例覆盖的需求范围识别没有覆盖的需求点新增测试用例增加测试覆盖率识别对增加测试覆盖率无意义的测试用例。优点是可以帮助测试工程师把测试范围、时间、投入管理在可控范围内轻松确定哪些功能已经在测试范围内发现测试用例和测试需求之间的缺口作为指标帮助衡量测试质量及早发现缺陷。由此也可以看出需求覆盖率并不是越高越好需要测试工程师根据情况管理测试范围和测试强度。
测试管理提供开箱即用的需求测试覆盖率报表帮助测试团队管理者实时统计分析测试覆盖率。下图中显示迭代1中需求覆盖率为25%有3个需求没有测试用例覆盖1个需求有3个测试用例覆盖并且已经测试完成。针对没有测试用例的需求通知测试工程师创建测试用例增加测试覆盖率。在报表中选择某个模块如商品管理可以查看单个模块下的测试覆盖情况。
测试工程师日常在下列视图中工作可以查看自己负责的需求的测试覆盖率情况为需求增加测试用例提升覆盖率。
图 15追溯视图中管理需求覆盖率
测试进度管理
测试进度管理是使用项目进度管理方法管理测试进度。测试项目分为几个阶段每个阶段都有关键活动和交付物测试准备阶段要完成测试需求分析和测试用例的设计工作测试执行阶段要完成测试用例的执行开发工程师修复缺陷后测试工程师还要完成缺陷的复查和关闭。
测试管理报表提供了测试用例完成率报表、测试用例进度报表、需求测试进度报表帮助测试团队管理者实时管理测试进度。从报表可以看出迭代1中需求用户使用手机号和验证码完成注册的测试任务已经完成。
图 16测试进度报表
测试工程师日常在下列视图中工作可以查看管理自己负责的需求的测试进度。
图 17追溯视图中管理测试进度
自动化测试管理
自动化测试是DevOps和敏捷中的重要实践使用自动化测试才可以实现CI/CD全流程的自动化并且自动化测试可以大幅降低人工操作的重复劳动和差错率。测试管理服务集成了自动化接口测试管理后续还会集成更多自动化测能力例如软件开发服务最近在华为云华北区上线公测的性能测试另外文章做专门介绍。
自动化测试本质上和手工测试用例一样需要全流程的管理如设计用例、分配用例、需求跟踪、执行用例、缺陷记录、记录结果、生成测报告等。测试管理服务提供了全流程支持。
图18 管理接口测试用例
图19 根据新手引导熟悉两种方式创建接口测试用例的方式
图 20 编辑测试用例脚本
图 21 测试报告统一统计手工测试和接口测试用例
性能测试已经上线华为云华北区公测目前还没有和测试管理集成可以独立使用提供HTTP接口性能测试测试吞吐量、响应时间、TP90等接口性能指标支持测试时长、测试次数、梯度加压等多种加压策略支持最大3000虚拟用户数支持定义测试KPI支持邮件和消息通知
截图-性能测试.PNG
缺陷模板管理
软件开发服务中内置了缺陷模板团队可以根据流程定制缺陷模板内容。
测试工程师执行测试用例时创建缺陷系统会自动把测试用例的步骤和预期结果填写到缺陷的复现步骤开发人员接到缺陷一目了然知道如何复现缺陷。
自动化的测试度量
自动化的测试度量是指通过自动化技术收集和分析测试活动数据以报表的形式呈现测试团队活动概况指导测试团队持续改进测试活动并自动生成测试报告。自动化的测试度量实践主要包括实时展示测试覆盖率、测试进度、缺陷分布、测试工作量分布、实时测试报告测试团队管理者和测试工程师的关注点有所不同。自动化的测试度量可以提升测试管理的水平帮助管理者及时发现测试风险极大地降低测试统计的工作量。
测试管理内置了上述自动化的测试度量的最佳实践。以BabyWebStore为例测试覆盖率报表帮助及时发现了迭代1中的3个未测需求避免需求漏测。除了前几节已经介绍的报表能力测试团队管理者还可以
通过缺陷报表查看总体缺陷分布统计。从下图中可以发现迭代1中测出1个缺陷为一般级别。
通过缺陷报表查看每个模块的缺陷分布情况。从下图中可以发现迭代1中测出用例管理模块的1个缺陷为一般级别其他模块未发现缺陷。
通过用例通过率报表查看测试整体通过率。从下图中可以发现迭代1中完成了3个用例的测试工作均为成功。
通过成员报表查看每个成员提交的缺陷总数和严重级别分布。从下图中可以发现迭代1中有1名成员提交了1个缺陷。
通过成员报表查看每个成员名下的测试用例总数和进度分布。从下图中可以发现迭代1中有1名成员名下有2个测试用例其中1个用例新建未设计1个测试用例已测试完成。
自动化的测试度量
个人测试仪表盘
个人测试仪表盘展现测试人员日常关心的个人测试用例、提交的缺陷和统计信息帮助个人高效管理个人任务跟踪缺陷修复进展及时做回归测试。
个人测试仪表盘
总结
最后总结一下软件开发服务测试管理内置了测试管理的最佳方法和实践提供需求驱动的测试管理、测试用例和需求缺陷的追溯管理、测试执行管理、自动化测试管理、测试需求变更管理、测试覆盖率管理、测试进度管理、缺陷模板管理、自动填写缺陷复现步骤、实时测试报表、个人仪表盘等能力和特性。希望通过BabyWebStore演示配合相关的理念介绍能让您在测试管理方面有所收获。和BabyWebStore一样测试管理产品也使用MVP的方式在不断迭代演进后续会不断有新特性推出并增加自动化测试能力期待您的关注、使用和反馈。有任何问题和建议可以在讨论区留言讨论谢谢
体验地址https://devcloud.huaweicloud.com/testman/home
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:[email protected]进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
[干货分享]接口测试快速上手
用时约5分钟
简介:
本快速上手引导以Swagger Petstore的两个接口作为测试对象,介绍如何编写、执行HTTP接口测试用例,测试验证接口的功能。章节2实验准备介绍测试对象,即Swagger Petstore的两个接口,章节3.1介绍如何通过URL模式完成HTTP接口功能测试,章节3.2介绍如何通过Swagger模式完成HTTP接口功能测试。3.1和3.2使用不同模式完成一样的接口测试,可二选一操作,建议按3.1操作,然后快速浏览3.2以了解Swagger模式。
准备:
2.1 熟悉本上手引导的测试对象
Swagger Petstore项目是Swagger提供的一个样例Web项目,供开发者学习Swagger的功能,定义了一个Petstore服务器端实例,使用REST Service形式定义后端服务接口,运行在Swagger网站中。
本实验课使用到Swagger Petstore的2个接口:
2.2 了解Swagger接口描述文件
如不做2. HTTP接口功能测试 – Swagger模式,则可跳过本章节。
Swagger是一种广泛使用的开发API的工具组合,包含API描述规范和开发框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。Swagger接口描述文件基于OpenAPI标准描述REST接口,目前比较流行的是Swagger 2.0版本。下图是Swagger Petstore应用的的Swagger接口描述文件片段,描述了getPetById接口。Swagger Petstore的Swagger接口描述文件下载地址是http://petstore.swagger.io/v2/swagger.json
更多Swagger学习资源:
https://swagger.io/
http://petstore.swagger.io
快速上手内容:
3.1 HTTP接口功能测试 – URL模式
简介:
此实验将带领创建一个接口测试用例,包含两个测试步骤(两个接口请求),脚本验证Swagger Petstore AddPet接口在正确输入的情况下是否成功添加Pet、是否可以通过GetPetById接口获取此Pet。
难度:
容易
步骤:
创建测试用例
说明:本引导均使用DevCloud新版页面,请从以下入口切换至新版页面。
注册登录DevCloud云测首页 https://devcloud.huaweicloud.com/testman/home,点击项目列表某个项目进入项目;如果没有项目,请先创建项目。
在“新建测试用例”窗口中输入名称和编号(或仅输入名称,由系统自动生成编号),点击“保存并编写脚本”,保存后系统自动打开“脚本编辑页面”
例如:
测试用例名称:Petstore_AddPet_正确输入
测试用例编号:Petstore_AddPet_001
创建接口测试请求
在测试步骤的URL输入框中输入AddPet接口的URL http://petstore.swagger.io/v2/pet
点击测试步骤左上角GET旁边的下拉按钮,修改HTTP请求方法为POST
添加请求头Content-Type:application/json
点击“请求体”,添加如下请求体
{
“id”: 1111111,
“category”: {
"id": 0,
"name": "string"
},
“name”: “doggie”,
“photoUrls”: [
"string"
],
“tags”: [
{
"id": 0,
"name": "string"
}
],
“status”: “available”
}
内置参数和测试检查点
点击“检查点”添加检查点 c o d e = = 200 , 验 证 请 求 响 应 码 等 于 200 。 说 明 : {code} == 200,验证请求响应码等于200。 说明: code==200,验证请求响应码等于200。说明:code是DevCloud接口测试的内置参数,代表请求响应码。鼠标放在右上角?号图标上可查看测试检测点的具体说明。DevCloud内置参数列表见https://support.huaweicloud.com/usermanual-testman/testman_ug_00008.html
调试接口测试请求
点击“调试”按钮,调试测试脚本
调试结束后系统显示调试结果,包含请求的URL、Request Header、Request Body、Response Body、Response Code、Response Header信息。检查调试信息,验证编写的测试脚本符合预期。
参数传递和响应提取
6. 在“脚本编辑页面”中,点击“+URL请求”新建测试步骤按钮,添加第二个测试步骤。
说明:此步骤将添加一个GET请求至Swagger Petstore的GetPetById接口,获取上一个测试步骤中创建的Pet,在测试检测点中验证接口返回的是期望的Pet。
点击“+URL请求”新建测试步骤按钮,添加一个新的测试步骤。
在测试步骤请求URL中输入http://petstore.swagger.io/v2/pet/${petId}
说明:此URL中的 p e t I d 将 使 用 D e v C l o u d 接 口 测 试 的 参 数 传 递 功 能 。 在 实 际 测 试 中 , 当 后 序 的 测 试 步 骤 依 赖 前 序 的 测 试 步 骤 的 输 出 时 , 需 要 使 用 参 数 传 递 。 此 实 验 步 骤 中 , U R L 中 的 p e t I d 依 赖 于 前 序 测 试 步 骤 创 建 的 P e t 的 I d , 因 此 使 用 参 数 传 递 , 即 把 前 序 测 试 步 骤 的 R e q u e s t B o d y 中 的 i d 参 数 化 为 p e t I d , 后 序 测 试 步 骤 可 以 在 U R L 、 检 查 点 值 等 处 使 用 参 数 引 用 p e t I d 。 点 击 前 序 测 试 步 骤 的 “ 参 数 传 递 ” , 添 加 以 下 参 数 传 递 的 定 义 , 参 数 类 型 L o n g , 参 数 名 p e t I d , 熟 悉 {petId}将使用DevCloud接口测试的参数传递功能。在实际测试中,当后序的测试步骤依赖前序的测试步骤的输出时,需要使用参数传递。此实验步骤中,URL中的petId依赖于前序测试步骤创建的Pet的Id,因此使用参数传递,即把前序测试步骤的Request Body中的id参数化为petId,后序测试步骤可以在URL、检查点值等处使用参数引用petId。 点击前序测试步骤的“参数传递”,添加以下参数传递的定义,参数类型Long,参数名petId,熟悉 petId将使用DevCloud接口测试的参数传递功能。在实际测试中,当后序的测试步骤依赖前序的测试步骤的输出时,需要使用参数传递。此实验步骤中,URL中的petId依赖于前序测试步骤创建的Pet的Id,因此使用参数传递,即把前序测试步骤的RequestBody中的id参数化为petId,后序测试步骤可以在URL、检查点值等处使用参数引用petId。点击前序测试步骤的“参数传递”,添加以下参数传递的定义,参数类型Long,参数名petId,熟悉body.id
说明:与 c o d e 一 样 , {code}一样, code一样,{body}也是DevCloud接口测试的一个内置参数,代表HTTP Response Body请求响应体。如果响应体格式为JSON,则可以使用JSON操作符提取JSON字段,如${body}.id提取响应体JSON的id字段。DevCloud内置参数列表见https://support.huaweicloud.com/usermanual-testman/testman_ug_00008.html
在第二个测试步骤中添加请求头Accept:application/json,要求接口返回JSON格式的Response Body
在第二个测试步骤中添加两个检查点,第一个检查点验证Response Code为200,第二个检查点验证Response Body内容是否符合期望。第二个检查点中再次使用到了步骤1中声明的参数,作为检查点的比较值。
说明:检查点是测试用例或脚本中验证测试输出结果是否符合预期的表达式,也称测试验证点或测试断言。DevCloud接口测试内置30多个检查点比较操作符,详见https://support.huaweicloud.com/usermanual-testman/testman_ug_00009.html
点击“调试”,验证编写的测试脚本符合预期。
点击“返回”按钮,返回接口测试用例列表,在列表中可以看到刚创建的测试用例。
点击此测试用例的“执行”操作,可以执行测试用例。
用例执行完毕后,点击此测试用例的“查看执行历史”,可以查看执行记录和日志。
点击此测试用例名称,可以编辑测试脚本。
总结:至此,一个简单的包含两个测试步骤(两个接口请求)的自动化测试脚本即编写完成,脚本验证AddPet接口在正确输入的情况下是否成功添加Pet、是否可以通过GetPetById接口获取此Pet。
思考:
![在这里插入图片描述](https://img-blog.csdnimg.cn/2019050315573210.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4u
3.2HTTP接口功能测试 – Swagger模式
简介:和3.1相同,此实验将创建一个接口测试用例,包含两个测试步骤(两个接口请求),脚本验证Swagger Petstore AddPet接口在正确输入的情况下是否成功添加Pet、是否可以通过GetPetById接口获取此Pet。与实验1的区别是,本实验通过基于Swagger接口描述文件创建测试步骤。
难度:中等
实验步骤:
2. 点击项目顶部菜单栏中的测试->接口测试,进入接口测试页面。
3. 点击“脚本模板”页签下的“导入模板”
前提准备:如果没有Swagger Petstore的Swagger接口描述文件,请打开浏览器访问http://petstore.swagger.io/v2/swagger.json,作为文件保存到本地电脑。
在“导入脚本模板”对话框中,点击“选择文件”,选择保存的Swagger Petstore接口描述文件,点击“确定”导入。
导入后,Swagger Petstore的接口描述文件中的每个接口生成一个脚本模板,基于这些脚本模板可以为测试用例快速创建测试步骤。脚本模板名称对应Swagger文件中的operationId,路径对应接口path。
如果希望使用Swagger文件的接口描述的summary作为脚本模板名称,可以在【设置】->【功能开关】中切换
效果如下
4. 点击“测试用例”页签下的“新建”按钮,新建测试用例
5. 在“新建测试用例”窗口中输入名称和编号(或仅输入名称,由系统自动生成编号),点击“保存并编写脚本”,保存后系统自动打开“脚本编辑页面”
例如:
测试用例名称:Petstore_AddPet_正确输入_2
测试用例编号:Petstore_AddPet_002
从左侧脚本模板中搜索“addPet”(Add a new pet to the store)和“getPetById”(Find pet by ID;Returns a single pet),拖拽或点击“+”图标添加至右侧空白区域,添加为测试步骤。
6. 在“addPet”测试步骤的“body”字段中填入创建Pet的JSON文本,此文本对应addPet接口POST请求的Request Body。
{
“id”: 1111111,
“category”: {
"id": 0,
"name": "string"
},
“name”: “doggie”,
“photoUrls”: [
"string"
],
“tags”: [
{
"id": 0,
"name": "string"
}
],
“status”: “available”
}
点击“检查点”添加检查点 c o d e = = 200 , 验 证 请 求 响 应 码 等 于 200 。 说 明 : {code} == 200,验证请求响应码等于200。 说明: code==200,验证请求响应码等于200。说明:{code}是DevCloud接口测试的内置参数,代表请求响应码。鼠标放在右上角?号图标上可查看测试检测点的具体说明。
点击“调试”按钮,调试测试脚本
调试结束后系统显示调试结果,包含请求的URL、Request Header、Request Body、Response Body、Response Code、Response Header信息。检查调试信息,验证编写的测试脚本符合预期。
7. 在“getPetById”测试步骤中,设置petId参数的值为${petId}
说明:${petId}将使用DevCloud接口测试的参数传递功能。在实际测试中,当后序的测试步骤依赖前序的测试步骤的输出时,需要使用参数传递。此实验步骤中,参数中的petId依赖于前序测试步骤创建的Pet的Id,因此使用参数传递,即把前序测试步骤的Request Body中的id参数化为petId,后序测试步骤可以在参数、检查点值等处使用参数引用petId。
点击前序测试步骤的“参数传递”,添加以下参数传递的定义
在第二个测试步骤中添加两个检查点,第一个检查点验证Response Code为200,第二个检查点验证Response Body内容是否符合期望。第二个检查点中再次使用到了步骤1中声明的参数,作为检查点的比较值。
点击“保存并调试”,验证编写的测试脚本符合预期。
点击“返回”按钮,返回接口测试用例列表,在列表中可以看到刚创建的测试用例。
点击此测试用例的“执行”操作,可以执行测试用例。
用例执行完毕后,点击此测试用例的“查看执行历史”,可以查看执行记录和日志。
点击此测试用例名称,可以编辑测试脚本。
总结:至此,基于Swagger接口描述文件,创建了一个简单的包含两个测试步骤(两个接口请求)的自动化测试脚本,脚本验证AddPet接口在正确输入的情况下是否成功添加Pet、是否可以通过GetPetById接口获取此Pet。
更多功能,如接口测试关键字、全局参数、局部参数、分环境管理全局参数、测试套件、逻辑操作、流水线驱动的持续接口测试,请参阅云测帮助文档中的接口测试相关介绍https://support.huaweicloud.com/cloudtest/index.html 或产品中的页内帮助
众所周知,近10年IT领域有两个关键的风向转变,传统IT向云计算转变,传统瀑布和迭代开发模式向敏捷开发模式转变。这两个转变促成了DevOps产品交付模式的出现。互联网行业竞争激烈,许多公司专注于产品和商业模式的快速迭代创新,期望通过DevOps快速交付产品,缩短产品的上市周期。
华为DevOps模式下的软件测试体系的分享主要由 “测试对象的识别、测试组织与流程的演变、测试工具与技术的应用、测试管理和自动化测试”四个领域的关键内容组成。
一、测试对象的识别
软件测试首先需要关注测试对象,不同种类的测试对象的测试策略和测试技术会有显著区别。测试对象即有传统的Web服务、移动APP,也有新兴的微服务和IoT设备。
测试对象的识别
移动APP
Android和iOS手机客户端依然是互联网toC创业的首选产品模式。移动App可以分为Web App、混合App和本地App三种模式,2016年以React Native为代表的技术又带火了移动跨平台开发。跨平台开发可以帮助开发者复用大部分代码,但依然无法解决让开发者头疼的Android系统碎片化问题。移动兼容性测试仍然是针对Android机型碎片化的主要测试手段。
Web服务
B/S结构的Web服务依然是很典型的IT产品交付形式,尤其是面向企业客户的产品。同时很多遗留IT系统仍然使用SOA的架构方式。对新系统而言,前后端分离是B/S结构的标配。后端无论采用什么语言和框架,和前端的接口基本都是RESTful化的,甚至一些框架可以帮助生成Swagger标准的接口描述文档。MVC和MVVM模式的普及使得前端架构模式化,最重要完成了分层化,配合Jasmine等JavaScript单元测试框架,让前端代码质量不再是焦油坑。
微服务
微服务架构被普遍认为是一种比分布式单体架构更优的架构模式,可以降低服务耦合度,减轻服务器资源浪费,提升交付和运维效率。微服务之间采用API的调用方式降低了服务的耦合度,微服务框架如Spring Boot对Swagger的内置支持也提高了微服务RESTful接口的标准化水平,这些都提升了服务的可测性。
微服务数量多,每个微服务职能独立,每个微服务使用独立流水线作快速交付,测试模式和传统单体大服务架构有显著区别,需要的不是一个大而全的测试工具,而是小而精、快的敏捷自动化测试工具。
物联网设备
物联网市场发展迅速,特别是智能家居、车联网、可穿戴设备、智慧工厂等领域。共享单车最近非常火热,其车锁和定位装置就是典型的物联网终端。物联网终端内置实时嵌入式系统,收集传感器数据做边缘计算,并通过Wi-Fi、4G、NB-IoT等接入方式连接手机设备或者云端服务。物联网设备运行环境苛刻,并且会涉及个人隐私数据甚至生命安全、工厂和基础设施的安全运行等,因此防黑客侵入的安全测试和防意外事故的遍历测试和压力测试等对物联网产品至关重要。
二、测试组织和流程的演变
公司的业务决定了公司的组织和流程。根据康威定律,开发团队的组织结构决定了产品架构。互联网公司专注于创造市场需要客户满意的产品,同时需要根据市场和政策环境及时调整产品竞争策略。产品的发布周期越来越短,产品需求频繁发生变更,产品架构频繁发生重构。这些都对测试活动和产品质量保证提出了巨大挑战。以上挑战决定了DevOps模式的测试组织和流程明显区别于传统敏捷模式:
测试活动的质量目标发生变化
测试活动的质量目标由单纯验证产品功能需求、非功能需求扩展为保证客户满意和产品的业务可续。测试团队会站在用户的角度考察产品的易用性和可用性,同时会监控生产环境的PV、UV、峰值吞吐量等关键指标,并纳入测试场景设计。
DevOps的闭环敏捷模式
敏捷不仅仅体现在开发和测试活动中,业务面也使用敏捷的流程,形成闭环的敏捷。DevOps会向前连接市场团队和产品经理,向后连接客服团队,形成Market-Product-Develop-Operation-Customer的闭环敏捷价值链。产品信息的透明快速流动对敏捷的成功至关重要。测试人员会和产品经理同时获得到来自市场的产品反馈,这些反馈会变成测试需求融入测试活动。
QA和开发的角色融合
在两个披萨原则的团队中,全栈程序员端到端地负责产品的开发、测试和运维,承担了QA和运维人员的角色。极客风格的全栈程序员倾向于使用自动化的测试框架。自动化测试可以覆盖的越来越多,解放出来的手工测试人员会向开发转型。
自动化的持续集成
持续集成的自动化程度越来越高,每个公司的实践会有不同,借助Jenkins等CI工具可以实现从代码提交到自动单元测试再到构建打包的持续集成,甚至和自动化部署、自动化测试打通。在持续集成链条上,自动化测试将覆盖开发环境、测试环境、类生产环境和生成环境上的测试。
测试左移
产品经理使用业务语言描述产品需求,开发人员使用程序语言完成开发,双方对需求的理解有时会产生偏差。BDD的方式可以帮助开发人员和产品经理对需求达成一致的理解,配合TDD的开发方式可以保证开发结果满足需求预期。
三、测试技术的应用
产品架构的分层模型决定了测试金字塔依然有效。通过单元测试、服务和API测试、性能测试、前端测试、移动App测试的组合可以覆盖B/S架构和云服务+移动客户端形式产品的测试。DevOps模式下测试自动化水平高,通过集成流水线完成和CI/CD打通的持续测试。一些技术发展为自动化测试的效率和质量提升提供了利器。
但是现在Selenium还有一些缺点,例如使用Selenium需要一定的编程能力,因此就限定了使用人员角色,不熟悉编程的产品经理和验收测试人员只能手工做验收测试。另外如果前端页面频繁变动,页面变动之后就得修改测试脚本,这种情况脚本维护成本大。
事实上没有一种测试类型是能够100%胜任产品测试的,前端自动化测试更适合针对相对稳定的页面做回归测试和冒烟测试,对覆盖不到的可以通过API级别测试或者手工测试来补充覆盖。
容器化
Docker为代表的容器生态系统发展迅速,容器集群管理系统Docker Swarm和Kubernetes可以帮助统一部署、管理、维护Docker集群。Jenkins等CI工具也提供了对Docker的支持。由于Docker可以方便地将运行时环境连同应用一并打包到镜像中,因此可以快速创建和复制标准化的测试环境,并且保持测试环境和开发环境一致性。
Swagger
Swagger 作为设计、构建和文档化RESTful API的工具,其OpenAPI标准已经成为事实上的RESTful API定义标准。在Swagger Editor中,基于YAML语法定义RESTful API就可以自动生成API描述文档。一些框架如Spring Boot也提供了对Swagger的原生支持。Swagger描述文档可以作为前后端分离开发中的接口“契约”。测试人员可以把Swagger描述文件当作接口需求开发API测试。
资源编排和自动部署工具
测试环境管理分两个层面,一个是环境的标准化,另外一个是环境管理的自动化。产品从开发到上线一般经过开发环境、测试环境、类生产环境、生产环境。每一个环境的差异都可能产生未知问题。手工搭建和管理测试环境费时并且易出错,测试人员需要求助于开发人员获取必要的操作系统信息、环境变量、数据库和中间件版本信息、配置脚本和安装步骤等才能顺利地搭建起一套测试环境。在环境统一这一层面,环境编排器可以帮助统一定义各种环境,保持标准化、可配置和易维护。在环境管理自动化这一层面,可以通过一些自动化管理工具完成批量系统设置,批量程序部署,批量运行命令等。华为云软件开发服务(DevCloud)的部署服务就为用户提供了基于Ansible的虚机和容器部署能力。
云化的压力测试和移动APP测试
压力测试作为非功能性测试的重要一环,在传统模式下主要考量的是应用服务器与数据库的最大承载能力,在云环境下增加了对云主机弹性伸缩的能力测算。移动APP测试主要解决的是碎片化终端下的功能、性能及兼容性覆盖测试,主要考量的是覆盖的机型范围及如何高效自动化完成整体测试,形成全面的分析报告。
四、测试管理和自动化测试
测试用例的管理是所有测试的基础,在测试的不同阶段(如回归测试、冒烟测试)都需要围绕测试用例进行校验,通过“需求-任务-用例-缺陷追溯”各环节的迭代来确保需求的测试覆盖率,并提供测试验收报告。自动化测试帮助大幅提升测试效率、稳定性和反馈速度。
华为云软件开发服务(DevCloud)云测和移动应用测试提供一站式云端测试平台,覆盖测试管理、性能测试、接口测试、移动应用兼容性测试,简单、专业、高效,助力软件研发全生命周期的持续自动化测试保障。
了解华为云DevCloud云测和体验请访问 https://www.huaweicloud.com/product/cloudtest.html
五、总结
华为云DevCloud是集华为研发实践、前沿研发理念、先进研发工具为一体的研发云平台,为开发者提供研发工具云服务,让软件开发简单高效。