Bootstrap

程序员的自我修养-用科学的方法提高交付质量

“大家好,我是程旭圆,最近过得不怎么好!需求变来变去,让我非常烦躁。bug改不完,旧的去了新的来。更过分的是,上星期那个bug竟然又出现了,苦苦找不到原因,太诡异了。不知道做到什么时候是个头,好不容易做完的功能,结果被各种喷。产品真是**!”

这是不是你现在或者曾经有过的状态?负责任地讲,**的不是产品自己,是项目相关的所有人,包括用户自己。当雪崩发生时,没有一片雪花是无辜的。有没有科学的方法来避免这种困惑?作为一个程序员,能做些什么?答案是肯定的:请你站在巨人的肩膀上,用科学的方法提高交付质量!

01 本文概要

关注公众号:码神手记,第一时间获取最新干货

02 正确认识软件质量

关于软件质量,每个人都可以想到若干个词汇来形容它,但不一定全面。国家标准《GB/T 32904-2016 软件质量量化评价规范》中定义了软件质量模型,评价一个软件的质量时,可以用该模型作为参考。

软件质量模型一共分为6个方面

03 软件开发生命周期与质量

软件的开发需要经历一系列的步骤,这就是软件开发的生命周期。在国家标准《GB8566-88 计算机软件开发规范-软件开发生命周期》中,将软件开发按时间序列划分为以下8个步骤:

软件开发生生命周期的每一个步骤都直接或者间接地决定着软件的质量,每一个步骤的错误都会传递下去,并对下一个步骤产生负面影响。因此,软件质量的问题并不只是程序员的问题,也不只是产品经理/项目经理的问题,整个生命周期中的任何一个角色都对质量负有责任。具体怎么负责呢?请继续往下看。 

04 业界关于质量保证的措施

业界关于质量保证的方法措施无外乎两种:评审、测试。评审不讲究方法会导致无效会议,时间浪费,给后续的兄弟们挖下一个个大坑。测试不讲究方法,软件质量就失去了最后一道防线。

评审

评审包含以下8个方面:

测试

测试可概括为测试阶段和测试方法两个方面。

测试阶段

测试方法

无论是在哪个阶段,采用什么样的方法,即便是只做黑盒测试,都需要面临一个问题:测试用例怎么写?有如下方法:

建议在梳理测试用例时使用正交分解思想,并充分利用思维导图工具提高效率。 

05 TDD在敏捷开发中的角色

我为什么会提到TDD(Testing Driven Development)?TDD与开发方法有关,每一个产品/项目的研发都会采用一定的方法。在软件开发领域,敏捷开发大行其道,一切为了快速交付。敏捷开发有许多优秀的实践,我列举以下4个:

软件开发行业的不确定性不可避免,在互联网公司尤为明显,在实践当中也可能会将以上开发方式混合使用。TDD是敏捷开发的核心实践和技术,它在以上任何一种开发方式中都可以使用,TDD的目标是够用且干净的代码。如果你是个普通程序员,无法决策团队的质量保证流程。那么,你可以提出你的建议并做好自己,尝试TDD。

06 从UnitTest向TDD靠拢

单元测试并不是TDD的全部,但它是一种向TDD靠拢的绝佳方式。帮助我们更加关注需求、问正确的问题、做正确而不多余的事情、提高设计能力、得到够用且干净的代码、不必担心自己的某个改动牵一发而动全身。长远来看,你得到的收益将会大于写测试用例的成本投入。

TDD的核心步骤:

我列出了一些点,可以作为落地TDD的参考: 

07 抛砖引玉:一个简单案例

开发语言:Java

应用框架:SpingBoot 2.4.2

测试框架:junit-jupiter 5.7.0 spring-boot-starter-test

示例功能:用户登录(演示demo)

GitHub地址

08 总结

我们首先建立了统一的理论认知,然后又介绍了一些久经考验的方法,最后提出了一些落地的建议和示例,不妨把这篇文章作为自己的指导大纲吧。

通过本文的学习,应当有以下收获:

最后把我曾看到过的一段话送给大家:

任何新的技术,尤其是会改变人行为习惯的技术,总是信的人越来越信,不信的人总能找到反驳的理由。

消极的人即便是把卡奈尔的书倒背如流也无法获得积极的心态,但是当你用积极的心态获得成功时,你就再也离不开它了。