测试(软件质量)

----------------------------------------------------------------------------
软件质量定义,从3方面评价:
1、符合需求规格:这是生产者关于质量的观念,质量就是满足生产者的需求或规格说明书
---内部质量:从软件启动到交付用户之间产生的所有中间产品的质量
2、符合用户显式要求:符合用户所明确说明的目标
---验收质量:用户在验收时评价产品的质量
3、符合用户实际需求:实际的需求包括用户明确说明的和隐含的需求,需关注隐含的需求
---使用质量:用户在实际使用过程中对产品的质量评价
------------------------------------------------------------------------------
质量铁三角
    组织(人)<<----->>流程(过程)<<----->>技术(工具)
组织是流程成功实施的保障;流程对产品的成功有着关键作用;人是技术的载体;三者共同决定软件质量

1、流程(Flow):一个或一系列有规律的行动,这些行动以确定的方式发生或执行,导致特定的结果
流程的要素:
    ?角色(roles)
    ?职责(responsibility)
    ?入口准则(entry criteria):开始必须满足的条件或环境
    ?输入(inputs)
    ?输出(outputs)
    ?出口准则(exit criteria):结束必须满足的条件或环境
    ?工具(tools)
    ?方法(method)
    ?培训(training):外界或第三方支持
    ?模板(templates):用到的规格格式样本
    ?度量(measurements):度量指标
    ?检查表(check list):QA检查依据
好处:
    1、使不可见的软件开发过程变得可见并可控
    2、流程驱动每一个研发人员的活动,减少内耗,提高效率

2、技术
    1、技术的承载着是人,包含现有员工所承载的技术能力以及公司发展过程中积累下来的技术能力
    2、从类型分:开发技术、测试技术、结构工艺技术
技术与流程的关系:
    1、光有技术没有规范的流程,无法进行现代化的软件研发
    2、光有好的流程,没技术支持,同样无法产出高质量的软件产品
3、组织
    1、组织对技术的影响
    >组织能确保具备具备相应技术能力的人去从事相应的技术活动
    >是否重视对技术的积累:专利的申请、保护,建立案例库
    2、组织对流程的影响
    >必须为流程的执行提供强有力的保证,流程=规章制度、约束条件
    >流程没有执行力,遇到阻碍时,需要组织强有力的推行
-------------------------------------------------------------------------------------------
软件质量管理体系
ISO(International organization for standardization):是普遍适用的质量管理体系
CMM(capability maturity model):特定针对软件行业的质量管理体系,精髓在于过程决定质量
CMMI(capability maturity model Integration):能力成熟度模型集成
6sigma:不具体针对某个行业,不只关注质量,还关注成本,进度等
6sigma管理原则:
    >注重客户
    >注重流程
    >全员参与
    >预防为主
    >事实依据决定
    >持续和突破性改进
6sigma改进区域:
    >周期时间(流程速度,回应能力)
    >输出物的变差(产品或服务的直通率,缺陷成本降低,客户满意升高)
    >营运效率(更低成本)
6sigma实施方案:DMAIC(define measure analyze improve control)
define:确定要解决的问题(项目章程)
measure:测量结果(测量系统/过程流程图)
analyze:分析何时何地为何产生缺陷(鱼骨图/统计工具/柏拉图)
improve:如何改进过程(试验实际法/回归分析/头脑风暴/action plan)
control:如何保持过程的改善(测量系统严密监测)
-----------------------------------------------------------------------------------------
软件质量模型

1、功能性functionality---当软件在指定条件下使用,软件产品提供满足明确和隐含需求的功能的能力
    >适合性suitable(有没有)---软件产品为指定的任务和用户目标提供一组合适的功能的能力。即提供的功能是用户所需要的,用户所需的功能软件系统已提供
    >准确性accuracy(对不对)---软件产品提供具有所需精度的正确或相符的结果或效果的能力。即软件除了能实现所要求的功能外,还要求正确实现所要求的功能
    >互操作性interoperability---软件产品与一个或更多的规定系统进行交互的能力
    >保密安全性security---软件产品保护信息和数据的能力。主要分两方面:1.防止未得到授权的人或系统访问相关的信息和数据  2.保证得到授权的人或系统能正常访问相关的信息和数据
常见的安全性测试:
    (1)用户验证:登陆密码验证、ip地址访问限制等
    (2)用户权限管理:验证低级别用户是否具有了高级别用户的权限,各级别用户权限都得到实现
    (3)系统数据的保护:如对系统文件、用户密码文件等进行隐藏、密码验证、内容加密、备份
    (4)防Dos(denial of service)攻击:拒绝服务攻击,解决办法:限制请求次数
    (5)防溢出攻击:设置长度验证
    (6)加密解密:信息加密传输
    (7)防病毒:
    >功能性的依从性functionality compliance---软件产品遵循与功能性相关的标准、约定或法规以及类似规定的能力

