软件工程第三次作业——关于软件质量保障初探
一、对教材与参考资料阅读后关于软件质量保障你的体会是什么?
1、软件质量保障(QA)的含义
在对教材阅读前,我一直以为软件质量保障仅仅是在软件上线前对其进行测试,以保证其没有Bug,可以正常按时交付客户上线运营即可。通过对教材的阅读我们了解到软件质量保障(QA)和软件测试(Test)是有很大区别的。软件测试(Test)是指运用一定的流程和工具来验证软件是否能实现预先设计的功能,其工作流程和结果通常是可量化的。软件质量保障工作(QA)是指软件开发团队为了让软件达到事先定义的质量标准而进行的所有活动,包括测试工作。所以说软件测试(Test)其实算是软件质量保障(QA)的一个工作方面,但绝不仅仅只是包含这一个方面。
从本书第一章我们知道了软件=程序+软件工程,那么同理可得知:软件质量=程序质量+软件工程质量。
程序的质量主要体现在软件外在功能的质量上,另外还包含诸如用户的体验质量、国际化的质量和安全性的质量等方面。软件工程的质量则是在功能、成本和时间三个方面满足利益相关者的需求。主要体现在以下方面:
①软件开发过程的可见性。
②软件开发过程的风险控制
③软件内部模块,项目中间阶段的交付质量,项目管理工具的因素。
④软件开发成本的控制
⑤内部质量指标的完成情况。
其实影响软件质量保障的因素不仅仅是以上提及的方面,只能说以上因素是主要因素。软件质量保障的影响因素更像是一个塔型结构,具体如下图:
2、软件质量保障(QA)的衡量标准
软件质量是程序质量和软件工程质量之和,而在两者中软件工程质量又处于主体地位,即软件工程的质量对最终的软件质量有着举足轻重的意义。也就是说对软件工程质量衡量标准的研究就是对软件质量保障(QA)衡量标准的研究。当前对软件工程质量标准衡量的比较成熟的理论是CMMI(能力成熟度模型集成),分为初始、管理、明确、量化管理、优化五个等级,实施它的主要意义在于能够提高企业的管理水平,降低企业的成本。
3、如何做好软件质量保障(QA)工作
关于如何才能做好质量保障工作,我有以下几点粗浅的看法,仅供代表个人观点:
首先是要牢固树立起质量意识,只有在一个开发团队中树立起牢固的质量意识,使质量意识深入每个开发人员的心中,才能确保在软件开发过程极少产生或不产生因质量问题而引发的不必要的问题。
其次是要处理好团队之间的分工合作,在开发团队中要对每名开发人员进行工作安排,做到分工明确、责任落实,使其各司其职,对项目共同负责。同时因为责任落到的个人身上,也能避免出现一些开发者因为个人原因而产生的Bug。
最后是要规定标准,没有规矩,不成方圆。只有在项目开始之前明确规定好项目中每个环节甚至是每行代码的编写标准,才能在实际开发过程中减少不必要的Bug,提升效率,从而提高软件质量。
二、如果你是一个项目的QA,那么你认为你的工作职责范围是什么?
1、对开发工作进行总体的把控和人员分工,协调好各部分、人员之间的工作
2、承担责任,调节质量纠纷,组织对重大质量事故调查分析
3、提升自身的能力,掌握基本的软件开发技术,能确保自己能独立进行程序的测试工作
4、积极与开发人员进行沟通,及时掌握开发进度,寻求最佳方案,实现效益最大化
三、如果你是一个项目经理,那么你认为这你的项目中需要专职的QA么?还是只需有Test即可?如果一旦出现问题,你如何界定由谁担责?
1、我认为在我的项目中不需要专职的QA。首先我们必须 承认QA的工作很重要,但是如果单独列出一个人来做QA的相关工作的话,一是浪费了宝贵的人力资源,二来也让部分开发人员产生了懈怠心理,认为反正有专人负责,责任怎么都不会落到自己头上,从而在实际开发中消极懈怠。其次如果专职的QA是个只懂软件测试而对于开发过程一无所知的人,有怎么能保证他的测试能力比参与了开发过程的人员更专业呢?同时,在他的测试过程中,还需要有专门的开发人员陪同,这在无形之中又浪费了人力资源。最后就是可以减少扯皮和推诿,避免不必要的时间和精力的浪费。前面也提到如果有专职的QA就会让开发者产生 懈怠,每人分管一摊,各扫门前雪,互相之间缺乏沟通,出现问题又会相互推诿。
2、如果一个项目中只有Test也是不可取的。Test只是对软件进行测试,确保其不出现Bug,并不能保证软件的质量。短期来看是有效的,但从长远看,是极不可取的,会导致软件质量的下降,最终导致用户不满,市场丢失。最佳的解决办法是将开发者和测试者合为一体,既参与项目的开发,同时参与测试运行,质量保障工作。对于开发人员来说,项目就相当于自己的孩子,没有谁能比自己更了解自己的孩子。同样,不会有第二个人会比自己更了解自己的项目和开发过程。这样做既保证软件的质量,又可以最大的利用资源、提高效率,实现效益最大化。
3、关于出现责任的界定问题,我认为出现问题不可怕,可怕的是成员之间相互推诿扯皮,一来会影响成员之间的关系,二来也浪费了时间和精力。一旦出现问题,那么首当其冲承担责任的我认为应该是自己,而不是手下的开发人员。身为一个项目经理,职责就是要做好项目的整体规划、人员分工、标准制定和细节处理。发生问题要首先从自身找原因,看是不是自身的问题,没有事先做好预估预判。其次才是将责任落实到个人,按照最初的分工安排,直抵源头,查错纠错,进行相关处理。避免因人人自危而引起不必要的恐慌,从而耽误项目的总体进度和质量。