测试应该如何处理跟开发之间的“敏感”关系?

简介: 测试从业者,打交道最多的就是开发,而测试和开发之间的关系在行业内被称为‘天敌’。最近部门内有些产品线成员和开发同事在协作之间也是双方抱怨不断,为此形成此文,算是给大家一些思路参考。 **作为测试工程师,你知道要怎么更好地来处理跟开发之间的关系么?其实对于存在这种所谓的‘敌对’关系,并不难理解。

测试从业者,打交道最多的就是开发,而测试和开发之间的关系在行业内被称为‘天敌’。最近部门内有些产品线成员和开发同事在协作之间也是双方抱怨不断,为此形成此文,算是给大家一些思路参考。

作为测试工程师,你知道要怎么更好地来处理跟开发之间的关系么?
其实对于存在这种所谓的‘敌对’关系,并不难理解。

从整个产品研发的角度看,开发是产品的制造者,产品就相当于他的‘孩子’,而测试的工作是去找这个“孩子”身上的毛病。相信,没有一个人喜欢别人对自己的孩子各种挑错。
因此,开发和测试的这种“敌对”属性是在所难免。而在日常的工作中,相信大家经常能看到如下的一些对话。

几个测试人员下班走在路上,抱怨数落白天开发的种种“罪状”:

  • 每次提bug,开发都让会让清数据、清缓存、重启机器,三两下把bug整不见了,等到bug复现不出来,就说看吧,不能复现,不修复了!或者就说自己本地是好的,质疑测试的版本不对,再不然就说用户不会这么操作,不用修复,反正就是想方设法不想修这个bug!
  • bug一开始明明能稳定复现,但开发一直放在那里不管,等过了一段时间后,环境被破坏了,测试版本升级了,又让测试来复现这个bug,浪费时间重新搭环境不说,bug还经常不能复现了,然后又说不能复现所以bug就不修复了。
  • bug修改完,啥说明交待都没有,不说清楚根本原因和影响模块,我们怎么做回归测试啊!

除了测试对开发的行为有抱怨,同样的,开发对测试的抱怨也不少,相信大家经常会听到一些开发对测试的槽点:

  • 测试整天搞一堆流程和文档,要开发提供这个,提供那个,开发写代码都没时间,还哪有那么多时间整这玩意啊!
  • 靠,查半天,又是一个无效的bug,测试到底有没有搞清楚需求?
  • 不懂代码。。。

上面列举的槽点其实说的还较为保守,不管是测试对开发,还是开发对测试的槽点太多了,有的太过于血腥,就不一一列举了,欢迎读者留言补充。
看着这些相信作为研发技术人员(不论是开发或是测试)的你肯定不陌生。毕竟立场不一样,职责不一样,出现这样的分歧和矛盾也无可厚非。

但是,如果每天工作在这样的工作氛围里,不止影响我们每天的心情,而且肯定也会影响我们的工作效率。
那,到底可以做些什么来改善这种敌对关系?或者说可以从哪些方面来融洽开发和测试之间的工作氛围,以下概括为四个方面

image

1. 提高自身核心业务能力

首先一点,还是得从自身做好做起,测试工程师应该要提高自己的核心业务能力,让开发挑不出来毛病,从而对你产生信任甚至叹服。

关于这一点举一个曾经工作的案例(身边的同事)。
当时是一个刚毕业不久的小姑娘,加入公司不久,做事特别仔细谨慎,提bug也会经过再三确认才会提单。
当时公司的开发老大是个特别强势的人,声音大、气势强,一说话能把人吓懵的那种。

事情的起因,是因为小姑娘提了一个bug,在她的环境下面再三确认过,是个能够稳定复现的严重bug,所以标记为了严重级别,并且指派给开发。
对应模块的开发人员大致定位了一下,没有复现出来就反馈给了他的老大。然后这个开发老大,就气势汹汹的过来测试办公区,趾高气昂地跟我(当时我作为测试负责人)说: “你们这边的测试怎么提bug的,是不是bug自己有没有搞明白啊?现在开发的环境里就是OK的,肯定是你们的测试环境的问题或者操作方法的问题!下次搞清楚再提bug,不要浪费开发的时间...”
这些话说的一点都不客气,矛头全指向测试这边,不留任何余地。(当然作为当时测试负责人的我,先不管事情谁对谁错,先得维护测试这边不被欺负,我也回怼过去。。。)

