软件测试之敏捷的质量

简介:

最近一周基本上都是加班到深夜,原因是最近有两个产品的发布,不凑巧的是这两个产品的开发是还在试用期的新人,更不凑巧的这两个产品是原来的产品经理遗留下来的需求。需求本身也存在些许需求描述不清晰的地方。所以加班看来就是在所难免的通往不确定未来的必经之路。

  加班是苦逼和悲催的,但是莫名其妙的加班尤其是加班后的奇妙莫名就就是不可原谅的,作为没有理想破灭的PM,我就像那个专治各种牛皮癣的老中医一样,在各种不服和纠结后尝试再一次去寻求解决问题的方法。也许我不能看到曙光,但我一定不能允许自己在黑夜中沉睡。因为我TMD就不相信这个世界上有专治老中医的牛皮癣。

  互联网企业和传统软件企业在流程上最大的不同估计就是互联网为了适应用户需求而必须做出快速反应。所以互联网企业的研发流程多是敏捷的。敏捷就目的是适应变更,敏捷的表象是快速发布,但是从来不会有Boss告诉我,敏捷就意味着损失质量。

  项目管理的三要素是:时间、范围、成本,从来就没有把质量放在三要素中,如果有人告诉你项目的三要素包括质量,那就让他去查查PMbok吧。

  因为对于项目来说,质量是前提,是很难妥协和变通的。但是显然、质量即使不和时间成线性上的反比,但肯定是反向相关的。一个女人12个月生出来的孩子不一定会更好,但是5个月就把孩子生出来,大概是好不到哪里去了。

  然后,无论是PM或者Dev抑或是Qa对线上故障都战战兢兢、如履薄冰。原因在于老板只看结果,不看过程。出来问题,老板的板子迟早是会打下来的,谁的屁股都不是金刚不坏屁股。

  快速发布,如何保证质量?

  在我看来如下三个关键点上的质量保证尤为重要1:PRD的Review; 2:代码的Review; 3:Testcas的Review。当然这里的Review是指保证质量的方法和手段,而不是大家走马观花的看看。并且我也从来不认为其他环节尤其是过程的执行力就不重要,就如同一个男人,如果3分钟都坚持不了,那还谈何技巧呢?

  在这里,我们先假定质量是指狭义上的软件质量。

  1、PRD的质量。所有软件开发模式都认可这样两个原则,a:质量是规划出来的,而不是测试出来;b:越在项目早期进行质量保证活动,效果会越好,并且成本也会越低。基于这两个原则,我们就更加可以相信,PRD文档的重要性。PRD文档作为产品的Mother和DNA在一开始就决定了产品未来的摸样,并且PRD是指导开发进行设计开发以及测试人员进行测试设计的关键性文档甚至是唯一文档。因为PRD文档在整个产品开发生命周期中的作用牵一发而动全身。PRD文档的质量依赖于用户、需求调研的广度和深度以及需求分析的经验和技能这无容置疑。但我们在此显然并不是为了告诉大家如何做好需求分析。我们只从Review的角度来看看如何在最后环节来保证PRD的不出错,没错Review不能保证我们的产品是一款优秀的产品,但是能够保证这款产品是一个不容易出错的产品。PRD的Review需要关键人物的参与、尤其是当PRD涉及到多个产品项目或者多个模块时,因为只有关键人物才有对系统整体的把控能力,能够帮助产品人员预防各种潜在和难以发现的陷阱。这些关键人员一般包括:业务的代表、开发的代表、测试的代表、运营的代表,这里的代表不是随便找个人就代表的,应该是这些team的leader.

  2、代码的Review。结对编程和测试驱动是敏捷流程在开发阶段保证代码质量的关键方法,然后大部分公司的资源都很难允许这样做。在所有老板的概念中如果公司不出现争抢资源以及资源不够的现象,那个就是应该裁员的时候了。然后开发团队总会有些新人的进入或者对新的项目不熟悉的团队成员。在这种情况下,让经验丰富的工程师去Review新手代码或者做交叉代码Review是一种成本较低但性价比还不错的选择。

  3、Testcase的Review。Testcase最应该被保证的是所有用户操作而导致程序运行的轨迹和分支需要覆盖,功能测试是无法覆盖到代码分支的,这是因为功能测试和单元测试的测试对方不同,但是功能测试已经要覆盖到用户的所有操作,正常或者异常,以及这种操作下程序可能的处理结果,从而确认结果是符合预期的。在这里有两种选择,PM写Testcase还是专业的测试工程师,在我的职业生涯中,这两种情况都有发生,但我个人更倾向于由专业的测试工程师来写Testcase。的确,PM一定是所有人里面对需求最清楚的人,但PM的思维模式是用户正向参与产品,也就是说绝大部分的用户是基于满足自己需求的方式来使用产品的,PM首先要思考的是如何让用户的核心需求最容易和方便的得到满足或者实现。但软件的问题中80%的问题却恰恰发生在犄角旮旯的程序毛刺中,而如何从鸡蛋里面挑骨头却是测试工程师的思维模式。所以说,PM很难写出来高质量的Testcase。但是,Testcase Review的关键人物一定是PM和Dev。没有谁比他们更加清楚自己设计和实现的产品了。

  对于互联网产品来说,重量级的质量保证流程显然无法适应快捷的发布需求,所以对软件中关键阶段的产出进行质量保证是解决问题的最有效方法。但是我并不敢肯定这种方法的普遍适用性,所以你自己看着办吧!








====================================分割线================================



最新内容请见作者的GitHub页:http://qaseven.github.io/

