--软件测试的目的?
软件发布之前,为了确保提供给用户稳定的软件,测试人员必须事先进行测试,尽可能找出潜在的缺陷,并协助开发人员修改软件缺陷,以达到提高软件质量的目的
--SQA与软件测试有什么关系和区别?
SQA:管理工作,审查对象是流程,以预防为主
测试:技术工作,测试对象是产品,以事后检查为主
软件测试是为SQA提供依据,SQA为测试提供指导和监控(保证)
--测试用例是软件测试的核心
测试流程
--测试分类
白盒、黑盒、静态、动态、自动化、手工
黑盒:也叫功能性测试,主要测试软件功能是否符合需求
白盒:也叫结构测试或逻辑驱动测试,是对程序内部代码和逻辑进行的测试
静态:不运行程序凭借经验找出程序错误,也叫文档测试
动态:运行被测程序,看运行结果是否与预期结果一致
Alpha:一个用户在受控环境(开发环境)下测试,开发或测试人员要参与,主要注重界面和特色
Beta:多个用户在真实(非受控)环境下测试,开发或测试人员不参与
另外,回归测试
--白盒与单元与调试的区别
单元:单元测试是在软件开发过程中要进行的最低级别的测试活动,在单元测试活动中,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试;单元测试是一种
白盒测试,只有深入到系统内部,才能对软件内部逻辑控制结构上的问题进行清除,对发现、定位和解决问题将是最直接,最彻底的方式; 在效率方面,单元测试往往是集
成测试的2倍,系统测试的3倍;成本方面,一个问题如果遗留到后期阶段解决,那么付的代价将会很高,而且是成倍递增;单元测试首先要理解单元原本是要做什么的,而
不是它现在实际做了什么,我们更关心的是:模块或函数是否做了它该做的事情而没有做不该做的事情;主要依据详细设计的描述和源程序清单针对五部分内容进行测试:
模块接口、局部数据结构、边界条件、出错处理、独立路径;单元测试评估的标准是逻辑覆盖率;
单元测试:通常情况下是面向白盒的,对代码风格和规则、程序设计和结构、业务逻辑等进行静态测试,及早地发现和解决不易显现的错误
单元测试的内容:接口测试,内部数据结构,全局数据结构,边界– 语句覆盖,错误路径,边界条件
--集成测试的方法是什么,集成测试应该考虑哪些问题?(或者)
非增量;增量(自顶向下,自顶向上、混合策略)
另:大棒(即非增量)与三明治集成方法(新:先单元测试再集成、旧:不单元测试就集成)
应该考虑:
1、在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失;
2、各个子功能组合起来,能否达到预期要求的父功能;
3、一个模块的功能是否会对另一个模块的功能产生不利的影响;
4、全局数据结构是否有问题;
集成测试主要内容 :
API API/参数组合
系统测试主要内容:
所有功能需求得到满足, 所有性能需求得到满足, 其他需求(例如安全性、容错性、兼容性等)得到满足
压力测试:是为了发现系统能支持的最大负载,他的前提是要求系统性能处在可以接受的范围内,比如经常规定的页面3秒钟内响应;概括就是:在性能可以接受的前提下
,测试系统可以支持的最大负载
5、单个模块的误差积累起来,是否会放大,从而达到不可接受的程度。
--黑盒测试的几种方法,白盒测试的方法?
黑盒:等价类划分、边界值法、因果图、判定表、正交试验法、错误推断、
白盒:逻辑覆盖、基本路径覆盖
--软件缺陷等级如何划分,并列举每种等级包含的错误。
致命:主要功能完全丧失,数据受到破坏,引起系统崩溃、挂起、死机,造成人生伤害
严重:主要功能部分丧失、次要功能完全丧失,数据不能保存,功能服务受到明显影响
一般:次要功能未完全实现,但不影响正常使用(提示信息不准、界面差、操作时间长)
较小:操作不便、不影响操作和使用(错别字、排列不整齐)
--基于WEB信息系统测试时应该考虑的因素?(适用于其他系统)
功能测试:连接测试、表单测试、cookie测试、(设计语言测试)、数据库测试
性能测试:连接速度测试、负载测试、压力测试
界面测试:导航测试、图形测试、内容测试、整体界面测试
客户端兼容性测试:平台测试、浏览器测试
安全性测试:数据库、CSS问题、数据注入问题
--软件测试结束的标准?
用户给的最终期限
测试用例执行的通过率
BUG是否都被修复
代码覆盖率、功能覆盖率的百分比
BUG的出现率降低到一个标准
Alpha、beta测试是否完成
--什么是CMM,分为哪几个级别?(另:CMMI)
能力成熟度模型:初始级,可重复级,已定义级,管理级,优化级
黑盒
功能测试的内容可以归结为:
界面(UI)测试:指测试系统界面整体布局的合理性
数据测试:指接受正确的数据输入,并对异常数据的输入有提示和容错处理
操作测试:内容包括所以菜单、按钮的设计须符合操作习惯,能对操作有正确响应,而且操作灵活,符合用户习惯。
逻辑测试:此测试是使逻辑合理、清楚、流畅、不复杂。
接口测试:是让接口能配合多种硬件周边设备,以及所需的3方软件接口或者公共接口的需要
方法:等价类划分、边界值分析、因果图、判定表驱动法、正交试验、比较法、错误推测
等价类划分设计方法(分为有效等价类划分和无效等价类划分):
是把所有可能的输入数据,即程序的输入数据集合划分成若干个子集(即等价类),然后从每一个等价类中选取少数具有代表性的数据作为测试用列。
1)有效等价类
是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。
2)无效等价类
与有效等价类的定义恰巧相反。无效等价类指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能有
多个
设计测试用例时,要同时考虑这两种等价类。因为软件不仅要能接收合理的数据,也要能经受意外的考验,这样的测试才能确保软件具有更高的可靠性。
举例:需要为一个对所有实数进行开方运算的程序设计测试用列。
解答:所有的实数(输入域)进行划分,可以划分为:
正实数,+3.1415926代表正数
负实数,-1.444444代表负数
0
则+3.1415926,-1.444444,0就是3个等价类的特征值
进行等价类划分时,一般都可归为以下几种情况:1,输入数据是布尔值2,在输入条件规定了取值范围或者个数的前提下3,在输入条件规定了输入 值的集合或者规
定了“必须如何”的条件下4,规定了一组列表形式(N个值)的输入数据,并且程序要对每一个输入值分别进行处理的情况下5,更复杂的情况是,输入数据只是要求
符合某几个规则
边界值分析法
是指对输入的边界值条件进行分析,设计出针对边界值的测试用例。边界分析法是对等价类划分法的补充。
下面是边界值分析法和等价类划分方法结合起来使用的典型例子:
等价分析法和边界值分析法,主要是针对单个输入数据来设计测试用例的,没有考虑多种输入数据的组合情况。
因果图法:就是利用图解法分析软件输入(原因)和输出条件(结果)之间的关系,以设计测试用例的方法。
因果图适合于检查程序输入条件的多种情况的组合,并最终生成判定表,来获得对应的测试用例
决策表
决策表又称判断表,是一种呈表格状的图形工具,适用于描述处理判断条件较多,各条件又相互组合、有多种决策方案的情况。
决策表通常由4个部分组成:
条件桩,列出问题的所有条件,不强调条件的次序关系
动作桩,列出问题规定可以采取的操作
条件项,列出针对条件桩的取值
动作项:列出在条件项的各种取值情况下应该采取的动作。
决策表的优点:
决策树能罗列出所有的可能情况,并清晰的指出相应的处理方式,用户不需要考虑其中的逻辑关系就能一眼看出其中什么样的动作对应什么样的情况,这比程序语言中层
层嵌套的逻辑语句要强多了。而所有可能情况的平面罗列,也能避免在程序语言编写中,因为逻辑上的层层嵌套而产生遗漏,尤其在if-then-else结构中else部分是可选的情
况下。
因为逻辑控制在编程中的重要地位,决策表成为设计逻辑控制时十分重要的一个工具。
功能图法
是描述程序状态变化、转移的过程,因为软件运行或操作的过程可以看做是其状态不断发生变化的过程。测试用例的设计就是如何覆盖所有软件所表现出来的状态。同时
要依靠判定表或因果图表示的逻辑功能
使用功能图法设计测试用例,是借助功能模型图模型来实现的,而功能图模型由状态迁移图和逻辑功能模型组成。
错误推测法
主要依赖经验、直觉来做出简单的判断甚至猜测,给出可能存在缺陷的条件、场景等,在找到缺陷后,设计出相应的测试用例
**正交实验设计法
是研究多因素多水平的一种设计方法。它基于Galois理论,根据正交性从全面实验中挑选出部分有代表性的点进行实验的。这些点具备“均匀分散,齐整可比”的特点。
白盒:设计用例的方法:逻辑覆盖; 基本路径测试
逻辑覆盖法
(1)语句覆盖:使程序中每个语句至少执行一次;语句覆盖是最弱的逻辑覆盖
(2)判定覆盖:(分支覆盖) 使每个判定的真假分支都至少执行一次;判定覆盖仍是弱的逻辑覆盖
(3)条件覆盖:使每个判定的每个条件的可能取值至少执行一次
第一判定表达式:
设条件 A>1 取真 记为 T1
假 !T1
条件 B=0 取真 记为 T2
假 !T2
第二判定表达式:
设条件 A=2 取真 记为 T3
假 !T3
条件 X>1 取真 记为 T4
假 !T4
条件覆盖不一定包含判定覆盖
判定覆盖也不一定包含条件覆盖
(4)判定/条件覆盖:选取足够多的测试用例,使判断中的每个条件的所有可能取值至少执行一次,同时每个判断本身的所有可能判断结果至少执行一次.
(5)条件组合覆盖:所有可能的条件取值组合至少执行一次
A>1, B=0
A>1, B≠0
A≯1, B=0
A≯1, B≠0
A=2, X>1
A=2, X≯1
A≠2, X>1
A≠2, X≯1
(6)路径覆盖:覆盖每一个可能的路径
基本路径测试法
通过分析由控制构造的环路的复杂性,导出基本路径集合,从而设计测试用例,保证这些路径至少通过一次。
基本路径测试步骤:
导出程序流程图的拓扑结构-流图
(程序图)
计算流图G的环路复杂度V(G)
确定只包含独立路径的基本路径集
设计测试用例
设计测试用例,保证基本路径集中每条
路径的执行。
程序复杂程度的定量度量:
定量度量程序复杂程度的方法很有价值:把程序的复杂程度乘以适当常数即可估算出软件中错误的数量以及软件开发需要用的工作量,定量度量的结果可以用来比较两个不
同的设计或两个不同算法的优劣,程序的定量度量的复杂度可以作为模块规模的精确限度。
McCabe方法:
McCabe方法根据程序控制流的复杂度定量度量程序的复杂程度,这样度量出的结果称为程序的环形复杂度,
为了突出表示程序的控制流,人们通常使用流图,他仅仅描绘程序的控制流程,完全不表示对数据的具体操作以及分支或循环的具体条件。
在流图中用圆表示节点,一个圆代表一条或多条语句。流图中的箭头称为边,它和程序流程图中的箭头线类似,代表控制流。在流图中一条边必须终止于一个结点,即使这
个节点并不代表任何语句,又边和结点围成的面积称为区域,当计算区域数时应该包括图外部分未被围起来的那个区域。