QA其实是品质管理。为什么说是管理呢?因为QA结合了管理,分析和测试三大行业的知识。公司的研发进度,产品研发初期的标准制定及产品后期的研发都需要QA的参与,缺一不可。QA可以有效的控制研发的进度和每个环节的质量。不管任何的产品,都是以适合人使用为前题的。在产品初期制定设计标准的时候,QA能够站在消费者的角度来看待这个产品,让产品更人性化。设计阶段,QA成为一个测试者,验证每一个环节的质量,是否达到了设计标准所规定的。用当局者迷,旁观者清来形容再贴切不过了。QA就是这个旁观者。任何产品不可能十全十美,出了问题,设计者不可能一一来查找问题,因为很难有单独一个人完成整个产品设计,这时候QA就是一个分析师,查找在哪部分出了问题,节约研发的时间,解决不必要的麻烦。任何的公司都有自己的产权,而QA能很好的保护公司的产权。健全的公司,QA有很大的权力控制公司的所有技术资料。任何设计工程师不可以私自给客户公司的技术资料,这些管理都是由QA来完成的。
如果想成为一个成熟的QA需要经过三个阶段的成长期。
首先,先让自己成为一个优秀的测试者。有灵活的头脑,用逆向思维来思考如何做测试。不能做到与常人不同的角度去想问题,就不可能成为一个好的测试者。应庙毕业生最适合做测试者,这时候的人如一张白纸,什么也不懂,需要做的是按照自己想的方式去测试你手上的东西,不用考虑这样操作是不是会把产品弄坏,如果你弄坏了,我要恭喜你,你成功的成为了一名测试者。优秀的测试还需要有良好的记忆力,你每做的一个操作都要记住了,万一产品出现问题,你能找到发生的规律。做为一个测试者,还需要有良好的表达能力,要能将自己看见的现象描述清楚。有些人天生就对文字表达不擅长,但没关系,描述bug是有一定规则的。以下提供一个我经常使用的格式:
测试环境,软件版本,硬件版本,测试时间,此项测试的申请人。记录这些的目的是为了快速准确的找到相对应的人与开发环境。方便问题重现。
说明此bug是只出现在一个版本上,还是所有的版本都会出现,出现的几率是多少,大概出现在哪个产品模块。
将操作步骤写清楚。此点并不容易描写清楚,给个建议,你不需要用太多麻烦的描述,只需要列出每一步做了什么,用最简单的语言描述你当时所做的操作,最好用列表式,用数字排列出步骤的先后顺序。
列出问题点,只需要写出现象,不需要做过多解释,这样更容易让看报告的人明白。
如果你做到了用逆向思维方式不约束的头脑去测试,用超强的记忆力,记录下自己所做的步骤,用敏锐的观察力去发现每一个不起眼的异常,用简单清楚的语言描述bug,那么你就是一名优秀的测试者了。
在成为一名优秀的测试者后,不要满足喔,你还没成为真正的QA,你还需要具有分析问题的能力。这个需要时间和精力来完成,没有捷径,只有努力才可以达到。但也是有方向的,向大家指个方向。QA需要了解大量的专业知识,除了要让自己了解公司所有的规格标准技术资料外,更应该让自己成为一个博学者。每个人能力有限,博学不代表要精通,但至少要知晓相关知识的大概。QA的分析能力与经验有相当大的关连。QA需要长时间来积累自己的经验,积累经验也有要领的。每次出现一个问题,都要去问为什么,为什么问的越多,经验就越多,你会在为什么中不知不觉的成长。一般五年是QA的一个阶段,五年内,QA需要默默的学习,积累扎实的基本功和经验,如果你做到了,五年后,你将发现,你成了奇缺人材。
最后一点要说的是管理。QA需要管理自己内部的资料,也需要管理整个研发团队的。首先要做到的是,QA需要有正直的人品,不要因为任何的外界的因素而改变自己对公司产品的严格要求,要勇敢地说不,对不合格产品严格地打回去重新做。其次,QA需要有完善的体系来管理工作。每家公司各不相同,但我认为需要以下几个方面体系:
工作记录。此测试是何人完成的,何人申请的,进度如何,完成时间,要严格控制记录,如果出了问题方便找到相关的人,不是为了让谁去担这个责任,是为了能更快的解决问题。当然也有对测试者的约束力,要让每一个QA知道,要对公司负责。我通常采用一个工作记录表格,个人认为还有一个好处是给QA和其他部门的同事看。当QA全部在忙,研发工程师们可以内部自己调整case的重要性,暂时pause或者delay某个任务,调整工作,让QA的工作更有效率。
Test Case管理系统。这个需要一个小型数据库,将每一个测试项目详细记录下来,测试者可以将自己的经验变成文字写在里面,让后来者可以为之所用,提高QA团队的整体力量。每一个Test Case都必须根据公司的设计规格书和行业标准来编写,通过此,测试者也可以更了解公司产品的标准。
Bug管理系统。这个系统可以便于QA上报bug,研发工程师能很快的去解决,也可以帮QA控制产品的研发进度,push研发工程师按进度解决问题。也可以根据此来制定每一个版本的release时间表。
Code mangerment. 一般的公司都有这种工具,就不需要我来特别说明了,通常用的是Perforce和CVS。说明一点的是,有些公司对code管理比较乱,客户打个电话code就release出去了。不成熟的产品出去了,会让客户觉得这家公司的产品为什么如此差劲。所以如果要对公司好,就一定不可以随便开放权限。健全公司的做法通常release全部由QA发布,最后再由相对应的客户服务经理发给客户。毕竟公司的面子最重要。
实际上就是Quality Assurance 做软件测试QA是英文Quality Assurance 的简称,中文含义是质量保证;QC是英文 Quality Control的简称,中文含义是质量控制。
按照ISO9000:2000,QA的定义是“质量管理的一部分,致力于提供质量要求会得到满足的信任”,QC的定义则是“质量管理的一部分,致力于满足质量要求”。
标准中的定义都言简意赅,难以长篇大论,这可能会导致定义不太容易清晰理解。简言之,QC是对人事、对物,直接致力于满足质量要求:QA则是对人、对过程,致力于使管理者、顾客和其他相关方相信有能力满足质量要求。
在软件/信息化方面的一些标准中,QA的定义包括:“质量保证是指为使软件产品符合规定需求所进行的一系列有计划的必要工作。”(GB/T 12504-1990计算机软件质量保证计划规范);“为使某项目或产品符合已建立的技术需求提供足够的置信度,而必须采取的有计划和有系统的全部动作的模式。”(GB/T11457—1995软件工程术语)。在这两个标准中都没有直接关于QC的定义。
按照不同的目的、从不同的角度对同一个术语的定义往往存在差异,例如GB/T 12504-1990、GB/T11457—1995分别对QA的定义就存在差异,按照GB/T 12504-1990的QA定义涵盖的范围较宽,包含了QC的内容。
2. QA与QC的侧重点比较
在一个软件组织或项目团队中,存在QA和QC两类角色,这两类角色工作的主要侧重点比较如下:
QA与QC的其他重大区别还包括:
具备必要资质的QA是组织中的高级人才,需要全面掌握组织的过程定义,熟悉所参与项目所用的工程技术;QC则既包括软件测试设计员等高级人才,也包括一般的测试员等中、初级人才。国外有软件企业要求QA应具备两年以上的软件开发经验,半年以上的分析员、设计员经验;不仅要接受QA方面的培训,还要接受履行项目经理职责方面的培训。
在项目组中,QA独立于项目经理,不由项目经理进行绩效考核;QC受项目经理领导,通常在项目运行周期内QC的绩效大部分由项目经理考核决定。
QA活动贯穿项目运行的全过程;QC活动一般设置在项目运行的特定阶段,在不同的控制点可能由不同的角色完成。
对称职的QA,跟踪和报告项目运行中的发现(Findings)只是其工作职责的基础部分,更富有价值的工作包括为项目组提供过程支持,例如为项目经理提供以往类似项目的案例和参考数据,为项目组成员介绍和解释适用的过程定义文件等;QC的活动则主要是发现和报告产品的缺陷。
3. QA的工作内容
国际标准、国家标准都是通用的,软件组织是具体的、鲜活的。不同组织中QA的工作职责和内容会有共同性,也会有特异性,可以分层次考虑QA的工作内容和特点:
3.1 过程遵从性
保证过程遵从性是QA的根本职责,即保证项目组按组织规定的过程运行。通常各类组织,不仅是软件组织中的QA都致力于保证过程遵从性,以证实能以稳定的质量提供产品和服务,得到具备满足质量要求能力的信任。
3.2 计划符合性
保证项目的计划符合性首先是项目经理的责任,不是QA的根本职责。有些组织中QA不必认真关注计划符合性;但是,项目的规模、工作量、进度、缺陷等方面的计划符合性是高层管理者的关注重点,QA作为高层管理者的耳目有必要跟踪和报告计划符合性。在许多软件组织中跟踪和报告计划符合性是QA的常规工作内容。
3.3 工件正确性
工作产品(Work Product)简称工件,指项目运行中产生的各种文档、代码、程序等。在多数软件组织中,QA通常不直接跟踪和报告工件正确性。其根本原因是这样做将会导致QA在项目工作中陷得太深,不利于保持QA的独立性和客观性。其他原因还包括QA的能力、时间资源都可能不足以支持其去跟踪和报告工件正确性。
4. 基于实际情况理解和处理QA的工作内容
怎样定义QA的具体职责范围是各组织自己的事,质量管理标准和过程改进模型都只会要求某个职责要有机构、角色履行,不会要求组织一定要设立某个机构、某种角色,或某种角色必须是怎样的职责。即使在同一个组织中,根据不同的应用目的也可以作不同的处理。
例如,在一个通过了SW-CMM三级的软件组织, QA计划的最小范围只包括支持、跟踪和报告项目组的活动,当项目工件中存在外包部件时要跟踪和报告外包部件开发方的相关活动,当项目与特定顾客的需求,当项目与特定顾客的需求、部署和实施有关时要负责与该顾客就质量管理问题,包括产品和服务缺陷等问题进行沟通。组织内部使用的QA
不是行业的意思。
QA:
QA(QUALITY ASSURANCE,中文意思是"质量保证",其在ISO8402:1994中的定义是"为了提供足够的信任表明实体能够满足质量要求,而在质量管理体系中实施并根据需要进行证实的全部有计划和有系统的活动"。有些推行ISO9000的组织会设置这样的部门或岗位,负责ISO9000标准所要求的有关质量保证的职能,担任这类工作的人员就叫做QA人员 。
中国质量管理协会的定义是:"企业为用户在产品质量方面提供的担保,保证用户购得的产品在寿命期内质量可靠。" 美国质量管理协会(ASQC)的定义为:"QA是以保证各项质量管理工作实际地、有效地进行与完成为目的的活动体系"。 著名的质量管理权威、美国的质量管理专家朱兰(J.M.Juran)博士认为:"QA是对所有有关方面提供证据的活动这些证据是为了确立信任所需要的,表明质量职能正在充分地贯彻着。" ISO8402:1994中的定义是"为了提供足够的信任表明实体能够满足品质要求,而在品质管理体系中实施并根据需要进行证实的全部有计划和有系统的活动"。 由此可见,QA对企业内部来说是:全面有效的质量管理活动;对企业外部来说则是:对所有的有关方面提供证据的活动。 QA就是包括制造企业各个部部门的组成的一个保证生产高质量产品的一个系统。 FDA 、EMEA(欧洲医药评价署)的阐述是这样的:GMP是QA(质量管理体系)的一部分,GMP只关心与生产和检验有关的所有事务,与GMP无关而与产品质量有关的事务就属于QA。
QA是质量保证,英文就是quality assurance,在CMMI中QA的主要工作是质量评审和产品评审,在ISO8402:1994中的定义是“为了提供足够的信任表明实体能够满足品质要求,而在品质管理体系中实施并根据需要进行证实的全部有计划和有系统的活动”。有些推行ISO9000的组织会设置这样的部门或岗位,负责ISO9000标准所要求的有关品质保证的职能,担任这类工作的人员就叫做QA人员。