软件测试基础理论知识.docx

上传人:b****8 文档编号:9178428 上传时间:2023-02-03 格式:DOCX 页数:104 大小:600.34KB
下载 相关 举报
软件测试基础理论知识.docx_第1页
第1页 / 共104页
软件测试基础理论知识.docx_第2页
第2页 / 共104页
软件测试基础理论知识.docx_第3页
第3页 / 共104页
软件测试基础理论知识.docx_第4页
第4页 / 共104页
软件测试基础理论知识.docx_第5页
第5页 / 共104页
点击查看更多>>
下载资源
资源描述

软件测试基础理论知识.docx

《软件测试基础理论知识.docx》由会员分享,可在线阅读,更多相关《软件测试基础理论知识.docx(104页珍藏版)》请在冰豆网上搜索。

软件测试基础理论知识.docx

软件测试基础理论知识

测试理论培训资料

测试基础

1、软件测试的目的:

证明(表达软件能够工作)→检测(发现错误)→预防(管

理质量)

2、测试执行:

单元测试(UT执行):

一个测试用例的测试执行;

集成测试(IT执行):

一个测试用例集的测试执行;

系统测试(ST执行):

不同测试阶段的测试执行。

这几句话是什么意思,觉得不是很有针对性?

3、回归测试的目的:

a.验证错误是否修复;

b.检测对代码的修改是否引入了新的错误。

5、软件测试的主要工作:

a.检视代码,评审开发文档;

b.进行测试设计,写作测试文档(测试计划、测试方案、测试用例等);

c.执行测试,发现软件缺陷,提交缺陷报告,并确认缺陷最终得到了修正;

d.通过测试度量软件质量。

6、软件危机的出现主要表现在:

a.由于缺乏大型软件开发经验和软件开发数据积累,开发工作计划很难制定;

b.开发早期需求分析不够明确,造成开发后期矛盾集中暴露;

c.不遵循开发规范,开发文档不完整,软件难以维护;

d.缺乏严密有效的软件质量检测手段,交付给用户的软件质量差。

7、软件危机的后果:

a.软件质量不高,很难稳定;

b.软件项目延期,进度无法控制;

c.成本增加,无法控制预算。

8、软件危机的根源:

a.根据摩尔定律,硬件发展很快,相应对软件系统的期望

越来越高;

b.软件系统复杂性提高,需多人合作;

c.软件开发是人的智力活动,无法用已有的产业工程方法来组织管理。

9、软件生命周期的各个阶段:

计划→需求分析→设计→编码→测试→运行→评价

10、设计:

概要设计(HLD):

在设计阶段把各项需求转换成相应的体系结构,每一部分是功能明确的模块;

详细设计(LLD):

对每个模块要完成的工作进行具体的描述。

11、软件研发相关要素:

人员、过程、工具。

12、软件项目组人员组成:

分析人员、设计人员、开发人员、测试人员、配置管理人员、SQA(质量保证人员);

13、软件研发流程类型:

瀑布模型、螺旋模型、RVPRUP流程、IPD流程。

14、软件研发中几个重要的过程:

需求管理;配置管理;缺陷管理;同行评审。

15、常见的引入缺陷的原因:

a.开发过程缺乏有效的沟通,或者没有进行沟通;

b.软件复杂度越来越高;

c.编程中产生错误;

d.需求不断变更;

e.项目进度的压力;

f.不重视开发文档;

g.软件开发工具本身隐藏的问题。

等等……

软件质量

软件质量管理体系:

 

软件质量管理体系:

ISO9000(2000版)CMM六西格玛

ISO9001

ISO9000ISO9004

ISO9000:

2000版标准

ISO9000:

制定管理理念和原则

ISO9001:

标准对组织质量管理体系必须履行的要求做了明确的规定,是对产品要求的进一进补充。

(梳心)

ISO9004:

是组织进行持续改进的指南标准。

八项质量管理原则:

一.以顾客为中心:

组织依存于其顾客,因此,组织应理解顾客当前的和未来的需求,

满足顾客要求并争取赶超顾客期望。

二.领导作用:

领导者将本组织的宗旨.方向和内部环境编统一起来,并创造使员工能

够充参与实现组织目标的环境。

三.全员参与:

各级人员是组织之本,只有他们的充分参与,才能使他们的才干为组

织带来最大的收益。

四.过程方法:

将相关的资源和活动作为过程进行管理,可以更高效地得到期望的结

果。

五.管理系统方法:

针对设定的目标,识别.理解并管理一个由相互关联的过程的过程

所组成的体系,有助于提高组织的有效性和效率。

六.持续改进:

持续改进是组织的一个永恒的目标。

