Python开发代码测试框架, ? 支持场景单一、各异 基于Robot升级, 用于功能测试自动化书写, ? 公共问题被重复解决 关键字封装 环境准备、Mock及测试执行 ? 易用性和使用效率低 广泛用于手百等 广泛应用于商业平台检索端 ? 资源占用多 用户产品测试, 及大搜索等产品 ? 技术探索难以落地 后续融入ITP中 XTS 业务线自建平台 Robot + ITP ITEST 2015: 基于ITEST底层,集合各产品测试规范, 2012: 可视化用例开发与执行平台 Java开发代码测试框架, 配置化管理用例, Junit驱动测试执行 12万 10万次 43 205 曾广泛应用于商业平台 业务端产品 积累用例 日均测试量 覆盖部门 覆盖产品 ITP通用接口测试服务 ? ITP通用接口测试服务 - 能力概览 在线IDE 浏览器插件 API入口 序列化协议 X 传输协议 服务总线寻址 登录管理 HTTP/Socket/JsonRpc/Stargate/Protobuf/Mcpack/Dubbo … 连接池管理 API测试 API ES 参数传递 质量评估 序列测试 Mongo Redis 扩展函数 行为分析 Diff测试 Mysql Shell 数据驱动 用例检测 测试类型 原子操作 特性支持 度量驱动 ? ITP通用接口测试服务– 用例组织与编写 用例树: 扩展函数: 版本控制: 允许最小子目录粒 支持通用及产品线自定义扩展 支持用例的多版本 全局参数: 度并发执行, 函数,函数内可引用请求相关 控制,拉取、合入 支持按用例树目录的多层 支持单一环境测试 参数,可与传递参数、其他函 等 级参数配置,可使用传递 数嵌套使用 参数和扩展函数 及多环境Diff测试 ${ method} 复制与引用: 允许从已有请求复制 允许从模版复制或引 Step: 用于长流程时,组 织一组有业务意义 Operation: 数据驱动: 参数传递: 定义具体的操作, 替换参数占位符,如 支持Setup、Teardown及同一 包括API请求,Mysql、Redis、 $[abc], 设置多组执行 个Case内所有操作间传递数据 ES、Mongo访问,执行远程机器命 数据,实现用例的数据 ${操作名.response.a.b[x]} 驱动执行 ? ITP通用接口测试服务 – 用例执行计划 计划配置: 版本管理: 包括环境信息、并发配置、重 选择对应的执行版本 试、用例筛选、用例集合等配置 ? ITP通用接口测试服务– 检测与度量 用例检测: 支持通用规则的检测和自动修复 基本统计 能力评估 ? ITP通用接口测试服务 - 部署结构 Web-IDE Web-IDE Web-IDE Admin-Monitor 内存数据库 分发器 分发器 1.节点在线情况 2.可用资源情况,用于动态调度 ZK控制模块连接, Dataio 3.异常恢复 实现无状态节点 Dataio 离线 –执行包 机房A 机房B 机房C Web 执行器A 执行器A Thread Group 执行器 执行器B 执行器B 业务DB 日志 内存数据库 执行器C 执行器C 用于私有化项目测试 多租户,根据实际需要上线产品线执行器 测试智能化实践及收益 ? 智能化测试时代的新挑战 – 极致的成本与效率 现状: 稳定性、效果损失。激增的用例数,维护不及时, 高质量 都带来流水线的稳定性问题,并进而导致效果可信的问题, 形成恶性循环 业务诉求 低成本 高效率 现状: 现状: ? 发布周期:周期和质量保障手 保证高覆盖、高质量用例的前提下, 段是矛盾双方;大批量用例的 用例书写和维护成本变得不可接受, 执行,在流水线中的时间占比 自动化 『设计成本』与 『书写成本』, 越来越高 占用QA过多人力,20%~50% ? 智能化实践 – 用例书写效率提升 输入:参数约束 3 API模版 参数组合计算 Case 参数对象组合信息、参数约束 输入:前置的参数组合 输入:生成数据准备 识别器 参数流量聚类 1 参数类型与约束规则识别 数据逆向生成 ? API信息识别 ? 用例的生成 ? SetUp TearDown生成 ?识别访问地址等基本信息 ?计算最大入参覆盖的用例组合 ?识别Restful接口中的 Add/Delete操作, ?识别参数类型,特别是枚举类型 ?改进:计算过程中,考虑日志中聚类 自动生成数据准备 的识别,寻找可能的取值 得到的参数组合 ?基于SQL逆向生成, ?识别参数的分组信息 ?改进:计算过程中,考虑参数分组, 生成数据准备 避免生成大量无业务意义的参数组合 ?实时同步与变更提醒 ? 智能化实践 – 用例书写效率提升 – 算法 ? 树状组织 约束规则 ? 数组打平 归一后日志 预置组合 加入初始 分组A PSST TT-A - Ts-A 权重信息 Ts-A 组合权重 Top结果集-TT 初始化解空间Ts-A t- Ts-A 分组B t与Ts已有解均不重叠 分组A 分组B 分组C 权重 权重 权重 补全Ts-A,未覆盖的两 两组合 分组C 从Ts-A中去除TT-A 单原子组合Ts 值替换 20个接口 原生PSST 改进算法 结果集TT+Ts 分支覆盖 57% 55% 用例量 ~30 ~15 缺点 1.难以从业务理解 一定覆盖损失,但可 2.用例多 接受 ? 智能化实践 – 用例执行选择 ?过滤不规范用例 基准用例库 映射关系入库 新增用例准入 ?去除覆盖重复的用例 用例库C’ 用例相似度精简 ?去除不稳定的用例 用例库C’’ 用例生命周期管理 ?代码变更相关用例 执行用例集合 基于代码diff用例筛选 用例代码映射数据更新 生命周期运转 ? 智能化实践 – 用例选择执行 - 生命周期 New Unstable 一次失败 执行准入 多次成功 持续失败 Stable Death 自动检测 用例生命周期:准入 ? 智能化实践 – 用例选择执行 - 代码与用例关系 Setup 校验点请求 Teardown 智能策略中心 1)触发收集单个用例覆盖率数据 任务控制服务 7)向麒麟提交计算任务 ITP 算力 2)向被测环境发请求 iCode Kirin 覆盖率 被测服务 算子 稳定性 3)生成单个文件覆盖率中间文件4)获取与被测环境对应代码版本 8)获取覆盖文件后, 提交到川平台计算去重 执行时间 exec文件 HDFS 实现中 5)离线并行生成覆盖率文件 6)上传到HDFS 覆盖率文件 用例与覆盖率对应关系 ? 智能化实践 – 用例执行选择 – CI流程变化 原有方案 形成用例侧生态闭环 RD 全量用例 iCode Agile ITP 报告 ?与构建系统用例生态闭环 插件 计划 ?用例相似度精简自动运转 ?用例生命周期自运转 过滤筛选后集合中 引入用例智能化 ?用例和代码映射入库闭环, 为基于代码变 commitId 应用生命周期 重复和不稳定用例 更筛选不断积累数据,也为精准测试不断 修改计划并触发 CI脚本 ITP ITP_DB 提供基础数据 计划 关联用例集合 ?可扩展性强 commitId 获取用例集合 生命周期管理 ?策略与框架侧解耦,具备较强的可扩展性 主干最新commitId ?与构建系统无感知衔接感知衔接 Server端 客户端 用例相似度精简 变更代码 映射关系生成 用例/代码 映射库 ? 智能化实践 – 用例执行选择 – 收益效果 稳定性从Q2初60%提升到80+% 更少的时间投入 ,更多召回 ? 智能化实践 – 流程类测试优化 用例信息 相似操作以队列 形式附加保存, 转换为有向图 并记录与后置请 求的对应关系 深度遍历获取路径 前置操作完全一致 前置为写、后置为读操作 可优化建议 直接优化执行顺序 自动优化 ? 总结与展望 ? 参数生成: 依托算法,和信息补充,生成覆盖全面,具有业务意义的入参组合 用例 ? 数据准备: 生成 1.生成前置请求模版 2.Sql逆向生成 ? 断言生成: 空缺,是否可以基于项目历史数据,生成可能的断言 ? 寻找稳定、高质量、无重复的用例 ? 寻找紧与本次变更相关的用例 进行中:结合静态调用关系,发现Dom类语言变更与用例的 ? 流程类测试执行路径去重与优化

“原创力文档”前称为“文档投稿赚钱网”,本站为“文档C2C交易模式”,即用户上传的文档直接卖给用户,本站只是中间服务平台,本站所有文档下载所得的收益归上传人所有【成交的100%】。原创力文档是网络服务平台方,若您的权利被侵害,侵权客服QQ:3005833200 电话:19940600175 欢迎举报,上传者QQ群:784321556


请点击百度一下下载文库:API测试在智能化测试时代的探索与实践

1.《测试时代 API测试在智能化测试时代的探索与实践》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《测试时代 API测试在智能化测试时代的探索与实践》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/jiaoyu/161374.html