作为一个合格的测试工程师如何跟开发有效沟通?

news2025/1/1 21:49:58

测试人员每天的例行工作之一就是与开发沟通代码改动,并对改动进行功能回归,我们称之为测试范围确认。对于每个测试人员来说,可能都会遇到以下问题:

 

1、拿到一个代码改动后我首先做什么?

2、跟开发沟通时问些什么?

3、我该如何沟通才能问到自己想问的问题?才能更精确的得到回归范围?

4、担心自己问的问题太不搭调,被对方嘲笑怎么办?

5、跟开发沟通结束后,接下来该怎么做?直接按照开发说的去做吗?

老规矩,举例说明:

对话背景1:一天,武爷对浏览器的代码作了几笔改动。小强匆匆忙忙地看了一下代码变更之后,就跑去问武爷了…

Bad case(小强版)

小强:有一笔代码改动的地方,把一个auto指针, 改成unique智能指针。我了解到这两个智能指针都可以在对象销毁的时候自动释放内存。

(评语:目的不明确,导致对方不清楚你的来意)

武爷:不明白。。。

小强:就是说 auto_ptr 指针会在赋值时把自己所指向的内存块转移到另外一个指针中,而unique_ptr则不会,是这样吧?

(评语:还是没说明来意,关注点停留在技术细节上,对方仍然不明白来意)

武爷:不明白你说的是什么?

小强:就是代码改动的时候把一个auto指针换成了unique指针,这个指针的变动会有什么影响?

(评语:进入主题了,不过封闭式的提问,对方直接回答有或者没有就行,还是没能得到自己想要的答案)

武爷:你可以理解unique更安全,更换后没有太大的问题,那笔改动不用回归。

小强:。。。

Good case(小明版)

小明:在SVN上看到一笔改动,把一个auto_ptr 换成了unique_ptr, 我了解到的这两个指针,都能自动地释放内存,为什么要做这样的转换呢?

(评语:开题就把对方带到了自己想要谈的主题上,让对方知道我是来找你了解代码改动。接着,说了下自己提前了解到的情况并提出准备好的问题,这样能引导对方跟你思考同一个问题,有利于确认到较准确的回归范围。)

武爷:原来的auto是我们自己做的,unique_ptr 是VC11的,VC11已经有自动释放的指针了,我们就就没必要再自己做,直接使用系统提供的就好了。

小明:那这样改动会影响哪些范围呢?

(评语:与对方确认改动的影响范围,这种开放式的提问方式,能够让对方展开来谈论,有利于我们了解到更多内容。)

武爷:应该没有什么影响,要是出问题就崩溃了,看下主路径就行。

小明:那些指针是控制哪些对象的?

(评语:如果提前了解到更多的技术细节,也可以提前准备好疑问,沟通时提出来一起讨论来解答疑惑)

武爷:DC(设备绘图的)

小明:我们对浏览器界面主路径做测试,没有出现大的问题,比如崩溃,就没问题是吧?

(评语:好了,回归范围拿到了,最后就沟通得出的结论总结下,让双方达成一致。)

武爷:是的。

对话背景2:一天,开发添加了一个函数,在SVN上的changelog内容注释的是”添加了一段牛掰代码“,对于看不懂代码的测试童鞋要去找开发确认回归范围了。。。

Bad case(小M版)

小M:我看到了一笔代码改动,想跟你确认下,你看现在方便吗?

(评语:比较有礼貌,沟通时的礼貌用语,会让对方比较舒服)

开发:你说

小M:看到你添加在一段代码,但是这段代码不是特别明白,你看能稍微讲一下吗?

开发:我加的那一段?我加了好多代码。。。

小M:额,你打开SVN看看,我告诉你是哪一笔。

(评语:没有提前准备,需要让开发打开svn changelog查看,浪费了大家的时间)

。(此处打开SVN)

小M:就是这个改动

开发:哦,这个呀,这个你不用回归。这个没什么影响,功能上没什么大问题就行,不用回归。

