软件测试基础知识一(前一章)

软件测试定义:为了发现错误而执行程序的过程。

完整定义:
软件测试是发现并指出软件(包含软件经过建模、需求、设计等阶段所产生的大量输出工件及程序代码)中存在缺陷的过程,这个过程指明和标注问题存在的正确位置,详细记录导致问题出现的操作步骤,及时存储当时的错误状态,以上组合在一起便于测试后问题能够准确再现。

软件测试过程模型

V模型
是瀑布模型的变种,它反映了测试活动与分析和设计的关系,非常明确的表明了测试过程中存在的不同级别,以及各测试阶段与开发过程中的各阶段的对应关系。

示意图:
在这里插入图片描述
单元测试:对程序的一个模块的正确性进行验证,譬如一个类、一个函数、一个窗口等;

集成测试:对程序中的多个模块进行递增式地测试,重点在于测试这些模块之间的接口;

系统测试:对整个系统进行测试,前期主要测试功能、后期性能以及系统地兼容性等;

验收测试:分为 α测试(alpha版本)、β测试(beta版本)、λ测试(Camma版本)。
α测试版本bug较多,一般用于开发者内部交流,看看有没有系统缺陷或者功能缺失等;
β测试为公测版,用户可以下载,此版本较α已经有很大的改进,但仍存在一些bug,不建议下载;
λ测试为正式发行版的候选版,与正式版相差无几。

优点

由此,我们可以看到,V模型包含了底层测试(单元测试)和高层测试(系统测试);
     清楚的标识了开发和测试的各个阶段;
     自上而下逐步求精,每个阶段分工明确,便于整体项目的把控。

缺点

但是,又因为其自上而下的顺序,测试是在程序设计、编码之后才进行的,这样如果测试阶段发现错误,返工量就很大,较为不灵活;修复成本也是随着开发的阶段进行而递增的。

那么我们就可以选择把需求和设计也纳入测试的

W模型(也称双 V 模型

:增加了软件各开发阶段中应同步进行的验证和确认活动,明确了测试与开发的并行性.

在这里插入图片描述

特点:
测试伴随整个开发周期;
开发人员一旦提供文档(对项目组要求较高),测试人员就要即时确定测试条件 、编写测试用例;
测试与开发之间是线性的关系,上一阶段结束才可以开始下一阶段工作。

优点
将测试加入到整个软件开发周期,需求与设计也需要测试,降低了风险 ;
将测试提前,可以更早地发现缺陷 ,降低风险 ;

缺点
一开始就要明确需求;
后期需求不能有大改动 、否则前期的准备都会白费 ;
对人员的要求较高 ,开发组要提供文档、测试组测试需求和设计难度较大。

H模型

H模型将测试活动完全独立出来,形成了一个完全独立的流程,将测试准备活动和测试执行活动清晰地体现出来。

在这里插入图片描述
图示说明了软件测试不只是测试的执行,还有很多其他的活动。且它们是并发进行的。

特点:
软件测试是软件开发中某个层次上的“微循环”,一旦测试准备好了,到达某个就绪点,测试就可以执行了。
软件测试贯穿整个生命周期 。

优点
软件测试活执行动可以尽早准备 、尽早执行 ,较为灵活;
软件测试可以根据被测物的不同而分层次、分阶段、分次序的执行,同时也是可以被迭代的;

缺点
因为其灵活性 ,要制定清晰的规则和管理制度 ;
要控制好迭代的规模;
测试就绪点分析困难。

软件测试的分类

1 、按开发阶段划分:

-单元测试:模块测试,检查每个程序单元能否正确实现详细设计说明中的模块功能等。

-集成测试:组装测试,将所有的程序模块进行有序、递增的测试,检验程序单元或部件的接口关系

-系统测试:检查完整的程序系统能否和系统(包括硬件、外设和网络、系统软件、支持平台等)正确配置、连接,并满足用户需求。

-确认测试:证实软件是否满足特定于其用途的需求,是否满足软件需求说明书的规定。

-验收测试:按照项目任务或合同,供需双方签订的验收依据文档进行的对整个系统的测试与评审,决定是否接受或拒收系统。

2、按照测试技术划分

-白盒测试:通过对程序内部结构的分析、检测来寻找问题。检查是否所有的结构及逻辑都是正确的,检查软件内部动作是否按照设计说明的规定正常进行。–结构测试。
简而言之,就是根据设计说明书对程序代码结构进行检查。

-黑盒测试:通过软件的外部表现来发现错误,是在程序界面处进行测试,只是检查是否按照需求规格说明书的规定正常实现。
简而言之,就是根据需求规格说明对功能进行检查。

-灰盒测试:介于白盒测试与黑盒测试之间的测试,关注输出对输入的正确性;同时,也关注内部表现,不像白盒那样详细,只是通过一些表征性现象、事件、标志来判断内部的运行状态。

3、按照测试实施组织划分

-开发方测试:开发方通过检测和提供客观证据,证实软件的实现是否满足规定的需求,在开发环境下,开发方对提交的软件进行全面的自我检查。

-用户测试:在用户的应用环境中,用户通过运行软件,检测软件实现是否符合自己预期的要求,这里指用户的使用性测试。

-第三方测试:介于软件开发方和用户方之间的测试组织的测试。

另外,还有很多其他的分类方式,如:

按程序对象分 
面向测试对象粒度的划分 
按运行状态分类 
嵌入式软件测试与非嵌入式软件测试

软件测试的特征 /问题 / 原则

1 、完全测试是不可能的。栗如,一个输入程序的输入就有无穷无尽的可能;
resolution:把数量巨大的测试量减少到可控范围内!

2、软件测试是有风险的活动,因为完全测试是不可能的 !
resolution:针对风险大小确定哪些测试重要哪些不重要!

3、测试无法显示潜伏的软件缺陷。测试只能发现缺陷、并不能保证缺陷不存在。
resolution:继续测试,找到更多缺陷!

4、测试具有群集现象:缺陷一个接一个。
resolution:继续测试!

5、测试具有杀虫剂现象:测试得越多,就越难找到缺陷。
resolution:尽可能采用多种途径进行测试。

6、并不是所有测试找到的软件缺陷都要修复的。可能时间不够、或者不算真正的软件缺陷、修复的风险太大、不值得修复。
resolution:测试员根据风险大小决定哪些需要修复!

7、可能存在难以描述的软件缺陷
软件缺陷的定义:
(1)软件未达到产品说明书中已经标明的功能;
(2)软件出现了产品说明书中指明不会出现的错误;
(3)软件未达到产品说明书中虽未指出但应当达到的目标;
(4)软件功能超出了产品说明书中指明的范围;
(5)软件测试人员认为软件难以理解、不易使用,或者最终用户认为该软件使用效果不良。
resolution:依实际出发,由风险大小等因素决定。

8、**软件测试的 80-20 原则,**共三个含义:
(1)80% 的软件缺陷常常生存在软件 20% 的空间里。
resolution:更加关注那些经常或者可能出现错误的程序段。
这对提高测试效率和缺陷发现率有重大意义。

(2)在系统分析、设计、实现阶段的复审工作中能够发现和避免 80% 的软件缺陷,此后的系统测试能够帮
助我们找出剩余缺陷中的 80% ,最后的 5% 的软件缺陷可能只有在系统交付使用后用户经过大范围、
长时间使用后才会曝露出来。

(3)实践证明 80% 的软件缺陷可以借助人工测试而发现, 20% 的软件缺陷可以借助自动化测试能够得以
发现。由于这二者间具有交叉的部分,因此尚有 5% 左右的软件缺陷需要通过其他方式进行发现和修
正。

9、软件测试必须有预期结果。否则无法了解测试的正确性。软件缺陷是通过对比而得出来的。

10、“应该尽早地和不断地进行软件测试”。

11、程序员应该避免检查自己的程序
程序员的测试思路有局限性,也没有经过严格的职业培训,没有Bug跟踪与回归测试等的习惯。

12、执行测试应追溯至用户需求

13、应及时更新测试;

软件测试的关键问题

1、WHO,测试由谁来执行

往往分为开发方测试、用户测试、第三方测试。


1)**开发方测试**:通常也叫“验证测试”或“α测试”。
			   是指在软件开发完成以后,开发方对要提交的软件进行全面的自我检查与验证。