目录
相关文章
|
20天前
|
设计模式 测试技术 持续交付
深入白盒测试:提升软件质量与性能的关键策略
【4月更文挑战第20天】 在软件开发的复杂世界中,确保产品的质量和性能始终是至关重要的任务。白盒测试,作为软件测试领域的重要分支,提供了对程序内部结构和逻辑的深入分析手段。本文将探讨如何通过有效的白盒测试策略来优化软件性能,减少缺陷,并最终提高用户满意度。通过剖析代码检查、单元测试、集成测试等白盒测试技术,我们将了解这些方法如何揭示潜在的问题点,并为改进提供方向。
|
29天前
|
算法 安全 测试技术
深入探索白盒测试:提升软件质量与效率的关键策略
【4月更文挑战第11天】 在软件开发的生命周期中,确保代码质量和功能的正确性是至关重要的。白盒测试,作为一项关键的验证手段,允许测试者通过检查内部结构、设计和编码逻辑来识别软件中的缺陷和漏洞。本文将探讨白盒测试的核心概念、方法及其在提升软件测试效率和质量上的重要性。我们将分析静态分析和动态测试的策略,并讨论如何通过白盒测试优化软件开发过程。
|
1月前
|
供应链 测试技术
深入白盒测试:提升软件质量的关键策略
【4月更文挑战第7天】 在软件开发的复杂世界中,确保代码质量和性能的可靠性是至关重要的。白盒测试作为一种重要的软件测试方法,允许测试者通过检查内部结构、设计和编码来验证软件的正确性。本文将探讨白盒测试的核心概念、优势以及如何有效利用它来提高软件产品的质量。我们将深入分析不同的测试技术,如静态分析和动态测试,并讨论如何将这些方法应用于实际测试场景中,以便发现和修复潜在缺陷。通过案例研究和最佳实践的分享,本文旨在为读者提供一套全面的白盒测试策略,以支持他们在不断变化的技术环境中保持竞争力。
|
1月前
|
测试技术
深入白盒测试:提升软件质量与效率的关键策略
【4月更文挑战第9天】在软件开发的复杂多变环境中,保证产品的质量和可靠性是至关重要的。白盒测试作为一种深入代码层面的测试方法,它通过分析程序内部逻辑和结构来识别缺陷,从而确保软件按照预定的要求运行。本文将探讨白盒测试的核心概念、技术手段及其在现代软件开发中的应用,旨在为读者提供一套系统的白盒测试实施策略,以提升测试效率和软件产品的整体质量。
|
13天前
|
测试技术
【测试】构建质量保证之路:编写测试用例的艺术
【测试】构建质量保证之路:编写测试用例的艺术
|
13天前
|
jenkins Devops 测试技术
单元测试与质量保证:确保Visual Basic代码的健壮性
【4月更文挑战第27天】在VB开发中,单元测试是保证代码质量和软件健壮性的关键。本文介绍了单元测试的基础,包括其定义和好处,如提高代码质量、促进重构。接着,讨论了MSTest、NUnit和xUnit等VB单元测试工具。遵循TDD原则和最佳实践,编写独立、有针对性的测试,并注重测试速度和覆盖率。通过示例展示了如何在Visual Studio中设置和运行测试。最后,提到了持续集成和自动化测试工具,如Jenkins和静态代码分析工具,以提升软件开发效率和质量。单元测试不仅是技术手段,更是提升团队协作和软件工程水平的文化体现。
|
10天前
|
Java 测试技术 开发者
深入理解与应用单元测试:软件质量的守护者
【4月更文挑战第30天】 在现代软件开发过程中,单元测试作为保障代码健康的重要环节,其地位日益凸显。本文将探讨单元测试的核心概念、实施单元测试的重要性以及如何高效地设计并执行单元测试。通过实例分析,我们将揭示单元测试在确保软件产品质量和加速开发周期中的关键作用。
|
11天前
|
Java 测试技术 Shell
单元测试3.0实践之Golang质量生态建设
研发是否必须写单测?文章提到,单元测试对于确保代码质量、提高软件可靠性至关重要。在顶级互联网公司中,单元测试被认为是必要的,因为它能快速执行、降低维护成本,并能发现代码中的问题。文章还讨论了Go语言中单元测试的优化,如支持不同版本的Go、提高测试覆盖率、处理并发问题等。此外,文章介绍了一个用于Go语言单元测试的插件,该插件可以集成到持续集成流程中,提供详细的测试报告和覆盖率信息。通过这个插件,团队可以方便地管理和执行单元测试,提升开发效率和代码质量。
|
17天前
|
算法 测试技术 持续交付
深入白盒测试:提升软件质量与效率的关键策略
【4月更文挑战第23天】 在软件开发的复杂多变的环境中,确保产品的质量和可靠性是至关重要的。白盒测试作为一种重要的软件测试方法,允许测试者通过检查内部结构、设计和编码来验证软件的功能性和正确性。本文将探讨白盒测试的关键概念、技术及其在提升软件测试效率和质量中的应用。我们将重点讨论如何借助白盒测试发现潜在缺陷、优化测试用例设计,并通过具体案例分析展示其在实际中的应用效果。
|
17天前
|
存储 算法 测试技术
深入探索白盒测试:提升软件质量与效率的关键
【4月更文挑战第23天】 随着软件开发的复杂性日益增加,确保代码质量和性能的压力也随之升高。在多种软件测试方法中,白盒测试以其对内部结构和工作原理的透明性而受到重视。本文旨在探讨白盒测试的核心概念、技术及其在提升软件测试效率和质量中的应用。通过分析控制流测试、数据流测试以及静态分析等关键技术,我们将揭示如何有效运用白盒测试以发现潜在的逻辑错误和缺陷。

热门文章

最新文章