小M:这个函数的作用是什么啊?

(评语:问到了函数作用,但是没有深入的接着问,导致获得的信息没有帮助)

开发:计算距离的,你黑盒上回归下没问题就行

小M:这个加了以后跟加之前有什么区别吗?

开发:更精确了。这个不用回归,我之前的改动与UI展现相关的没问题就行

小M:也就是说你这块改动是与UI展现、字体展现等相关的是吧?

开发:是的。

Good case1(NaNa版)

nana:想跟你确认下代码改动,你现在有时间吗?

开发:有时间,你说。

nana:刚才发到你QQ上的截图,就是那笔改动,你的注释是”加了一段牛掰代码“。我看了一下,不太了解你这段代码的逻辑,你能跟我讲一下吗?

(评语:说明来意,直奔主题)

开发:哦,这个呀,这个你不用回归。这个没什么影响,功能上没什么大问题就行,不用回归。

nana:那个代码本身的逻辑你能简单给我讲一下吗?我想了解一下

(评语:深入了解代码逻辑,因为了解到逻辑后,对后面的回归有帮助)

开发:函数本身是计算去一个最佳的距离

nana:什么距离呢?

开发:所有字体布局之间的距离

nana:我们浏览器的主框架?

开发:可以这么理解,所有的布局和字体之间的距离

nana:所有的布局?我们浏览器的UI包括很多,主框架区、对话框,还有气泡等等,是指这些吗?

开发:主框架

nana:是指主框架的收藏栏、地址栏、侧边栏等吗?

(评语:对待每个模糊的回答,能够细化问题,精准的确认影响范围)

开发:是的

nana:这个函数计算的UI距离是指哪些具体的UI呢?

开发:行间距和字体的间距,图片与字体之间的间距

nana:这段代码的逻辑调研过吗?能给我交接下吗?

(评语:明白自己的目的,以学习的心态再次要求开发讲解代码逻辑。这在完全不了解代码逻辑但又必须得了解的情况下是可取的,能避免漏掉细节)

开发:你一定要了解吗?那给你讲讲吧。

Good case2(小明版)

小明:请问有时间吗?跟你沟通下代码改动,确认下回归范围。改动内容已经截图发给你了。

开发:好的

小明:我看你注释的内容是”加了一段牛掰代码“,这段代码是做什么用的?

开发:哦,这个呀,这个你不用回归。这个没什么影响,布局上没什么大问题就行,不用回归。

小明:它会让布局不一样是吧?那它是做什么用的呢?

开发:它主要用于计算距离,一些布局的间距

小明:什么时候会使用呢?

(评语:了解具体的函数使用细节,包括作用、使用时机、使用范围等,有助于确认最后的回归范围,这些都建议提前做准备,有备无患)

开发:展示UI的时候,需要排版时就会调用它来计算间距

小明:是所有UI都要用到吗?

开发:可以这么理解

小明:这个跟DPI有关吗

开发:有,就是在高DPI下用来重新计算距离的

小明:哦,那就是在125%、150%DPI下用到是吧?

开发:是的

小明:那这个如果出问题的话,可能出什么问题呢?

开发:如果出问题,布局就错乱了

小明:那这段函数是咱们自己写的吗?

开发:是

小明:那是否需要我们做内部的调研,去针对性的做一些单测呢?

(评语:引导开发思考修改存在的隐患问题,并提出做单测的想法,提出了如果出问题会如何如何,这样开发会更加谨慎的去回答你提出的问题。)

开发:想做也行

小明:不会出问题吧?要是出问题我就找你哈~~哈哈哈

开发:那做一下吧

小明:那要做的话,请讲一下具体实现吧。

(评语:通过单测的要求,让开发讲解代码实现顺理成章)

开发:balabalabala。。。(讲实现)

