大家好,我是狂师!
前段时间,在后台收到一则留言:"请问一下,你觉得开发技术好,还是测试技术好,如果测试技术好,为什么不直接开发,干嘛做测试?"
这是一则很有意思且大多数技术新人普遍存在的困惑,今天就以此问题,给大家统一解答,分享一下笔者的观点。
1、首先,从技术本身来讲,
开发技术和测试技术都是软件工程中不可或缺的技术能力,它们各自具有独特的价值和重要性。无法简单地说哪个技术更好,因为它们的优劣取决于具体情境和需求。
开发技术专注于实现软件的功能和特性,它涉及到编程语言、算法、数据结构、设计模式等多个方面。优秀的开发技术能够确保软件具有高效、稳定、安全的性能,满足用户需求。
测试技术则专注于确保软件的质量和可靠性,它涉及到测试用例设计、自动化测试、性能测试、安全测试等多个方面。优秀的测试技术能够及时发现软件中的缺陷和错误,为软件开发提供质量保障。
2、从岗位职责来讲,就软件工程来说,
开发工程师则是一个更广泛的概念,包括软件设计人员、软件架构人员、软件工程管理人员、程序员等一系列岗位。他们的主要工作是进行软件的开发和生产,技术要求较为全面,包括但不限于编程语言、数据库技术、平台技术等多个方面。
而测试工程师,随着近些年行业发展趋势,大体又分为两类:业务测试工程师、测试开发工程师。
业务测试工程师,主要负责开发和执行软件测试,以确保软件产品的质量和可靠性。他们需要设计、编写和执行测试计划和测试用例,识别和报告软件缺陷和错误,参与软件开发生命周期,并与开发团队密切合作。测试工程师需要掌握软件测试理论、方法和工具,同时还需要具备分析问题、识别潜在风险和提出解决方案的能力。
而测试开发工程师,是一种特殊的角色,他们既是开发人员,又负责软件测试。他们关注软件产品的可测性、稳健性和性能,并在软件设计初期就参与审阅和推动改进。测试开发工程师需要编写测试工具和自动化测试代码,同时也需要执行一些基础的功能测试或白盒测试。他们需要掌握多种编程语言、测试技术、开发技术,同时还需具备测试工程师的敏锐思维,能够从用户体验、产品业务角度解决问题。
总的来说,测试开发工程师、开发工程师和业务测试工程师在职责和技能要求上各有侧重,但他们共同的目标都是确保软件产品能符合客户、用户需求,同时满足质量和可靠性要求。测试开发工程师更侧重于开发和自动化测试,开发工程师更侧重于软件的开发和生产,而测试工程师则更专注于测试计划和测试用例的设计和执行。三者之间的协作对于软件项目的成功至关重要。
这也符合Google测试之道一直强调的每个工程师都应注重质量,质量是内建的,而非仅仅是测试人员的责任。
3、再者,我的观点
在我之前出版的《自动化测试实战宝典》一书中,提到的“一名优秀的测试开发工程师应该比开发更懂开发,比产品更懂业务,不然你如何发现开发和业务更深层次的问题呢?”
虽然这一观点,现实工作中,能达到的人并不多,但实际上它更多是对测试开发工程师角色的一个高度期望和要求。这种表述并不是字面上的绝对比较,而是强调测试开发工程师需要具备跨越开发和产品领域的综合能力和视角。
首先,测试开发工程师比开发更懂开发,并不是指测试开发工程师在开发技术层面一定比专业的开发工程师更精通,而是指测试开发工程师需要深入了解开发的过程、技术栈、常见的错误模式以及开发的思维方式。这样,他们才能设计出更有效的测试用例,更精准地定位问题,更快速地与开发团队沟通协作。测试开发工程师需要站在开发的角度思考问题,预见并防范可能出现的问题,从而确保软件的质量。
其次,测试开发工程师比产品更懂业务,也不是说测试开发工程师一定比产品经理更了解业务需求,而是强调测试开发工程师需要对业务逻辑有深入的理解,了解业务背后的目标和需求,以便更好地设计测试用例和发现潜在的业务问题。测试开发工程师需要站在用户的角度思考问题,确保软件的功能符合业务需求和用户期望。
这种跨领域的综合能力使得测试开发工程师在发现开发和业务问题方面具有独特的优势。他们可以通过深入了解开发过程和技术栈,发现开发人员可能忽略的潜在问题;同时,通过深入理解业务逻辑和需求,发现产品可能存在的功能缺陷或不符合用户期望的地方。
需要注意的是,这一观点并不是要求测试开发工程师在所有方面都要超过开发或产品人员,而是强调他们需要具备一种综合的视角和能力,以便更好地履行测试和开发工程师的职责,确保软件的质量和可靠性。
在实际操作中,测试开发工程师可以通过与开发团队和产品团队紧密合作,积极参与项目讨论和需求评审,不断提升自己的业务和技术能力,从而更好地发现和解决开发和业务问题。同时,他们也需要保持开放和学习的态度,不断吸收新的知识和技术,以适应不断变化的项目需求和技术环境。
4、最后
质量不是被测试出来的,质量也不等于测试,同时质量并非仅仅依赖于测试阶段,而是需要在整个软件开发过程中进行预防和确保。测试只是其中的一环,而不是质量的唯一保障。
同时测试工程师是一个把质量意识输出到整个团队的人,是一个流程推动者,是一个需求挖掘者,是一个质量把关者,一方面我们确实通过自己的经验和技术手段去挖掘更多的Bug,另外一方面,通过传播质量意识尽可能的去从产品上游去避免Bug。
开发测试比本身没有实际任何意义,只是人员数量上的比率,如果在你的职位头衔上有测试的字样,你的任务就是怎么使得那些头衔上没有测试的人可以更好地去做测试。
希望这些观点,能给你带来新的启发,共勉!