更多课程 选择中心

软件测试培训
美国上市教育机构

400-111-8989

软件测试培训

软件测试基础理论你知道多少?

  • 发布:软件测试培训
  • 来源:寒蚁
  • 时间:2019-05-15 15:50

一、软件测试的含义

1、软件测试的经典定义:在规定的条件下对程序(文档、数据、程序)进行操作,以发现错误,对软件质量进行评估。

2、软件测试范围是对软件形成中的文档、数据以及程序进行的测试,而不仅仅是对程序进行的测试。

3、软件测试的重要性:60%以上的软件错误并不是程序错误,而是分析和设计错误,因此做好软件需求和设计阶段的测试工作就显得非常重要。

二、软件测试的目的

测试的目的不仅仅是为了发现软件缺陷与错误,而且也是对软件质量进行度量和评估,以提高软件的质量。

测试是程序的执行过程,目的在于发现错误;

一个好的测试用例在于能发现至今未发现的错误;

一个成功的测试是发现了至今未发现的错误的测试。

三、软件测试的对象

1、根据软件的定义,软件包括程序、数据、文档,所以软件测试并不仅仅是程序测试。软件测试贯穿于整个软件生命周期中。

2、由于在整个软件生命周期中,各阶段有不同的测试对象,形成了不同开发阶段的不同类型的测试。需求分析、概要设计、详细设计以及程序编码等各阶段产生的文档,包括需求规格说明、概要设计规格说明、详细设计规格说明以及源程序,都应作为“软件测试”的对象。

四、软件测试的分类——从不同的角度进行分类

1、根据开发阶段划分为:单元测试、集成测试、系统测试、确认测试、验收测试

——什么是单元测试

单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。

对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。

总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。

单元测试包含内容:--入口和出口函数、--输入和输出信息、--错误处理信息、--部分边界数值测试

——什么是集成测试

集成测试,也叫组装测试或联合测试。