小明:我再确认下,这个功能就是在浏览器高DPI下,UI布局展现时计算距离的,我们验证UI时,应该看一下所有的UI布局展现的正确性,包括在移动、刷新时候的UI展示都没问题就行吧?如果出现问题可能是错乱等问题,这个函数如果需要深入测试的话到时候会找你了解具体的代码实现。

(评语:最后,总结下双方的沟通结论,达成一致)

开发:好的

以下是测试范围确认流程的整体框架,以及每个阶段的实施建议,供大家参考。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/189861.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Cocos新手入门】cocos creator操作 canvas绑定脚本及通过代码操作label组件变化的方法

本篇文章主要讲解利用cocos creator操作 canvas绑定脚本及通过代码操作label组件变化的方法 作者:任聪聪 日期:2023年1月31日 本篇文章仅适合cocos 2.4.3引擎版本下进行练习,其他版本可参考只有写法不同。 基本的操作说明 步骤一、通过cocos…

OJ万题详解––木板上的蚂蚁(C++详解)

题目 题目描述 有一块木板,长度为 n 个 单位 。一些蚂蚁在木板上移动,每只蚂蚁都以 每秒一个单位 的速度移动。其中,一部分蚂蚁向 左 移动,其他蚂蚁向 右 移动。 当两只向 不同 方向移动的蚂蚁在某个点相遇时,它们会同…

MongoDB 数据库操作

场景: 已知广告点击数据的记录已经存在,数据统计在mongodb中,现在要统计广告列表pv和uv。 思路: 这个时候就想到mysql的聚合查询group、count、distinct,但是于是就找了好多文档,发现mongodb的语法和mys…

“易”起涨知识|一文告诉你数字化生产的优势

在信息化高速发展的时代,企业工厂的数字化转型已经不是想不想转的问题,而是必须得转的形势。 智慧工厂是现代工厂信息化发展的新阶段。是在数字化工厂的基础上,利用物联网的技术和设备监控技术加强信息管理和服务;清楚掌握产销流…

Dart语法学习-变量

一、 创建Dart File Hello, World void main() {print(Hello world); }Log: Hello world 二、变量 1.Dart 支持类型推断。 var name Voyager I;var year 1977;var antennaDiameter 3.7;var flybyObjects [A1, A2, A3, A4];var image {tags:[saturn],url:www.baidu,com};…

王道操作系统笔记(四)———— 进程同步与互斥

文章目录一、同步与互斥的概念1.1 同步与互斥的基本概念1.2 临界资源与共享资源1.3 独占设备与共享设备二、实现临界区互斥的基本方法2.1 软件实现方法2.1.1 单标志法2.1.2 双标志先检查法2.1.3 双标志后检查法2.1.4 Peterson 算法2.1.5 软件实现方法总结2.2 硬件实现方法2.2.1…

【电子通识】查找硬件学习资料的方法

做为一名硬件工程师,在工作中会经常遇到一些问题,这些问题最开始可能也并不知道是什么原因。对于这些异常现象,我们可能需要深入去了解电路原理或器件特性等方式,从原理上理解并解决。当再次遇到相同或相似的问题时,我…

Python爬虫2--数据解析方法:bs4库的使用和案例

目录标题数据解析1、BeautifulSoup库1.1 BeautifulSoup库入门1.1.1 BeautifulSoup类的基本元素:1.1.2 基于bs4库的HTML内容遍历方法1.1.3 基于bs4库的HTML格式化和编码1.2 信息组织和提取方法1.2.1 信息标记的三种形式:xml,json,yaml1.2.2 三种信息标记形…

360数据恢复如何操作?360安全卫士恢复误删文件的方法(详解)

3 60安全 卫士属于一款杀毒软件,这是很多人都知道的事情。但是你知道吗?3 60安全 卫士还有一个免费功能,就是文件恢复功能。 当文件被误删,电脑回收站又找不到,你可以尝试通过3 60里面的文件恢复功能来进行数据恢复。…

Leetcode:62. 不同路径、63. 不同路径 II(C++)