2)**用户测试**:  在用户的应用环境下,用户通过运行和使用软件,检测与核实软件实现是否符合自己预	
				期的要求。通常情况用户测试不是指用户的“验收测试”,而是指用户的使用性测试。
			 	β测试通常被看成一种用户测试。
3)**第三方测试**:也称独立测试。
			   由在技术、管理和财务上与开发方和用户方相对独立的组织进行的软件测试。一般情况下
			   是在模拟用户真实应用环境下,进行软件确认测试。

2、 What,测试什么

软件开发过程中产生的需求分析、概要设计、详细设计以及编码等各个阶段所得到的文档,包括**需求规格说
明、概要设计说明、详细设计规格说明以及源程序,**都是软件测试的对象。

3、When,什么时候进行测试

测试可以是一个与开发并行的过程,也可以是开发完成某个阶段任务后的的活动。

4、How,如何进行测试

根据软件的功能规范说明和程序实现,利用各种测试方法,生成有效的测试用例,对软件进行测试。

5、测试停止的标准是什么

常用的停止测试的标准有5类:
1)测试超过了预定的时间,停止测试;
2)执行了所有测试用例但没有发现故障,停止测试;
3)使用特定的测试用例设计方法作为判断测试停止的基础;
4)正面指出测试停止的要求,比如发现并修改70个软件故障;
5)根据单位时间内查出故障的数量决定是否停止测试。

测试工作量与软件缺陷数量之间的关系

在这里插入图片描述

软件质量保证与软件测试的关系

SQA(软件质量保证)侧重对流程中过程的管理与控制,是一项管理工作,侧重于流程和方法。而测试是对流程中各过程管理与控制策略的具体执行实施,其对象是软件产品(包括阶段性的产品),即测试是对软件产品的检验,是一项技术性的工作。

SQA的职能
1 、向管理层提供正确的可视化的信息,从而促进与协助流程改进。
2 、充当测试工作的指导者和监督者,帮助软件测试建立质量标准、测试过程评审方法和测试流程,同时通过跟踪、审计和评审,及时发现软件测试过程中的问题。

测试的职能
为 SQA 提供数据和依据,帮助SQA更好地了解质量计划的执行情况、过程质量、产品质量和过程改进进展,从而使SQA更好地做好下一步工作。

感觉就是,SQA不断监督测试,跟他说你要怎么做;如何测试做了之后就告诉SQA,我做得怎么样;然后SQA再看情况指导下一步的工作 ,不断循环。

测试,常常被认为是质量控制的最主要手段。但是,随着时间的推移,软件质量保证和软件质量控制之间的界限越来越模糊了,两者合二为一。也就是说,软件测试是SQA中的重要手段,SQA的主要功能在软件测试中得到体现,集中在静态测试中,两者的关系越来越紧密,已无法分开。

软件测试中的误区(目测期末判断题yo哈哈

在这里插入图片描述

在这里插入图片描述

软硬件特征比较、开发过程比较

在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值