当代码变更遇上精准测试的总结

Martech 代码变更遇上精细化测试的总结

需求背景:

敏捷模式下迭代频繁,回归测试时总是不知道变动的范围。Devlop 有的时候也不知道他改了哪些东西,影响到哪些节点,或者是很多人改的,彼此不知道。遇到有代码洁癖的,改了别人的代码,大家都不知道。通常情况是,要么测试范围定小了,遗漏了;要么测试范围过大,付出过多代价。每次回归,测试心里总没底,生怕漏了哪里。如何才能准确定位到变更范围呢?

项目测试过程的痛点:

1.迭代更新快,人力有限

2.多分支代码合入到主干分支,修改哪个文件哪个行,测试不可控。

3.代码更新影响哪些功能无感知

4.盲测,上线风险大

5.无法更加精准监控代码质量

6.不能做到高效精准,不可衡量ROI

解决方案:精细化测试探索

1流程图:

整体架构图

2录制自动化测试+phpcoverage 配合落地XDEBUG文件,解析覆盖率文件,生成文件-行号/函数-用例 映射关系表【phpcover_process.py】

XDEBUG_IP服务ip_DATE日期.txt 文件如下:

一个case涉及到的文件遍历明细
1个api->n个file->line_no集合->n个testcase集合
1个api->n个file->n个functionName->n个testcase集合

3基于git diff 针对版本号之间的差异化分析.【git_diff.py】

2.1过滤相关文件(phpunit,js,test文件,vendor公共库)

2.2记录当前代码分支版本号(分支-旧版本-新版本-系统-环境)

2.3针对新版本号和旧版本号 文件中行变化的明细入库(版本号-文件-旧行号-新行号-变更类型class fun)

diff 文件
项目-分支-旧版本-新版本-环境
版本号修改的文件(文件,旧行号,新行号,类,函数名,系统)

4生成命中的测试用例【down_accurate_case.py】

原理图:

待测json文件

生成需要执行的apiList 对应的caseId

5插桩-自动化测试(指定case_id顺序执行)-缺陷数量回写DB【accurate_runcase.py】

自动化测试执行日志
版本-执行的api-数据统计(执行数-发现bug数)
生成自动化测试报告

6统计精准测试效果数据统计【accurate_stat_image.py】

精准测试报告

7.最新跑完的测试覆盖率数据新增/更新/删除 文件-用例-行/函数 覆盖率关系表,形成闭环为下次精准测试做铺垫【phpcover_process.py】

总结

·精细化测试基于自动化覆盖率到达一定量的基础上去做比较有意义。

·通过这个探索能让我们更加深入的去了解被测系统及架构,在保障质量的前提下,在不断的版本迭代过程中更加高效、可靠、自信地制定合理的测试计划和执行我们的测试工作。

·被测系统php 语言+ git代码管理,暂不包含js的精准性测试,测试解析语言:python。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

精细化测试

1 篇文章2 人订阅

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Crossin的编程教室

听说你好不容易写了个爬虫,结果没抓几个就被封了?

近来知乎上如雨后春笋般冒出了大把大把的爬虫教程。这是好事,学了 Python 基础的同学们可以很轻松地搜出许多练手的例子。不过我不是针对谁,我是说网上绝大多数的...

30190
来自专栏腾讯技术工程官方号的专栏

计费监控优化系列:TDSQL监控优化

我们从两个阶段分别着手对TDSQL监控进行整合优化,阶段一:对现有的监控逻辑进行梳理,整理解决现有痛点。阶段二:引入新的监控算法,如趋势性算法、突变算法、推理算...

28630
来自专栏纯洁的微笑

微服务架构—服务降级

什么是服务降级?当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理或换种简单的方式处理,从而释放服务器资源以保证核心交易正常运作或...

22720
来自专栏Jaycekon

消息队列性能对比——ActiveMQ、RabbitMQ与ZeroMQ(译文)

Dissecting Message Queues 概述:   我花了一些时间解剖各种库执行分布式消息。在这个分析中,我看了几个不同的方面,包括API特性,易于...

78050
来自专栏JAVA高级架构

分布式架构--基本思想汇总

9510
来自专栏大数据架构

超大规模 Spark 集群灰度发布 CI CD

目前主流的代码管理工具有,Github、Gitlab等。本文所介绍的内容中,所有代码均托管于私有的 Gitlab 中。

26030
来自专栏存储

分布式架构—基本思想汇总

往期精选 在互联网大行其道的今天,各种分布式系统已经司空见惯。搜索引擎、电商网站、微博、微信、O2O平台。。凡是涉及到大规模用户、高并发访问的,无一不是分布式。...

240100
来自专栏PPV课数据科学社区

数据加学堂:大熊学python3爬虫–scrapy浅探(三)

? 在新手上路(三)贴过一段代码,就是爬取问吧里面的question 问题,answer回答,topic话题标签,source问题来自哪个板块。 有一种有一种...

30270
来自专栏Albert陈凯

一文读懂非关系型数据库(NoSQL)

一文读懂非关系型数据库(NoSQL) 本文共11000字****,阅读全文约需30分钟****。本文为大家解析非关系型数据库(NoSQL)。 前言 ---- ?...

71360
来自专栏腾讯IVWEB团队的专栏

ESLint 可共享配置发布,团队自定义 ESLint 规则新鲜出炉

为了更好的统一团队的 JS 编程风格和代码质量。feflow 官方经过调研和探索,终于迎来了ESLint 的解决方案,最核心的理念是:基于 eslint:rec...

42500

扫码关注云+社区

领取腾讯云代金券