目录 62. 不同路径 问题描述: 实现代码与解析: 深度优先(超时): 原理思路: 动态规划: 原理思路: 数学方法: 原理思路: 63. 不同路径 II 问题描述&…

AcWing蓝桥杯AB组辅导课09、复杂DP

文章目录前言一、复杂DP例题例题1:AcWing 1050. 鸣人的影分身(线性dp)分析题解:DP例题2:AcWing 1047. 糖果(背包问题变形)分析题解:DP(01背包问题变形)例题3&…

静态库与动态库的生成与使用

一、库文件 预编译——>编译——>汇编——>链接(使用库)——>可执行文件 二、生成库:把大量的已经实现的代码打包起来 生成动态库: 1、将源码遍历汇编生成二进制指令 gcc -fPIC -c child.c -o child.o 2、将所有二进…

即时通讯开发之详解TCP/IP中的UDP 协议

UDP 是传输层协议,和 TCP 协议处于一个分层中,但是与 TCP 协议不同,UDP 协议并不提供超时重传,出错重传等功能,也就是说其是不可靠的协议。UDP 协议头2.1UDP 端口号由于很多软件需要用到 UDP 协议,所以 UDP 协议必须通过某个标志用以区分不同的程序所需要的数据包。端口号的功能…

C 语言零基础入门教程(二十一)

C 头文件 头文件是扩展名为 .h 的文件,包含了 C 函数声明和宏定义,被多个源文件中引用共享。有两种类型的头文件:程序员编写的头文件和编译器自带的头文件。 在程序中要使用头文件,需要使用 C 预处理指令 #include 来引用它。前…

Linux | 编辑器gcc/g++的使用【动静态库的认识】

文章目录一、对程序的认知 && 初识gcc1、程序是如何诞生的?2、gcc的初步认识3、如何使用gcc二、gcc逐步分析程序的翻译环境1、预编译【进行宏替换】2、编译【C语言——>汇编语言】3、汇编【汇编语言——>可重定位目标二进制文件】4、链接【生成可执行…

一篇文章学会写SQL

本篇文章主要讲如何写SQL,虽然我在之前有篇文章中写到过数据库的操作和概念,其中有讲到数据库和表的操作语句以及有哪些函数和查询关键字(本篇不赘述),但毕竟理解概念和会实践书写是两码事。。 身为一名测试人员&#…

证明:lim (x->0+) x^x=1

原式:lim⁡x→0xx\lim _{x\to 0^{}} {x^{x}}x→0lim​xx 根据公式1:u(x)v(x)eu(x)ln⁡v(x)u(x)^{v(x)}e^{u(x)\ln v(x)}u(x)v(x)eu(x)lnv(x)则原式可以化为lim⁡x→0exln⁡x\lim _{x\to 0^{}} e^{x \ln x}x→0lim​exlnx 接下来利用倒代换进行进一步计算。&#xff…

【USB】USB video class (UVC)相关概念学习

UVC协议 IAD 全称Interface Association Descriptor This is used to describe that two or more interfaces are associated to the same function. An ‘association’ includes two or more interfaces and all of their alternate setting interfaces. IAD用来描述由两个…

一次JVM垃圾收集全过程

目录 JVM堆内存分配 JVM垃圾收集完整过程(带图解) 在介绍垃圾收集过程之前,有必要先对JVM堆内存做一个回顾,因为讲垃圾收集主要针对的是堆内存。 JVM堆内存分配 在JDK1.8之前,JVM堆内存主要分为新生代、老年代和永…

Kafka和Flink双剑合璧,Confluent收购Immerok引起业内广泛讨论

2023年开年开源界就出了一个大新闻,1月6日Kafka的商业化公司Confluent创始人宣布签署了收购 Immerok 的最终协议,而Immerok是一家为 Apache Flink 提供完全托管服务的初创公司,其创始团队正是Flink的创始团队。 无论是Kafka还是Flink&#x…