2、可靠性reliability---指定条件下使用时,软件产品维持规定的性能级别的能力。三要素“三规”---规定的环境、规定的时间、规定的性能
可靠性指标:
    MTTF(mean time to failure,平均无故障时间)
    MTTR(mean time to restoration,平均恢复时间)
    MTBF(mean time between failures,平均失效间隔时间)
    
    >成熟性maturity(内部接口防范)---软件产品为避免由软件中的错误而导致失效的能力。主要指软件避免自身的错误、自身模块间的错误而导致整个软件失效
    >容错性fault tolerance(外部接口防范)---在软件出现故障或者违反指定接口的情况下,软件产品维持规定的性能级别的能力(注:规定的性能级别可能包括失效防护能力)
    >易恢复性recoverability---在失效发生时,软件产品重建规定的性能级别并恢复受直接影响的数据的能力。包括原有能力恢复的程度和原有能力恢复的速度
    >可靠性的依从性reliability compliance---软件产品遵循与可靠性相关的标准、约定或法规的能力
3、易用性usability---在指定条件下使用时,软件产品被理解、学习、使用和吸引用户的能力
    >易理解性understandability---软件产品使用户能理解软件是否合适以及如何能将软件用于特定的任务和使用环境的能力,系统交互给用户的信息是否准确、清晰、易懂。
    >易学性learnability---软件产品使用户能学习其应用的能力。如用户手册
    >易操作性operability---软件产品使用户能操作和控制它的能力
    >吸引性attractiveness---软件产品吸引用户的能力
    >易用性的依从性usability compliance --- 
4、效率efficiency---在规定条件下,相对于所用资源的数量,软件产品可提供适当性的能力
    >时间特性time behavior --- 软件执行其功能时,提供适当的响应和处理时间以及吞吐率的能力
    >资源利用resource utilization ---软件执行其功能时,使用合适的资源数量和类别的能力
    >效率依从性efficiency compliance ---
5、可维护性maintainability --- 软件产品可被修改的能力,包括修正、改进或环境、需求、功能规格变化的适应
    >易分析性analyzability(降低定位缺陷的成本)---软件产品诊断软件中的缺陷或失效原因或识别待修改部分的能力
    >易改变性changeability(降低修改缺陷的成本)---软件产品使指定的修改可以被实现的能力,包括编码、设计和文档的更改
    >稳定性stability --- 软件产品避免由于软件修改而造成意外结果的能力
    >易测试性testability --- (降低发现缺陷的成本)--- 软件产品使已修改软件能被确认的能力
    >维护性的依从性maintainability compliance --- 软件产品遵循与维护性相关的标准或约定的能力
6、可移植性portability --- 软件产品从一种环境迁移到另外一种环境的能力
    >适应性adaptability --- 软件产品无需采用有别于为考虑该软件的目的而准备的活动或手段就可适应不同的指定环境的能力
    >易安装性installability --- 软件产品在指定环境中被安装的能力
    >共存性co-existence--- 软件产品在公共环境中同与其分享公共资源的其他独立软件共存的能力
    >易替换性replaceability --- 软件产品在同样环境下,替代另一个相同用途的指定软件产品的能力
    >可移植性的依从性protability compliance --- 
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
软件质量活动---软件质量保证(SQA)和测试
    SQA从流程上保证软件的质量;测试从技术方面保证软件的质量
SQA工作范围:1、保障制度体系 2、促使过程改进 3、指导项目实施 4、增加透明度 5、评审项目活动
    6、审核工作产品 7、协助问题解决 8、提供决策参考 9、进行缺陷预防 10、实现质量目标
PDCA循环:plan--计划--》do--执行--》check--检查--》action--行动
---------------------------------------------------------------------------------------------------------------    
度量:对事物属性的量化表示
软件度量:指计算机软件中范围广泛的测度,包括对软件系统、构成或生命周期过程具有的某个给定属性的    度的一个定量测量
目的:
    提高软件生产率,缩短产品研发周期,降低研发成本、维护成本
    提高软件产品质量,提高用户满意度
    为组织持续改进提拱量化的指标和反馈
软件度量的类型:
    过程质量---过程优化和改进
    产品度量---产品评估和决策
    项目度量---项目控制和评估
四个基本度量项:
    》规模(size):产品大小
    》工作量(effort):完成软件产品和活动所用人时或人天
    》进度(schedule):各软件产品的活动时间和结束的时间
    》质量(quality)-缺陷(defect):在各软件工作产品和活动中产生的缺陷数

猜你喜欢

转载自blog.csdn.net/Alright_Well/article/details/81666789