三大模型了解软件质量管理
软件质量管理模型

建立组织的质量方针: 零缺陷原则,顾客满意,持续改进,以人为本;
确定质量目标:依据产品相关方需求,行业标准/规范确定质量目标,识别要求的产品质量指标。
进行质量策划:为达成质量目标而制定的评审计划,测试计划,风险管理计划等
实施质量策划的相关活动,控制软件质量;
利用PDCA/QCC等工具进行质量改善,确保最终达成质量目标。
测试策略实施模型

详见Guide for TAE:
https://www.bilibili.com/read/cv16485388?spm_id_from=333.999.list.card_article.click
质量评估模型

详见: 一图看懂软件质量评估模型 - XWiki
https://www.bilibili.com/read/cv16283551?spm_id_from=333.999.list.card_article.click
基本概念
1. 模型
模型是对事物的一种抽象,人们常常在正式建造实物之前,首先建立一个简化的模型,以便更透彻地了解它的本质,抓住问题的要害,使人们从全局上把握系统的全貌及其相关部件之间的关系,可以防止人们过早地陷入各个模块的细节。
依据应用领域的不同,将模型分为数学模型、物理模型、结构模型、工业模型、仿真模型、人力资源模型、思维模型等。
模型案例:
1)软件开发模型:在软件领域,依据知识经验,将软件开发的过程归纳为“瀑布模型/原型模型/螺旋模型/快速应用开发模型/敏捷开发模型“等模型。
2)其他常用模型:参阅 科学通识观后笔记之 收尾篇 - 哔哩哔哩 (bilibili.com)
模型来源于实践,又应用于实践,新兴的模型取代落后的模型。
2. 质量
质量管理学,质量是客体的一组固有特性满足要求的程度,即产品或服务满足明示或暗示需求能力的特征和特征的集合。
质量目标,是指在质量方面所追求的目的。
质量不是简单地满足用户的需求,还得包含确定证明质量达标所使用的评测方法和标准,以及如何实施可管理、可重复使用的流程,以确保由此流程产生的产品已达到预期的质量水平。
质量属性:质量的内涵是由一组固有特性组成,并且这些固有特性是以满足客户及其他相关方所要求的能力加以表征,作为评价、检验和考核质量的依据。
由于客户的需求多种多样,所以反映产品质量的特性也是多种多样的。
质量是一个综合的概念。它并不要求技术特性越高越好,而是追求诸如:性能、成本、数量、交货期、服务等因素的最佳组合,即所谓的最适当。
3. 软件质量
在软件领域,质量分为产品质量和过程质量。
1)产品质量,即满足使用要求的程度。
依据产品质量的特征将其归纳为如下:

2)过程质量,即能否满足开发所带来的成本、时间和风险等要求。
产品质量是建立在过程质量的基础上,只有保证软件过程质量,才能保证稳定的软件产品质量。
过程质量方面,采用主流的过程改进模型或过程规范,可以更有效地达到过程质量的目标。例如:SW-CMMI,A-SPICE, ISO26262, ISO9000,ISO16949等。
4. 软件测试工程师:尽可能早地找出软件缺陷,并确保其得以修复。
5. 软件质量保证人员:创建和执行改进软件开发过程并防止软件缺陷发生的标准和方法。
6. 软件验证&确认
在软件测试中不仅要检查程序是否出错、程序是否和软件产品的设计规格说明书一致,而且还要检验实现的正确功能是否就是用户所需要的功能,两者缺一不可,这两部分活动构成了一个完整的测试活动---著名的验证(Verification)和确认(Validation)
验证:即验证或检验软件是否已正确地实现了产品规格书所定义的系统功能和特性。
--是否正确地构造了软件?
确认:也称有效性确认,表明软件是否满足客户需求。
--是否构造了正确的软件?
7. 关于评审
由于人的认识不可能百分之百地符合客观实际,因此生命周期每个阶段的工作中都可能发生错误。
由于前一阶段的成果是后一阶段工作的基础,前一阶段的错误自然会导致后一阶段的工作结果中相应的错误,而且错误会逐渐累积,越来越多。
及时进行评审,可以减少修订缺陷的时间,提高编程效率;减少测试和调试时间;缩短开发周期;减少维护成本;测试工程师可以将更多的精力放在测试用例设计上,进一步提高测试效率。
评审对象:管理、技术、文档、过程
评审方法:轮查、走查、小组评审、审查等
评审技术:Checklist、规则集、评审工具(ARM等),场景等
更多关于评审的介绍可参阅:
1)软件质量保证和管理 作者 朱少民
2)从代码审查视角看软件质量 (qq.com)
https://mp.weixin.qq.com/s/n4LOl4oWZvIPp1KAcu3cMw
8. 关于测试
测试的目的,尽可能早地找出软件缺陷,并确保其得以修复。
测试对象:可工作的软件
测试方法:黑盒测试、白盒测试、灰盒测试
测试分层:单元测试、集成系统、系统测试、用户验收测试
测试技术:MIL、SIL、PIL、HIL、VIL、FT等
软件缺陷:软件BUG,如下情况都视为软件缺陷:
1)软件未实现需求要求的功能;
2)软件出现了需求指明不应该出现的错误;
3)软件实现了需求未提到的功能;
4)软件未实现需求虽未明确提及但应该实现的目标;
5)软件难以理解,不易使用,运行缓慢或者从测试员的角度看,最终用户会认为不好;
9. 架构师
通俗的说就是设计师或结构设计者,致力于简化复杂度,能迅速抓住问题要害,做出关键技术决策,具备战略性和前瞻性思维能力,善于把握全局,能够在更高抽象级别上进行思考。
建筑学有建造师,金融学有商业架构师,软件学有技术架构师,产品架构师,业务架构师,软件测试架构师。
10. 软件测试架构师
软件测试工程师发展的一个重要方向,致力于又快又准的发现系统的缺陷,做缺陷的预防,加快项目的发布进程,提高产品的质量。
软件测试架构师,需要像系统架构师一样理解产品的商业目标和用户使用场景,要从整体上把握测试节奏,为团队的关键测试活动(如测试设计,测试执行)提供辅导。要保证测试策略能够在整个团队中落地。