但整个事情,小姑娘却没有去争吵,没有去理论,而是在她自己的环境下再次成功的把这个问题复现出来,然后再去找到开发,帮助他搭建同样的环境,告知稳定的复现步骤,将bug在他的环境下复现,并且协助开发把问题定位出来,只需要他们修改对应的代码就可以了。
从这次事情之后,整个开发团队对小姑娘的态度明显改善了,不仅不再趾高气昂的指点和质疑她的工作,而且在要修改bug的状态(非修复状态)的时候也会先跟她确认,得到准许之后才做相应状态的修改。
因此后面她的工作开展顺利了很多。
所以,要避免落人口舌,请先做好自己。测试做好自己的首要前提,就是必须要提高自己的业务能力:
◆ 一方面,要充分的熟悉被测产品,理解产品的逻辑和实现,在这个基础上,不仅能提高你的测试技能和工作效率,而且在被开发质疑的时候,也能有扎实的产品业务知识做后盾。
◆ 另一方面,要规范自己的工作的输出。例如保证各种测试文档(测试计划,测试用例和测试报告等)的质量,可以经得起开发、产品等各部门的审核。
比如保证输出的bug质量,编写bug的描述和步骤清晰,bug的严重级别定位准确,以及定位日志和现场截图齐全,不给开发留下挑刺的余地。
只有先提高了自己的工作质量,才可以用同等的标准去要求开发,才能在守住测试的立场的同时,也赢得对方的尊重。

image

2. 提高自身技术能力

其次,测试人员需要提高自己的技术能力,包括测试的技能,以及测试相关的技术能力和知识领域

再给大家分享一个真实的故事,我原来有一个同事,也是做测试的,因为主要是做黑盒测试,起初她并不懂代码。
在项目工作过程中,她遇到一个极不愿意配合的开发,每次想更加深入地熟悉产品的功能实现和业务逻辑的时候,咨询开发,他都很不配合。
两个人争吵过,也互怼过,甚至双方领导调解过,但是都不见情形的改善。
没有办法,为了保证自己的测试任务能够按时按量的完成,她只能逼着自己去阅读产品的源代码。
虽然一开始都看不懂,但是她还是坚持,一边找资料,一遍咨询别人,最后终于把这个产品相关模块的代码都熟悉了。
在随后的测试过程中,遇到bug,她已经可以自己准确的定位出来是那一块代码的缺陷。
此后,再也没有听过她跟那个开发争吵了,因为她自己已经成为了那个最熟悉产品的人,不管从功能实现,还是代码逻辑,她都了然于心。(甚至有时开发都会来咨询她)
所以,测试工程师需要适当的有针对性的提高自己的技术能力,技术在手,无求于人。
那可以从哪些方面来提高:
◆ 第一,是测试的技能、测试流程以及各种测试方法的掌握,这些是测试工作的基础,所以这个是必须要掌握的。
◆ 第二,能熟悉至少一门语言,不管是Java,Python还是Go,掌握其中1-2个就可以。有了语言基础,测试可以更加深刻的理解产品的实现,也能够更加清楚的知道bug经常会出现的模块,能够对产品进行更加充分的测试。
◆ 第三,至少要掌握一种数据库的使用,测试人员离不开数据库的管理和操作,自己掌握了这方面的技能,就再也不用依赖开发,减少自己的被动性。
◆ 第四,熟悉系统的相关操作,如安装,配置,管理,对于Linux系统需要熟悉常用的操作命令,能在Linux下能安装和配置软件等。
总之,提高了自己各方面的技术能力,才能够在工作中充分发挥自己的主观能动性,不过分依赖开发,才能提高自己在开发心目中的专业性,赢得双方平等的待遇。

3. 提高情商、沟通能力

再者,测试工程师也要提高自己的情商,增强自己的沟通能力,懂得站在开发的角度思考问题,学会去尊重开发人员
作为测试人员,我们除了坚持自己测试的角度和立场之外,也要有同理心,学会站在开发的角度去看问题。
实际上很多冲突都是源于大家对需求理解不一样造成的,所以当测试和开发对一个bug持有不同观点的时候,不要率先很强硬的否定他,尝试解释为什么他理解的需求有不足之处。
找到一些可以站得住脚的论点,从用户角度出发,从安全性考虑,或者从易用性和友好性来看,说服开发接受测试的观点,而不是强加自己的观点给他们。
另外,平时工作之余大家可以多沟通,有机会就组织一些开发和测试双方参与的团建活动让大家彼此都熟悉一些,这样子很多时候面对熟悉的人,在反对对方的观点的时候会更加容易考虑一下对方的感受,只要气氛不对立,很多事情就可以商量了。
这些沟通技巧都是一个人情商的体现,这也是为什么很多公司招聘的时候都要求测试人员善于沟通和表达,高情商的表达和沟通方法,可以让我们的工作氛围少一些凌厉,多一些柔和。

4. 建立完善的管理流程

最后,在公司层面,还需要有一个完善的管理流程,通过流程控制来规范开发和测试部门的工作,同样可以很大程度上减少冲突的发生。
质量保证从来都不仅仅是测试人员的职责,而是需要整个团队齐心协力。
建立完善的流程,能够帮忙提高产品的质量。从测试的角度,又有哪些流程和规范可以值得参考的呢?

  1. 规范开发的提测报告,写明修复方法和bug的根本原因,帮助测试进行bug验证和回归测试;
  2. 规范开发处理的bug的过程,比如关闭bug之前必须要发邮件或IM通知跟测试确认,避免bug没有经过确认被擅自关闭而引发矛盾和冲突;
  3. 规范项目代码审核以及最后阶段的代码封禁,提高代码的质量以及降低发布最后阶段出现严重回归问题的几率。