七.基于事实的决策方法:

对数据和信息的逻辑分析或直觉判断是有效决策的基础。

八.互利的供方关系:

通过互利的关系,增强组织及其供方创造价值的能力。

其中与软件产品产品优其相关有:

(一.三.六.七项)

1、软件质量的定义:

一个实体的所有特性,基于这些特性可以满足明显的或隐含的需求。

而质量就是实体基于这些特性满足需求的程度。

2、软件质量的三个层次:

a.符合需求规格;b.符合用户显示需求;

c.符合用户实际需求。

3、影响软件质量的因素:

流程、技术、组织。

流程:

一组活动(活动是否都是必须的;活动角色之间的关系)

过程:

一组将输入转化为输出的相关联或相互作用的活动。

4、八项质量管理原则的意义:

a.是质量管理的理论基础;

b.用高度概括易于理解的语言所表述的质量管理的最基本,最通用的一般性规律;

c.为组织建立质量管理体系提供了理论依据;

d.是组织的领导者有效的实施质量管理工作必须遵循的原则。

5、CMM软件质量成熟度模型

CMM(capabilltyMaturityMoelel)

由于美国软件工程研究所(SEI)受美国国防部委托立项。

开发人:

WattsHumphrey.

1991年推出CMM1.0版,1993年提出CMM1.1版

现在开发CMMI(CMMIntegration)

软件能力成熟度模型CMM(提唱过程决定质量)

持续改进过程

可预测的过程管理变更

标准.一致的过程产品过程质量

1初始级initial

不可预测并且缺控制

纪律的过程集成工程过程

项目管理

CMM1级

特点:

(个人英雄主义)

A项目的成功依赖于一个非常优秀的项目经理的团队。

B无法重复以往成功的实践。

C缺乏基本配置管理

可视度:

整个过程不可预测,不可见,不可控。

(过程管理非常混乱)

CMM2级

特点:

(有纪律)

能够重复以前成功的经验和实践。

引入合理需求变更(需求管理)

测试与开发分离,整个过程能力可概为有纪律的。

可视度

原始需求——需求分析——设计——编码——测试——产品

CMM3级

特点:

(有过程,经过同行评审)

组织中有一个专门负责组织的标准软件过程。

(SEPG)

可视度

同CMM2但整个过程是标准和一致的。

CMM4级特点

特点:

(量化管理)

过程能力是可预防的,因为过程是已测量的并在可测的范围内运行。

组织能定量地预测过程和产品质量方面趋势。

软件产品具有可预测的高质量。

可视度

同CMM3但整个过程是可预测的。

CMM5级特点

特点:

(改进过程本身)

通过缺陷来发现过程的不足。

新的开发技术触使改进过程。

可视度

同CMM¥级整个是以改进的。

CMM1:

初始级,Inltial,不可预测并且缺乏控制;

CMM2:

可重复级:

Repeatable,可重复以前的主要经验;