在单元测试的基础上,将所有模块按照设计要求(如根据结构图〕组装成为子系统或系统,进行集成测试。

实践表明,一些模块虽然能够单独地工作,但并不能保证连接起来也能正常的工作。程序在某些局部反映不出来的问题,在全局上很可能暴露出来,影响功能的实现。

集成测试包括两种方法:--非增量式集成 --增量式集成:自顶向下增量式测试、自底向上增量式测试

——什么是确认测试

确认测试的目的是向未来的用户表明系统能够像预定要求那样工作。

经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是确认测试的任务,即软件的功能和性能如同用户所合理期待的那样。

确认测试范围:--文档、--源码、--版本、--模块、--人员、--环境、--工具

——什么是系统测试(System Testing)

将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试.

系统测试是针对整个产品系统进行的测试

目的:验证系统是否满足了需求规格的定义,找出与需求规格不符或与之矛盾的地方,从而提出更加完善的方案

系统测试发现问题之后要经过调试找出错误原因和位置,然后进行改正。是基于系统整体需求说明书的黑盒类测试,应覆盖系统所有联合的部件。

系统测试对象不仅仅包括需测试的软件,还要包含软件所依赖的硬件、外设甚至包括某些数据、某些支持软件及其接口等。

系统测试范围:--功能、--界面、--性能、--安全性、--安装、--卸载、--易用性、--兼容性等

——什么是验收测试

它是一项确定产品是否能够满足合同或用户所规定需求的测试。这是管理性和防御性控制

主要确认软件是否按合同要求进行工作,既是否满足软件需求规格说明书中的要求。

验收测试分类:

非正式的验收测试

--А(alpha)测试:软件开发公司组织内部人员模拟各类用户行为对即将上市的产品进行测试。

--ß(beta)测试:软件开发公司组织各方面的的典型客户在日常工作中实际使用,并要求用户报告异常情况、提出改进意见,然后公司再进行完善。

正式的验收测试

有正规的测试过程,需要制定测试计划、定义测试方案、选择测试用例,进行测试,结果提交。着重考虑软件是否满足合同规定的所有功能和性能,文档资料是否完整、准确,人机界面和其他方面。

2、根据是否运行程序划分:静态测试、动态测试

——什么是静态测试

不运行被测试的软件,而只是静态的检查代码、界面或者文档

 什么是静态测试

桌面检查程序员对源程序代码进行分析、检验,并补充相关的文档,发现程序中的错误

代码审查程序员和测试员组成的审查小组通过阅读、讨论和争议,以程序进行静态分析的过程第一步:小组成员提前阅读设计规格书、程序文本等相关文档

第二步:召开程序审查会,开发人员读程序,审查小组讨论、发现、解决问题

——什么是动态测试

实际运行被测试的软件,输入相应的测试数据,检查实际的输出结果是否和预期结果相一致的过程。

3、根据是否查看代码划分:白盒测试、灰盒测试、黑盒测试

——什么是白盒测试

又称为结构测试。着重于程序内部结构和算法,不关心功能和性能指标

——什么是灰盒测试

介于白盒和黑盒测试之间,基于程序运行时刻的外部表现同时又结合程序内部逻辑结构来设计用例,执行程序并采集程序路径执行信息和外部用户接口结果的测试技术。

——什么是黑盒测试

把软件看成一个黑盒子,不管内部逻辑和内部特性,只依据规格说明书检查程序的功能是否符合功能说明

备注:

灰盒测试有啥缺点?

◇不适用于简单的系统——所谓的简单系统,就是简单到总共只有一个模块。由于灰盒测试关注于系统内部模块之间的交互。如果某个系统简单到只有一个模块,那就没必要进行灰盒测试了。

◇对测试人员的要求比黑盒测试高——从上面的介绍来看,灰盒测试要求测试人员清楚系统内部由哪些模块构成,模块之间如何协作。因此,对测试的要求就提高了。因此,会带来一定的培训成本。不过捏,依照俺的经验,培训难度不大。稍微有点基础的测试人员,都可以在短期培训之后胜任。

◇不如白盒测试深入——显然,灰盒不如白盒那么深入。不过捏,考虑到灰盒测试相比白盒测试有显著的成本优势,该缺点不是太明显。

4、其他分类:回归测试、冒烟测试、随机测试、敏捷测试

——什么是回归测试

对软件的新版本测试时,重复执行上一个版本测试时使用的测试用例。防止出现“以前应用没有的问题现在出问题了” 。

1、回归测试是指重复以前的全部或部分的测试用例。

2、新加入测试的模组,可能对其他模组产生副作用,故须进行某些程度的回归测试。

3、回归测试的重心,以关键性模组为核心。

——什么是冒烟测试(BVT测试(Build Verification Test ))

冒烟测试的对象是每一个新编译需要正式测试的版本,目的是确认软件基本功能正常,可以进行后续的正式测试工作。

——什么是随机测试(又名猴子测试)

测试数据是随机产生的,在测试用例之外。只能作为一个测试的补充。

——什么是敏捷测试(敏捷开发引发)

首先敏捷测试(Agile testing)是测试的一种,原有测试定义中通过执行被测系统发现问题,通过测试这种活动能够提供对被测系统提供度量等概念还是适用的。

敏捷测试是遵循敏捷宣言的一种测试实践:

1、强调从客户的角度,即是从使用系统的用户的角度,来测试系统。

2、重点关注持续迭代地测试新开发的功能,而不再强调传统测试过程中严格的测试阶段。

3、建议尽早开始测试,一旦系统某个层面可测,比如提供了模块功能,就要开始模块层面的单元测试,同时随着测试深入,持续进行回归测试保证之前测试过内容的正确性。

敏捷测试的特点:高度迭代,有周期性,并且能够及时、持续地响应客户的频繁反馈。

五、软件测试的原则

基于测试是为了寻找软件的错误与缺陷,评估与提高软件质量,因此我们提出了这样的一组测试原则,如下所示。

1、所有的软件测试都应追溯到用户需求——软件测试是基于需求做的,一定要符合需求

2、应当把“尽早地和不断地进行软件测试”作为软件测试者的座右铭——越早发现问题越好

3、完全测试是不可能的,测试需要终止。

4、测试无法显示软件潜在的缺陷。

5、充分注意测试中的群集现象。

6、程序员应避免检查自己的程序。

7、尽量避免测试的随意性

六、软件测试的流程(步骤)——理论流程,具体根据实际情况而定,总体一致

1、需求分析——阅读需求文档,看到底要开发什么样的软件、功能,形成自己的思路

2、需求评审——针对需求文档的说明评估需求合不合理,可不可以优化,有没有歧义等

3、测试计划——测试计划包括如下:

测试项目简介、 需要测试的特征、 不需要测试的特征、 测试的方法(测试人员、测试工具、测试流程、测试类型)、 测试环境(软件、硬件、网络)、 测试开始条件和结束条件、 测试者的任务、培训

测试进度与跟踪、 测试风险与解决、 本测试计划的审批与变更方式

4、测试用例

——编写黑盒测试用例的方法:等价类、边界值、错误推测方法、判定表、场景法、因果图(了解)

——用例的要素:用例ID、名称、用例等级、预置条件、操作步骤、预期结果、实际结果

——缺陷的要素(Bug单、问题单):缺陷的ID、名称、严重级别、优先级 状态、简要描述、重现步骤、预期结果、实际结果

5、用例评审——用例的评审标准:准确全面覆盖需求、简洁明了,没有冗余,可操作性强

6、搭建测试环境

——有开发环境、测试环境(测试人员搭建)、用户环境

--硬件环境:PC客户端、Server服务器端

--软件环境:服务器操作系统(linux、Unix等)、数据库(Mysql、Oracle)、中间件(也叫应用服务器,Tomcat、Apache、IIS、WAS等)、编程语言(Java、C、C++、PHP、Python等)、浏览器(谷歌、IE、火狐等)

7、测试执行——照着用例一步一步的执行

8、回归测试——开发修改完问题单(Bug)后走回给测试进行回归测试验证是否修改成功

9、测试报告

——数据的统计:人力设备时间的统计,用例覆盖率的统计、用例执行率统计,缺陷的统计(数量,严重级别,来源、类型),遗留缺陷及存在的风险和规避措施,对测试对象的评估

测试结论。

七、软件测试的质量

软件质量就是“软件与明确的和隐含的定义的需求相一致的程度”;

明确的需求指:软件符合明确叙述的功能和性能需求、文档中明确描述的开发标准;

隐含的需求指:所有专业开发的软件都应具有的隐含特征的程度,比如:符合行业标准。

八、软件测试的风险

1、软件测试中的软件风险分析是根据预测软件将出现的风险,制定软件测试计划并排列优先等级,风险分析是对软件中潜在的问题进行识别、估计和评价的过程。

2、风险也包括进度风险、质量风险、人员风险、变更风险、成本风险等

九、软件测试的结束标准

1、需求覆盖率100%

2、用例执行率100%

3、陷遗留率不超过2%

4、其他的相关质量标准达到预期标准

免责声明:内容和图片源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:【第一波】软件测试常见的面试题目
下一篇:软件测试培训真的有用吗?

如何编写测试计划和测试报告

软件测试中什么是缺陷管理?

测试需要什么样素质的测试工程师?

软件测试一定要有专业测试人员吗?

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省