各种流程的推行,虽然看起来很繁琐,但是严格执行起来,确实能够解决很多实质性的问题,帮助缓解很多开发和测试之间的尖锐冲突。
总而言之,虽然开发和测试之间存在着天然的‘敌对’关系,但是作为测试人员要树立好自己的定位,清楚的知道无论开发和测试,最终目的都是使项目高质量、高时效地完成。

并且只有开发和测试并力合作才能完成好一个项目。所以无论开发还是测试,大家都离不开彼此,测试工程师不是给开发工作挑刺找茬。更不是开发人员的附属品,需要在提高自己的同时,理性地处理和看待和开发的关系,共同营造一个良好愉快的工作氛围。

原文发表于作者公众号:【测试开发技术】,欢迎关注,第一时间获取测试技术干货。

目录
相关文章
|
1天前
|
IDE 测试技术 开发工具
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
在Python开发中,调试是提升效率的关键技能。本文总结了10个实用的调试方法,涵盖内置调试器pdb、breakpoint()函数、断言机制、logging模块、列表推导式优化、IPython调试、警告机制、IDE调试工具、inspect模块和单元测试框架的应用。通过这些技巧,开发者可以更高效地定位和解决问题,提高代码质量。
26 8
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
|
24天前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
56 1
|
25天前
|
存储 算法 C语言
用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容
本文探讨了用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容,旨在为开发者提供全面的指导和灵感。
43 2
|
2月前
|
测试技术 网络安全
什么是软件测试? 软件测试都有什么岗位 ?软件测试和调试的区别? 软件测试和开发的区别? 一位优秀的测试人员应该具备哪些素质? 软件测试等相关概念入门篇
文章全面介绍了软件测试的基本概念、目的、岗位分类、与开发和调试的区别,并阐述了成为优秀测试人员应具备的素质和技能。
271 1
什么是软件测试? 软件测试都有什么岗位 ?软件测试和调试的区别? 软件测试和开发的区别? 一位优秀的测试人员应该具备哪些素质? 软件测试等相关概念入门篇
|
1月前
|
安全 测试技术 持续交付
云计算时代的软件开发与测试:高效、灵活、可扩展
云计算时代的软件开发与测试:高效、灵活、可扩展
|
2月前
|
人工智能 监控 测试技术
云应用开发平台测试
云应用开发平台测试
78 2
|
2月前
|
存储 监控 网络安全
内网渗透测试基础——敏感数据的防护
内网渗透测试基础——敏感数据的防护
45 2
|
2月前
|
敏捷开发 测试技术
开发模型(瀑布、螺旋、scrum) 和 测试模型(V、W)、增量和迭代、敏捷(思想)及敏捷开发 scrum
文章详细介绍了软件开发过程中的不同开发模型(瀑布、螺旋、Scrum)和测试模型(V模型、W模型),以及增量和迭代的概念,最后阐述了敏捷思想及其在敏捷开发(如Scrum)中的应用。
129 0
开发模型(瀑布、螺旋、scrum) 和 测试模型(V、W)、增量和迭代、敏捷(思想)及敏捷开发 scrum
|
3月前
|
测试技术 持续交付 UED
软件测试的艺术与科学:平衡创新与质量的探索在软件开发的波澜壮阔中,软件测试如同灯塔,指引着产品质量的方向。本文旨在深入探讨软件测试的核心价值,通过分析其在现代软件工程中的应用,揭示其背后的艺术性与科学性,并探讨如何在追求技术创新的同时确保产品的高质量标准。
软件测试不仅仅是技术活动,它融合了创造力和方法论,是软件开发过程中不可或缺的一环。本文首先概述了软件测试的重要性及其在项目生命周期中的角色,随后详细讨论了测试用例设计的创新方法、自动化测试的策略与挑战,以及如何通过持续集成/持续部署(CI/CD)流程优化产品质量。最后,文章强调了团队间沟通在确保测试有效性中的关键作用,并通过案例分析展示了这些原则在实践中的应用。
94 1
|
3月前
|
测试技术 UED 开发者
软件测试的艺术:从代码审查到用户反馈的全景探索在软件开发的宇宙中,测试是那颗确保星系正常运转的暗物质。它或许不总是站在聚光灯下,但无疑是支撑整个系统稳定性与可靠性的基石。《软件测试的艺术:从代码审查到用户反馈的全景探索》一文,旨在揭开软件测试这一神秘面纱,通过深入浅出的方式,引领读者穿梭于测试的各个环节,从细微处着眼,至宏观视角俯瞰,全方位解析如何打造无懈可击的软件产品。
本文以“软件测试的艺术”为核心,创新性地将技术深度与通俗易懂的语言风格相结合,绘制了一幅从代码审查到用户反馈全过程的测试蓝图。不同于常规摘要的枯燥概述,这里更像是一段旅程的预告片,承诺带领读者经历一场从微观世界到宏观视野的探索之旅,揭示每一个测试环节背后的哲学与实践智慧,让即便是非专业人士也能领略到软件测试的魅力所在,并从中获取实用的启示。