作者:欧阳辰
作为一个测试老兵,经常听到有测试新人抱怨,需要和开发人员进行激烈的讨论,感觉像打仗一样。其实,测试人员和开发人员的战斗不仅仅在小公司有,在大型软件公司也是比比皆是。这种"战斗"不仅仅发生在开发周期的初期,也发生在开发过程中,甚至在产品发布后,很多产品质量问题的追责也会引入新的"战斗"。

作为一个老测试工程师,也聊聊开发人员和测试人员的战斗,谈谈自己的心得吧。
先说说战斗的种类。
1) 缺陷(Bug)属性之战:
对于一个缺陷,开发人员和测试人员有不同意见,例如,开发人员说是“建议”,测试人员说“代码缺陷”;开发人员说是优先级3的,测试人员说是优先级1的;开发人员说不能重现问题,测试人员说曾经出现,必须调查。
2) 产品指标目标之战:
对于一个产品达到什么要的指标,也是测试人员和开发人员讨论的热点。例如,测试人员说性能必须到达200毫秒,但是开发人员常反驳说500毫秒是合理的目标。虽然,在需求说明书中,产品经理规定了产品大的指标,但是一些执行的细节目标却没有仔细规定,这往往是开发人员和测试人员的战场。
3) 质量任务之战:
质量保证的任务有很多种,包括写单元测试,收集试验数据,搭建环境,功能测试,安全检查等等…. 那么这些任务究竟是如何安排的,是测试人员做还是开发人员做,不同公司有不同的文化,有不同的开发测试人员比例,导致其分工也不一样。有时,开发和测试对于一些任务的责任人也有着不同看法,这也往往会成为战斗焦点。
4) 代码质量之战
代码的质量的好坏,是否可接受也是在代码审查时经常讨论的,比如一些异常的处理,是否合理,覆盖面是否全面。
测试人员的战略和战术
很多测试人员在这些战斗中不容掌握主动,以下就是一个老兵的一些经验,希望能够帮助测试人员在战斗中更好的赢得主动,为高质量软件产品赢得胜利。总的来说,对于测试人员说,是保护用户的体验,因此有机会得到更多人的支持,换句话说,测试人员”不是一个人在战斗“。另外,”多算胜,少算不胜“,讨论前尽量多准备准备。
1)多引用用户体验,多引用竞争对手的数据作为论据
在讨论中,列举的论证时,如果测试人员的论据是以“我认为…..”,这种论据通常是不是很令他人信服的,因为开发人员也可以说”我认为…不是这样的..'’。因此,在讨论中,应该多引入用户体验的数据作为支持论据。另外,可以多多列举竞争对手的数据,也是很有说服力的。
举例来说,一个用户登录界面,产品需要3秒钟登陆了,测试人员认为很慢,开发人员认为可以接受。那么,测试人员可以指出,在这种设计下,用户体验很差的,用户需要更好的性能,同时可以列举一些竞争对手的登录时间作为参考。少说”我认为…..”,多说用户体验差的具体数据。
2)争取项目经理或则产品经理的支持
产品经理通常也是产品质量的坚决拥护者,因此产品经理通常都站在测试人员一边。如果在用户体验上,开发与测试人员的观点僵持不下的话,可以考虑将产品经理引入讨论,通常产品经理会支持更好的用户体验,而站在测试人员的一边。获取产品经理的支持,注意引入的次数与频率,如果引入过于频繁,有时容易导致开发人员的不满。
3)存同求异
对于一些非关键的争论点,例如,一些与产品质量没有本质影响的决定,测试人员可以与开发人员保持不同的观点。对于这些不同观点,不会影响项目的进展和产品的质量。
4) 速战速决
孙子言”兵贵速,不贵久“。测试人员的工作通常繁重,如果花大量时间和开发人员争斗,往往得不偿失的。其实大部分讨论,在前5分钟,双方都已清楚的表达了观点,列举了大部分的论据,因此5分钟后的大部分讨论,都是这些观点和论据的反复陈述,通常无法通过论据本身说服别人。因此,我提倡对于单个问题的讨论,不应该超过5分钟,测试人员应该控制节奏,5分钟内结束讨论。如果5分钟内仍然没有结论,测试人员可以主动结束这次讨论:对于原则性的问题,考虑另外收集更多的论据(数据),获得更多人的支持,另找时间再和开发人员继续讨论;对于可以权衡的问题,可以考虑相互让步,以获得双赢;对于一些小问题,可以考虑抓大放小。
好了,说了这么多,都是纸上谈兵。其实战斗的技巧主要是来源于实践,希望大家能够在战斗之后,仍然能保持一个好的心情,另外减少激烈讨论所花的精力,并且提高有效性。
分享到:
相关推荐
在这个项目中,你将利用C语言这一基础而强大的编程语言来创建一个游戏,主题是“死神vs火影”,这是一个深受动漫爱好者喜爱的对战题材。C语言虽然不像现代的游戏开发引擎那样提供了丰富的图形库和高级功能,但它能让...
本文将深入探讨一个基于iOS平台的游戏应用源代码——yeag123-TextFightConcept,它以3c357c5为特定版本。这个项目揭示了iOS游戏开发的核心技术、设计模式以及编程实践,对于学习和理解iOS游戏开发具有很高的参考价值...
【iOS游戏应用源代码——felixmo-RPG-0b69d3e.zip】是一个包含iOS游戏开发源代码的压缩文件,很可能是一个名为“felixmo-RPG”的角色扮演游戏的早期版本。从标签“ios”我们可以推断,这个项目是针对苹果公司的iOS...
标题中的“一个用谷歌机器学习算法识别人体姿势并用来控制GTA:SA鹞式战斗机飞行的代码”表明,这是一个结合了人工智能与游戏娱乐的项目。在这个项目中,开发者使用了谷歌提供的机器学习工具来训练模型,以识别人体...
本篇文章将深入探讨名为"shawbenWiki-WarGame-f6f748f"的开源项目,它是一个iOS应用的源码,旨在帮助开发者了解如何构建游戏,尤其是策略类游戏。通过研究这个项目,我们可以学习到许多关于iOS应用开发的知识点。 1...
《征途》是一款基于RPG(角色扮演游戏)概念制作的游戏,它将玩家带入一个充满冒险与挑战的世界。本资源包含该游戏的源代码,对于学习和理解RPG游戏开发具有很高的参考价值。以下是对游戏开发相关知识点的详细阐述:...
在iOS游戏开发中,开发者可能会使用Apple的SpriteKit框架,这是一个强大的2D游戏开发工具,支持动画、粒子效果、物理引擎等功能。或者,开发者也可能自定义了一个轻量级的游戏引擎,这将涉及到更底层的图形编程,如...
在当今的软件开发领域,一个高效能、高凝聚力的团队对于项目的成功至关重要。为了达到这样的效果,项目经理和团队领导者必须深刻理解并掌握软件开发团队管理的核心概念和实践策略。《软件开发团队的管理》这份PPT...
目前,该项目正处于开发阶段,意味着它可能包含了从基础框架到功能实现的各个层次的代码,对于学习游戏开发、自动化脚本编写以及熟悉《阴阳师》游戏逻辑的人来说,这是一个宝贵的资源。 首先,让我们从"Client"文件...
今天我们要讨论的是一个名为"Evoker"的独特项目——一个开源的卡牌战斗帮助器,它为玩家提供了全新的游戏体验。 首先,让我们深入了解"Evoker"的核心概念。这是一个专为卡牌决斗游戏设计的套牌处理程序,它允许玩家...
Cocos2d-x是一个开源的游戏引擎,广泛应用于2D游戏开发,而Lua则是一种轻量级的脚本语言,以其简洁易学、高效灵活的特点,常被用于游戏中的逻辑控制和数据管理。这本书籍将两者结合,为开发者提供了一条快速高效地...
- 在这个项目中,AI通过与环境的互动——即与其他角色的战斗——来学习最佳策略。 - 强化学习算法会根据游戏结果(如胜利、失败或平局)为AI的动作提供奖励或惩罚,帮助AI理解哪些行为会导致更好的结果。 5. **...
一个优秀的关卡设计能够吸引玩家并使他们沉浸在游戏的世界中,不断追求新的挑战和冒险。以下是一些关于如何进行优质游戏关卡设计的建议: 1. 故事叙述:关卡设计应与游戏的整体故事情节紧密相连,每个关卡都应该为...
1. **一个人在战斗——老系统维护** - **知识点:** 探讨了老系统维护面临的挑战及应对策略,如技术债务管理、性能优化等。 - **实践意义:** 维护好现有系统的同时,不断改进和完善,延长其使用寿命。 2. **兄弟...
《RPG_java_》是一款基于Java编程语言开发的经典角色扮演游戏(RPG)——魔塔的源码项目。在这个游戏中,玩家需要通过策略和思考来...对于想要从事游戏开发或对Java编程有兴趣的人来说,这是一个很好的实践和学习资源。
在游戏编程领域,"11。百姓故事"可能是指一个特定的游戏项目或者模块,这个项目的开发者分享了他在2008年暑假...对于希望学习游戏编程的人来说,这样的项目是一个很好的起点,可以从中学习到实际的游戏开发流程和技巧。
在"commandcenter-master"这个文件名中,"commandcenter"可能指的是游戏中的一个关键建筑——指挥中心,它在游戏策略中扮演重要角色,可能是AI机器人关注的重点之一。这个目录可能包含了与指挥中心相关的代码或资源...
本项目“LOL_2D游戏”是利用Qt库进行开发的一个小型游戏,旨在模仿热门的多人在线战斗竞技游戏——英雄联盟(League of Legends,简称LOL)。通过Qt这一C++图形用户界面库,开发者可以轻松构建跨平台的2D游戏,实现...
在这款游戏中,玩家将操控坦克在3D环境中与其他坦克进行对战,体验激烈的战斗乐趣。Java是一种广泛应用于跨平台应用开发的高级编程语言,以其“一次编写,到处运行”的特性著称,非常适合创建这种类型的游戏。 首先...