软件测试与质量保证
1.质量
1.质量是一组固有特性满足要求的程度。
2.质量是系统、部件或过程满足客户或用户明确需求或期望的不同程度
3.质量的属性 客户属性,成本属性,社会属性,可测性,可预见性
4.质量管理是指在质量方面( 指挥 )和( 控制 )组织的协调的活动
5.致力于制定质量目标并规定必要的运行过程和相关资源以实现质量目标,称之为质量策划
6.著名的质量管理专家朱兰提出的质量管理三步曲是指质量策划、质量控制、质量改进
7.据权威部门统计,软件错误产生的原因分布图表中,软件需求规格说明错误是导致软件错误的主要原因。
8.劣质成本经过质量保证,是无法被消除的
9.复杂度度量,用于估计或预测软件产品的可测试性,可靠性可维护性
1.1 软件缺陷:
从产品内部看,软件缺陷是软件产品开发或维护过程中所存在的错误、毛病等各种问题。
从外部看,软件缺陷是系统所需要实现的某种功能的失效或违背。
任何不符合客户需求的地方都可以认为是缺陷。
永远会有缺陷类型在一个层次上被发现,然后在另一个层次上逃避检测。
2.软件质量:
1.软件质量是软件产品满足规定的和隐含的与需求能力有关的全部特征和特性。
2.软件质量
3a特性:可说明性,有效性,易用性
三维特性:功能性,可靠性,性能
三个方面:产品,开发过程,商业环境
3.V 模型造成需求分析阶段隐藏的问题一直到后期的验收测试才被发现
4.软件需求规格说明错误 选项是导致软件错误的主要原因
5.六西格玛模型分为界定、测量、分析、改进、控制等5个阶段。
6.六西格玛组织结构从上到下分为 倡导者 、 黑带主管(大师)、 黑带 、 绿带 。
7..软件使用者整个世界 硬件使用通常局限在某个地区
8.定义:满足与 需求能力 相关的全部特征·
9.简单评价ISO模型、McCall模型和Boehm模型3种软件质量模型。
存在差别:软件质量特性、影响因素或质量指标的定义不完全一致;总体上要表达的思想非常接近;
目的相同:构造软件质量因素-准则-度量,3者综合的软件质量结构模型;
ISO模型第一层(质量特性)和第二层(准则)的关系非常清楚,不像McCall模型和Boehm模型那样存在交叉关
系。
3.质量度量:
1.语法构造方法计算缺陷率的公式是: 0.15 + 0.23 DO WHILE+ 0.22SELECT+ 0.07 IF-THEN-ELSE
2.最重要的指标 :可靠性与有效性
3.测量是一个定量的指示,度量是一个定量测量
4.修复缺陷成本最高的是发布阶段
5.测量的基本原则:
基于正确的理论
有说服力
方法应该力求简单
反馈机制
可靠性
自动化
4.质量标准:
1.根据CMMI规范,每一个软件企业均具有( 等级一 )成熟度。
2.cmm 模型将软件过程的成熟度分为 5 个等级,在( 管理级 )使用定量分析来不断地改进和管理软件过程。
3.初始级,可重复级,已定义级,已管理级,优化级。
4.在管理级使用定量分析管理过程
5.软件评审:
1.管理评审由最高管理者发起
2.评审报告可以看作是评审会结束的标志
3.文档评审分为格式评审和内容评审。
4.评审小组不包括sqa人员
5.评审不能增强可维护性
6.在软件设计中,设计复审是和软件设计本身一样重要的环节,其主要的目的和作用是为了能够 避免后期付出高代价
7.评审的方法包括临时评审,轮查,走查,小组评审,审查
8.文档评审包括,需求评审,内容评审,代码评审,质量验证评审
9.走查,审查的不同:
走查和审查的区别是其正式性的等级。其中,审查是两者之中更为正式。
走查的发现限于被评审文档的意见,而审查的发现还同改进开发方法自身的工作相结合。
所以和走查相比,审查对一般的SQA做出了更大贡献。
10.为什么要评审:1技术上 成本上 效率上
从成本上来衡量:缺陷发现得越晚纠正费用越高,而软件评审的重要目的就是通过软件评审尽早的产品中的缺陷,
减少大量的后期返工。
从技术上来衡量:前一阶段的错误自然会导致后一阶段的工作结果中有相应的错误,而且错误会逐渐累积,越来越
多。
从效率上来衡量: 开发工程师:减少修订缺陷的时间,提高编程效率;减少测试和调试时间 项目负责人:缩短开
发周期;减少维护费用;项目风险和质量问题得到很好控制 测试工程师:可以将更多精力放到测试用例的设计上,
提高测试效率 维护人员:维护工作减少;产品的可维护性增强
6.SQA组织:
1.SQA计划实施步骤的第一步是 了解项目的需求,明确项目SQA计划的要求和范围
2.软件工程过程组类似于一个“立法”机构,而SQA则类似于一个“监督”机构
3.在企业中,最常见的sqa组织时是软件测试部门和软件质量保证组织
4.项目的进度管理是一个动态的过程,需要不断调度、协调,保证项目的均衡发展。
5.软件设计阶段的质量控制主要采取的方式是评审
6.测试人员应在软件生命周期中的需求阶段介入最好
7.项目的进度管理是一个动态的过程
7.软件设计:
1.数据耦合、控制耦合、公共环境耦合、内容耦合耦合度从低到高
2.软件设计是软件开发的重要阶段之一,是把软件需求转换为软件表示的过程,也是将用户需求准确转化为软件系统的唯一途径。
设计过程中,始终以质量为目标而展开
设计越简单越好
软件设计的指导思想
降低模块耦合度
提高模块内聚性
将软件需求转化为数据结构和软件的系统结构,并定义子系统和它们之间的通信或接口是哪个阶段的任务( 概要设计 )
下列耦合度从低到高排列正确的是( 数据耦合、控制耦合、公共环境耦合、内容耦合 )
软件设计的技术原则包括( 开-闭原则;接口隔离原则;迪米特法则;单一职责原则 )
8.高质量编程:
建议文件结构包含三部分内容,包括:定义文件开头处的版权和版本声明
建议文件结构包含三部分内容,包括:定义文件开头处的 版权 和 版本 声明;对一些头文件的引用;程序的实现体(包括数据和代码)。
正常值用 输出参数 获得,错误标志用 return**语句** 返回
以下属于Windows程序命名规则的是( 全局函数的名字应当使用“动词”或者“动词+名词”;静态变量加前缀s。如果必须定义使用全局变量,则在全局变量前加g;常量全用大写的字母,用下划线分割单词 )
全局变量不要放在动态内存上。
9.软件测试
按照是否需要知道被测试程序的内部结构,测试方法可以分为: 黑盒 测试和 白盒 测试。
动态测试的两个基本要素是 被测试程序 、 测试用例;
2.测试用例的组成:输入数据 预期输出结果
3.测试层次分类:单元测试,集成测试,系统测试。
4.beat测试是验收测试的一种。
5.功能测试是系统测试的主要内容,检查系统的功能是否与需求规格相同。
6.软件测试的目的是尽可能多的找出软件缺陷。
7.单元测试能发现百分之八十的软件缺陷
9.白盒测试:
白盒测试也称结构测试或逻辑驱动测试。
白盒测试会造成测试用例之间可能存在严重的冗余和未测试功能漏洞
白盒测试适合单元测试和集成测试
10.1 逻辑覆盖法:
逻辑覆盖包括六种覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
判定测试:每个判定:真假各一次
条件覆盖:每个条件的可能 取值一次
判定/条件覆盖
条件组合覆盖
路径覆盖
大题的话,给出一个c语言程序,然后画出流程图,然后根据流程图设计测试用例。
10.3 基本路径测试:
注意不能有死讯换,
把覆盖的路径数压缩到一定限度内,例如,程序中的循环体只执行零次和一次,就成为基本路径测试。
设计出的测试用例要保证在测试中,程序的每一个可执行语句至少要执行一次。
10.3.1 画出控制流图:
10.3.2 计算圈复杂度:
一种为程序逻辑复杂性提供定量测度的软件度量。
给定流图G的圈复杂度V(G),定义为V(G)=E-N+2,E是流图中边的数量,N是流图中结点的数量;
给定流图G的圈复杂度V(G),定义为V(G)=P+1,P是流图G中判定结点的数量。
10.3.3 导出测试用例:
根据上面的计算方法,可得出四个独立的路径。
一条独立路径是指,和其他的独立路径相比,至少引入一个新处理语句或一个新判断的程序通路。V(G)值正好等于该程序的独立路径的条数。
10.3.4 准备测试用例:
为了确保基本路径集中的每一条路径的执行,根据判断结点给出的条件,选择适当的数据以保证某一条路径可以被测试到。
10.4 程序插装
10.5 程序变异测试
11.黑盒测试:
在确定黑盒测试策略时,优先选用的方法是等价类划分
自动化黑盒测试工具中,脚本录制好后,只要执行脚本,就可以把测试过程重做一遍,这被称为回放,在自动化黑盒测试工具中,通过录制来得到脚本,可以减少工作量。
对于业务流清晰的系统可以利用场景法贯穿整个测试用例设计过程并在用例中综合使用各种测试方法。
黑盒测试法是根据产品的( 功能 )来设计测试用例的。
在确定黑盒测试策略时,优先选用的方法是( 等价类划分 )
设计测试用例时候,( 边界值分析 )是用得最多的一种黑盒测试方法。
黑盒测试也称为功能测试或者数据驱动测试
11.1 等价类划分:
根据输入 划分等价类 有效的和无效的都需要 然后根据划分的等价类设计测试用例
在划分了等价类后,首先需要设计一个案例覆盖( 尽可能多的 )有效等价类。无效等价类则一一对应。
11.2 边界值分析法:
是对输入或输出的边界值进行测试的一种黑盒测试方法。
边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。
边界值分析
假设有范围 比如1到6
那么取刚刚达到这个范围的值 和刚刚超过这个范围的值
0 1 6 7
作为等价类划分的补充
11.2.1 设计原则:
如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。
如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少1、比最大个数多1的数作为测试数据。
根据规格说明的每个输出条件,使用前面的原则①。
根据规格说明的每个输出条件,应用前面的原则②。
如果程序的规格说明给出的输入域或输出域是有序集合,应选取集合的第一个元素和最后一个元素作为测试用例。
如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构边界上的值作为测试用例。n分析规格说明,找出其他可能的边界条件。
11.3 因果图法:
因果图方法根据输出对输入的依赖关系设计测试用例。
适合于检查程序输入条件的各种组合情况。
等价类划分方法和边界值分析方法,着重考虑输入条件,未考虑输入条件之间的联系。
如果在测试时必须考虑输入条件的各种组合,可能的组合数将是天文数字。因此必须考虑使用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例,这就需要利用因果图。
因果图方法最终生成的就是决策表。它适合于检查程序输入条件的各种组合情况。