软件质量保证的第一步
作者:网络转载 发布时间:[ 2014/9/29 14:26:07 ] 推荐标签:软件测试管理 质量管理
与软件开发过程中产品从无到有的创造所带来的兴奋与有趣相比,软件质量保证更多地让人觉得沉闷和枯燥。相比之下,软件开发过程中的需求分析、设计和编码是一个相对容易做的事,因为在这些过程中如果出现差错,工程师都觉得有劲可使以进行弥补,这些过程中的错误更多地表现为“明枪”。软件质量保证则不然,往往很容易出现有劲使不出,乃至怎么也做不好,其更多地表现为“暗箭”。之所以会出现这种状况,是因为开发团队没有深刻地理解到软件质量保证是一个系统工程,高质量软件的获得并不是意味着只要做好软件开发过程中的某一个或几个关键环节行了,而是需要关注软件生命周期内的所有环节,且很容易出现因为一个小小的细节没有做好却造成终的软件质量大打折扣。正是因为对于质量保证的系统性认识不够,从而造成“暗箭难防”的局面。
《软件质量是什么》探讨了软件质量的第一层含义,即用户层面来看高质量的软件具有更少的缺陷,也指出从技术层面保证软件质量的关键是提高软件设计质量。除此之外,软件质量还有其第二层含义,即尽可能在第一时间将事情做对,也是减少返工,其表现是软件在被开发的过程中(并不是在用户手中)所出现的缺陷更少。需求捕获如果没有在需求分析阶段做好,那将造成很大的浪费,这一点众所周知,而这正是因为没有在第一时间将事情做对。另外,软件质量还应当涵盖高效地从事开发工作。同样是做对一件事,花与花半天时间将其做对,或许对于软件项目有着天壤之别。后,软件质量还包含它的第四层含义,这在《软件质量是什么》也有所提及,那是相关软件工程师的生活质量。高质量的软件应当包含软件工程师的生活质量并没有为之而“打折”,反之应当有助于提高软件工程师的生活质量。缺陷是软件用户可以看到的,而开发过程中的低返工率、开发效率和工程师的生活质量却是用户所看不到的,但对于开发团队来讲却及其重要和真切。不论是低返工率或是开发效率,其终都反映在项目开发的经济性上。
软件质量保证是一个比较沉重的话题,因为在其后更关系到软件工程师的生活质量,而不只是表面上的产品质量那么简单。对于质量保证这一系统工程,它不能被简单地理解为“是测试”。在进一步探讨这一话题之前,需要先了解软件开发的特点。软件开发具有以下几个特点,有些特点之间也表现为相互影响,且这些特点终导致软件质量控制并不是那么的直观和容易。
脑力密集型
软件开发是脑力密集型工作,其中的不少活动因为只存在于软件工程师的大脑中,因而具有不可见性,自然也无法指出工程师在做开发时哪一步思考将有可能造成质量问题,进而无法通过运用流程的方法将这些潜在的质量问题完全消除,这与流水线生产下的质量保证方法完全不同。
另外,善变很可能是人的天性,由于大脑在处理事务时并不能完全保证其一致性。很有可能股票涨了的话一高兴采用了这种处理方法,而心情不好时则采用了另一种处理方式。善变有它的好处,比如让我们更具创造性,也为我们的生活带来了更多的乐趣,使我们从无聊的事情中通过变通找到乐趣,但这对于软件质量的保证却未必是一件好事。减小善变所带来的负面影响,或许通过培养良好的工作习惯是一条不错的途径。
实现不具性
一个软件功能,尽管从使用者的角度来看都一样,但却可以有多种不同的实现方法,且不同的开发团队或者不同能力的人所做出来的设计很有可能完全不同。如果软件实现具有性,那其质量更好被评估,也更容易找到改善点,但软件开发不属于这一列。
正因为软件的实现不具性,这使得很难从林林总总的实现中找到哪一种更好,或者要找到这个“更好”所需要的成本(包括时间、金钱和能力)却更高。
隐性成本高
只要是产品开发则总是存在开发成本的概念,也需要对项目进行预算,这一点软件产品的开发也不例外。与其它产品开发不同的是,软件开发的隐性成本很高。所谓的隐性成本,是指在项目预算时并没有将其考虑在内,但它确实在将来的开发活动中会导致额外的成本开销。
一个软件项目的阶段性完成并不意味着它不会带来后续的成本,因为不同的实现(实现不具性)所带来的软件稳定性和可维护性都将不同,而不良实现所带来的隐性成本往往在预算时无法合理地被考虑,这进一步又意味着什么呢?第一,它将导致对项目进行计划更困难。这是显然的,因为看不到隐性成本的存在,自然在计划时不会将其列入其中。第二则更为严重,由于隐性成本的不可见性,往往很容易造成被忽视,进而不能掌握软件开发的特点,对软件开发中的困难也表现得不理解。甚至一味地认为只要投入时间和人力一定能开发出高质量的软件产品,孰不知很有可能因为更多的投入而造更大的隐性成本。
隐性成本的存在往往很容易导致工程师因为工作而影响生活,而进一步带来更大的隐性成本。试想想,有没有某个项目在预算时将工程师的生活质量真正地考虑在内呢?如果有,这种考虑是考虑到了点子上吗?还是只是表面?
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11