(关键过程区域:

需求管理;软件项目计划;软件项目跟踪和监督;软件子合同管理;软件质量保证;软件配置管理。

CMM3:

已定义级:

Defined,过程被描述,并得到良好理解;

(关键过程区域:

组织过程定义;组织过程焦点;培训大纲;集成软件管理;软件产品工程;组际协调;同行评审。

CMM4:

已管理级:

Managed,过程被测量并受控;

(关键过程区域:

定量的过程管理;软件质量管理。

CMM5:

优化级,Optimizing,关注过程改进。

(关键过程区域:

缺陷预防;技术变更管理;过程变更管理。

7、CMM的用途:

a.评估组用来识别组织中的强处和弱处;

b.评价组用来识别选择不同的业务承包商的风险和监督合同;

c.管理者用来了解其组织的能力,并了解为了提高其能力成熟度而进行软件过程改进所需进行的活动;

d.技术人员和过程改进组用来作为指南,指导他们在组织中定义和改进软件过程。

8、ISO9001和CMM的关系:

相似点:

强调管理、过程、规范化和文档化;

不同点:

CMM把焦点对准软件;ISO9001的范围包括:

硬件、软件、流程性材料和服务;

两者关系:

CMM2级与ISO9001强相关;CMM的每个关键过程域至少按某种解释与ISO9001弱相关。

六西格玛管理法(强调组织能力)

本质:

全面质量管理,而不仅仅是质量提高手段

六西格玛实施方式:

DMAIC过程

推行控制系统

4改进Improre

优化解决方案

3分析Anslyse

研究资料,确定原因

收集资料,寻找原因

提出问题,确定目标

9、软件质量模型:

功能性:

当软件在指定条件下使用时,软件产品提供满足明确和隐含需求的功能的能力。

包括:

适合性;准确性;互操作性;保密安全性;功能性的依从性。

可靠性:

在指定条件下使用时,软件产品维持规定的性能级别的能力。

包括:

成熟性;容错性;易恢复性;可靠性的依从性。

易用性:

在指定条件下使用时,软件产品被理解、学习、使用和吸引用户的能力。

包括:

易理解性;易学性;易操作性;吸引性;易用性的依从性。

效率:

在规定条件下,相对于所用资源的数量,软件产品可提供适当性能的能力。

包括:

时间特性;资源利用性;效率依从性。

维护性:

软件产品可被修改的能力。

修改可能包括修正、改进或软件对环境、需求和功能规格说明变化的适应。

包括:

易分析性;易改变性;稳定性;易测试性;维护性的依从性。

可移植性:

软件产品从一种环境迁移到另外一种环境的能力。

包括:

适应性;易安装性;共存性;易替换性;可移植性的依从性。

10、软件质量活动:

软件质量保证(SQA)和测试;SQA从流程方面保证软件的质量、测试从技术方面保证软件的质量、只进行SQA或者只进行测试活动不一定能产生好的软件质量。

11、SQA的主要工作范围:

·指导并监督项目按照过程实施;

·对项目进行度量、分析,增加项目的可视性;

·审核工作产品,评价工作产品和过程质量目标的复合度;

·进行缺陷分析,缺陷预防活动,发现过程的缺陷,提供决策参考,促进过程改进。

12、度量:

对事物属性的量化表示;

软件度量:

是指计算机软件中范围广泛的测度,包括对软件系统、构建或生命周期过程具有的某个给定属性的度的一个定量测量。

目的:

·提高软件生产率,缩短产品研发周期,降低研发成本、维护成本;

·提高软件产品质量,提高用户满意度;

·为组织持续改进提供量化的指标和反馈。

13、软件度量的作用:

理解;预测;评估;改进。

分类:

规模;工作量;进度;质量

如何将度量的知识应用于实际工作中:

建立测试工作的度量数据,目的是作为预测和改进的基础(a.熟悉需求:

进度、工作量、规模;b.设计用例:

工作效率、覆盖率;c.执行用例:

工作效率、缺陷密度;)

 

测试方法

1、什么是白盒测试:

·白盒测试是依据被测软件分析程序内部构造,并根据内部构造设计用例,来对内部控制流程进行测试,可完全不顾程序的整体共能实现情况;

·白盒测试是基于程序结构的逻辑驱动测试;

·白盒测试又可以被称为玻璃盒测试、透明盒测试、开放盒测试、结构化测试、逻辑驱动测试。

2、为什么进行白盒测试:

·一般在测试前期进行,通过达到一定的逻辑覆盖率指标,使得软件内部逻辑控制结构上的问难题能基本得到消除;

·能保证内部逻辑结构达到一定的覆盖程度,能够给予软件代码质量更大的保证;

·发现问题后解决问题的成本较低。

3、白盒测试的常用技术:

·静态分析:

控制流分析、数据流分析、信息流分析等;

·动态分析:

逻辑覆盖测试(分支测试、路径测试等)、程序插装等。

4、*控制流相关概念:

程序元素、控制流关系、控制流图、控制流矩阵。

(步骤:

5)

5、*控制流分析能发现的问题:

转向并不存在的标号;没有用的语句标号;从程序

入口进入后无法达到的语句;不能达到停机语句的

语句。

6、*数据流相关概念:

数据的定义;数据的引用。

(步骤:

3)

7、*数据流分析的左右:

分析代码中关于数据定义和引用方面的错误;进行代码优

化。

(赋值语句运算效率高)

8、*信息流分析:

输入变量和语句关系;语句和输出变量关系;输入和输出变量管

理。

(步骤:

4)

9、覆盖率工具的作用:

·分析被测试代码控制结构,决定插装位置;·实施插装;·将插装代

码重新编译;·执行被测对象,根据插装的监控哨信息统计覆盖率。

10、白盒测试的特点:

·测试人员需要了解软件的实现;·可以检测代码中的每条分支和路

径;·解释隐藏在代码中的错误;·对代码的测试比较彻底;·实现代

码结构上的优化;·白盒测试投入较大,成本高;·白盒测试不验证规

格的正确性。

11、什么是黑盒测试:

·黑盒测试把被测对象看成一个黑盒,只考虑其整体特性,不考虑其内部具体实现;

·黑盒测试针对的被测对象可以是一个系统、一个子系统、一个模块、一个子模块、一个函数等。

·黑盒测试又可以被称为基于规格的测试。

12、常见的黑盒测试类型:

功能性测试;容量测试;负载测试;恢复性测试。

13、*系统测试的时候,如果没有SRS时,有两类BUG无法发现:

需求遗漏;

需求偏差。

14、黑盒测试的优点:

·对于更大的代码单元来说(子系统甚至系统级)比白

盒测试效率要高;·测试人员不需要了解实现的细节,

包括特定的编程语言;·从用户的视角进行测试,很容

易被大家理解和接受;·有助于暴露任何规格不一致或

有歧义的问题。

15、黑盒测试的缺点:

·没有清晰的和简明的规格,测试用例是很难设计

的;·不能控制内部执行路径,会有很多内部程序路径

没有被测试到;不能直接针对特定的程序段,这些程序

可能非常复杂(因此可能隐藏更多的问题)。

16、动态和静态测试的分类依据在于:

被测对象是否运行起来。

17、手工静态分析——同行评审:

正规检视;技术评审;走查。

评审对象:

划、需求文档、设计图、代码等。

18、自动化静态分析:

静态验证;语法分析器;符号执行器。

Ø自动化测试的限制(板书):

·自动化测试不具备想象力,不能够检查脚本中给定的观察点之外的错误;

·自动化测试只能提高测试效率,不能提高测试效果,不能发现比人工测试更多的问题;如被测对象不稳定,存在变动性的话不适合开展自动化测试,否则脚本的编写和维护所耗费的时间可能远大于人工测试;

·只有手工测试积累到一定程度(提供更多的观察点),才能做好自动化测

试。

V&V模型(测试过程)

1、验证与确认V&V:

验证(VERIFICATION)强调过程;确认(VALIDATION)强调

结果。

2、V&V告诉我们:

·尽早测试(尽早准备、尽早执行);

·全面测试(文档、代码)

·全过程测试(测试参与到开发过程中、对测试过程全称跟踪)

·测试是独立的、迭代的。

 

3、单元、集成、系统测试的比较:

测试方法不同;考察范围不同;评估基准不同。

4、回归测试策略:

完全重复测试;选择性重复测试(覆盖修改法;周边影响法;指标达成方法;选择重要级别高的测试用例)

5、其他测试阶段:

验收测试;a(ALPHA)测试;B(BETA)测试。

6、主要的测试文档:

测试计划;测试方案;测试用例;测试规程;测试报告;测试日报。

单元测试

1、单元测试的目的:

在于发现各模块内部可能存在的各种错误主要是基于白盒测试。

·验证代码是与设计相符合的;·发现设计和需求中存在的错误;

·发现在编码过程中引入的错误。

(和设计不相符/和设计相符,但是由于

编码疏漏引起)

2、孤立的测试策略:

·方法:

不考虑每个模块与其他模块之间的关系,为每个模块设计桩模块和

驱动模块。

每个模块进行独立的单元测试。

·优点:

该方法是最简单,最容易操作的。

可以达到高的结构覆盖率。

该方法是纯粹的单元测试。

·缺点:

桩函数和驱动函数工作量很大,效率低。

3、自顶向下的单元测试策略:

·方法:

先对最顶层的单元进行测试,把顶层所调用的单元做成桩模块。

次对第二层进行测试,使用上面已测试的单元做驱动模块。

如此类

推直到测试完所有模块。

·优点:

可以节省驱动函数的开发工作量,测试效率较高。

·缺点:

随着被测单元一个一个被加入,测试过程将变得越来越复杂,并且

开发和维护的成本将增加。

4、自底向上的单元测试策略:

·方法:

先对模块调用层次图上最低层的模块进行单元测试,模拟调用该模

块的模块做驱动模块。

然后再对上面一层做单元测试,用下面已被

测试过的模块做桩模块。

以此类推,直到测试完所有模块。

·优点:

可以节省桩函数的开发工作量,测试效率较高。

·缺点:

不是纯粹的单元测试,底层函数的测试质量对上层函数的测试将产

生很大的影响。

5、单元测试的四个阶段:

·测试计划:

完成单元测试计划;

·测试设计:

完成单元测试方案;

·测试实现:

完成单元测试用例、单元测试规程、单元测试脚本及数据文件;

·测试执行:

执行单元测试用例,修改发现的问题并进行回归测试,提交单元测试报告。

✧单元测试:

桩&驱动举例:

无论是单元测试还是集成测试都涉及到以下三个函数:

主控函数:

intctrl(intx,inty)

加法函数:

intadd(intx,inty)

减法函数:

intsub(intx,inty)

注意:

进行单元测试时,设计用例时依据的是LLD;进行集成测试时,设计测试用例依据的是HLD。

下面给出来的是需要测试的实际的代码。

intctrl(intx,inty)

{

inttemp=0;

if(x>=y)

temp=add(x,y);

else

temp=sub(x,y);

returntemp;

}

intadd(intx,inty)

{

return(x+y);

}

intsub(intx,inty)

{

return(x-y);

}

✧自顶向下单元测试策略

不同测试步骤中的驱动可以写到一起,也可以分开写,这里是写到一起了。

✓测试ctrl函数

需要写一个驱动和两个桩。

Ø驱动函数

voiddriver()

{

intret=0;

ret=ctrl(2,1);//x>y

if(ret==3)

printf(“testcaseJISUAN_UT_CTRL_001pass”);

else

printf(“testcaseJISUAN_UT_CTRL_001fail”);

ret=ctrl(1,1);//x=y

if(ret==2)

printf(“testcaseJISUAN_UT_CTRL_002pass”);

else

printf(“testcaseJISUAN_UT_CTRL_002fail”);

ret=ctrl(1,2);//x

if(ret==-1)

printf(“testcaseJISUAN_UT_CTRL_003pass”);

else

printf(“testcaseJISUAN_UT_CTRL_003fail”);

}

Ø桩函数

intstub_add(intx,inty)

{

if(x==2&&y==1)

return3;

if(x==1&&y==1)

return2;

return999999;

}

intstub_sub(intx,inty)

{

if(x==1&&y==2)

return-1;

return999999;

}

Ø修改代码

为了让桩能体现在测试过程中,需要修改ctrl函数:

intctrl(intx,inty)

{

inttemp=0;

if(x>=y)

temp=stub_add(x,y);

else

temp=stub_sub(x,y);

returntemp;

}

✓测试add函数

Ø驱动函数

同测试ctrl函数时的驱动

Ø桩函数

同测试ctrl函数时sub函数对应的桩

Ø修改代码

intctrl(intx,inty)

{inttemp=0;

if(x>=y)

{

temp=add(x,y);

if(x==2&&y==1&&temp==3)

printf(“testcaseJISUAN_UT_ADD_001pass”);

else

printf(“testcaseJISUAN_UT_ADD_001fail”);

if(x==1&&y==1&&temp==2)

printf(“testcaseJISUAN_UT_ADD_002pass”);

else

printf(“testcaseJISUAN_UT_ADD_002fail”);

}

else

temp=stub_sub(x,y);

returntemp;

}

✓测试sub函数

Ø驱动函数

同测试ctrl函数时的驱动

Ø桩函数

Ø修改代码

intctrl(intx,inty)

{

inttemp=0;

if(x>=y)

temp=add(x,y);

else

{temp=sub(x,y);

if(x==1&&y==2&&temp==-1)

printf(“testcaseJISUAN_UT_SUB_001pass”);

else

printf(“testcaseJISUAN_UT_SUB_001fail”);

}

returntemp;}

 

集成测试

一.What:

什么是集成测试

•集成测试(IntegrationTesting)集成测试也叫组装测试、联合测试、部件测试、子系统测试

•集成测试测什么

1.外部接口:

各件呐在一起后表现的功能

2.内部接口:

各件间的接口是否正确Ä

•集成苏的目的

验证软件的组建对概要设计说明书的符合度

•集成测试的评估基准:

接口覆盖率

A.接口被测试到的百分比

B.接口的等价类、边界值的覆盖率

二.Why:

为什么要做集成测试

•一些模块虽然能够单独地工作,但并不能保证连接起来也能正常的工作。

•程序在某些局部反映不出来的问题,在全局上很可能暴露出来,影响功能的实现。

•虽然已经有了IT和ST,但IT和UT、ST关注点不一样,它们互为补充

•反分解性公理:

为一个被测模块获得的覆盖并不能覆盖他所调用的模块。

•反组合性公理:

对于一个模块中的对各子模块分别合适的测试包并不一定对作为一个整体的模块合适

三.Who:

谁做集成测试

•开发人员做

A优势:

一般来说,编程能力稍强

B劣势:

Protect(就像变形金刚的汽车人),心理上不愿意否定自己的劳动成果,职责是保护程序

•测试人员做

A优势:

Destroy(就像变形金刚的霸天虎),心理上追求完美,职责是挑刺、破坏程序

B劣势:

目前的现状,大部分tester编程能力不够

四.When:

什么时候做集成测试

4.1集成测试所处的测试过程

•集成测试所处的测试过程

A.测试准备活动在开发活动时可以并行开展,如开始做HLD设计时就可以开始做ITP了

B.测试执行活动在单元测试的基础上进行

五.Whe

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1