软件测试入门笔记(测试基础)by.XHF

编程入门 行业动态 更新时间:2024-10-25 20:30:34

软件<a href=https://www.elefans.com/category/jswz/34/1771117.html style=测试入门笔记(测试基础)by.XHF"/>

软件测试入门笔记(测试基础)by.XHF

第一章 测试基础

1. 什么是软件测试:

利用手工或自动化,按照测试方案对系统执行测试用例的过程
两个依据(需求、测试用例),两个方法(手工、自动),一个对比(预期结果和实际结果的对比) 软件缺陷(不能完成其定义功能的各种瑕疵)规则:
1.未能达到产品说明书表明的功能。
2.软件出现了产品说明书指明不会出现的错误。
3.软件功能超出产品说明书指明范围。
4.软件未达到产品说明书虽未指出但应达到的目标(即默认功能 基础规则 例如:密码密文输入)。
5.软件测试员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户认为不好。

2. ★软件测试的目的、意义:(怎么做好软件测试)

初期: 尽量多的发现缺陷生成相关规范
中期: 尽量早的发现缺陷
后期: 尽量预防问题:通过以往的经验积累
控制成本(贯穿始终)尽量少的时间和人力发现更多的缺陷,并确保其被修复

3.软件生命周期:

1.瀑布模型:特点:是将生命周期线性排列其各项活动规定形成若干阶段性工作,适用于需求非常明确

2.快速原型模型:本质:“快速”尽可能快地构造出原型系统,以加速软件开发过程节约软件开发成本
原型用途(即演示程序)是获知用户真正的需求(抛弃型原型和演进型原型)适用于项目需求不太明确或者需要减少项目的不确定性的情况(即不断的修改创建“原型”最终交付)。

3.迭代-增量模型:特点:每次提交的都是可满足用户需求子集的可运行的产品。优点:用户每次都可以得到一个可完成部分功能的可用产品,并且有足够时间去学习和适应新产品;但是对软件体系结构设计要求高,且结构必须开放。

4.螺旋模型:使用原型及其它方法来尽量降低风险。(看作是在每个阶段之前都增加了风险分析过程的快速原型模型)

5.喷泉模型:软件迭代是软件开发过程中普遍存在的一种内在属性。经验表明,软件过程各个阶段之间的迭代或一个阶段内各个工作步骤之间的迭代,在面向对象范型中比在结构化范型中更常见。

“喷泉”这个词体现了面向对象软件开发过程迭代和无缝的特性。

改正性维护:诊断和改正在使用过程中发现的软件错误(软件在使用中的问题错误)

适应性维护:修改软件易适应环境的变化(系统等环境的更换) 完善性维护:根据用户的要求改进或扩充软件使它更完善(模块功能的增减)

预防性维护:修改软件为将来的维护活动预先做准备(提前为用户大了涌入准备)

第二章 测试过程

1.测试模型

H模型:

V模型(层级越低越深入):

第二章补充 环境搭建(补充:测试环境的搭建)

1.测试环境(用来运行软件的环境)=硬件+软件+网络+数据准备+测试工具

2.测试一款软件时必然要考虑硬件配置(大小,容量)

3.软件环境(软件运行的操作系统-兼容性)

4.网络环境(C/S客户端/服务器或B/S浏览器/服务器结构)

注:1.C/S结构是一种软件系统体系结构,也是生活中很常见的。这种结构是将需要处理的业务合理地分配到客户端和服务器端,这样可以大大降低通信成本,但是升级维护相对困难。比如我们手机中安装的微信、王者荣耀等应用程序就是C/S结构。

注:2.B/S结构是随着互联网的发展,web出现后兴起的一种网络结构模式。这种模式统一了客户端,让核心的业务处理在服务端完成。你只需要在自己电脑或手机上安装一个浏览器,就可以通过web
Serve与数据库进行数据交互。

注:3.硬件环境不同,C/S通常是建立在专用的网络上,小范围的网络环境。而B/S是建立在广域网上的,适应范围强,通常有操作系统和浏览器就行;C/结构比B/S结构更安全,因为用户群相对固定,对信息的保护更强;B/S结构维护升级比较简单,而C/S结构维护升级相对困难。

5数据准备:主要是测试数据的准备(数据的量和真实性)

6.测试工具:静态测试工具、动态测试工具、黑(白)盒测试工具(手机刷机、抓包等)

第三章 动态黑盒测试方法

1.掌握软件测试的分类

黑盒测试:完全不考虑程序内部的结构和处理过程,只是按照规格说明书的规定来检查程序是否符合他得功能要求,测试用例只关注输入和预期输出,又称为功能测试Function(行为Behavioral、数据驱动测试Data-driven)

白盒测试:根据程序内部的逻辑结构进行测试,又称为结构测试Structure(逻辑测试)(流程图Logic-driven)

静态测试:指不运行程序,而只是检查和审阅代码、文档等(走读)

动态测试:运行和使用软件

静态动态
黑盒静态黑盒动态黑盒
白盒静态白盒动态白盒

1.掌握测试用例的概念

2.掌握用等价类划分法设计测试用例的黑盒测试技术

3.掌握边界值法设计测试用例的黑盒测试技术

4.基本掌握状态测试方法和因果图、决策表设计测试用例的黑盒测试方法

(等价类划分法、边界值法、因果图决策表法、状态测试法、场景分析法)

1. 等价类划分法:

一、方法简介

1.定义

是把所有可能输入的数据(根据程序规格说明书),划分为若干互不相交的部分(子集)称为等价类,然后从每一个子集中选取少数具有代表性的数据作为测试用例。

2.划分等价类原理(解释)

等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:测试某等价类的代表值就等于对这一类其他值的测试(除非该类中某些测试用例又属于另一等价类),因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件就可以用少量代表性的测试数据取得较好的测试结果。等价类划分有两种不同的情况:有效等价类和无效等价类。

【规则1】:如果输入条件规定取值范围,可定义一个有效等价类两个无效等价类

【规则2】:如果规定了输入数据的个数,则类似地可以划分出一个有效等价类两个无效等价类

【规则3】:如规定了输入数据的一组值,且程序对不同输入值做不同处理,则每个允许的输入值是一个有效等价类,并有一个无效等价类(所有不允许的输入值的集合)。

【规则4】:如果规定了输入数据必须遵循的规则,可确定一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。

【规则5】:如果规定了输入数据是布尔变量,则有一个有效等价类一个无效等价类

在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应在将该等价类进一步的划分为更小的等价类。

1)有效等价类

是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明所规定的功能和性能。

2)无效等价类

指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能多个。

设计测试用例时,要同时考虑这两种等价类。因为软件不仅要能接收合理的数据,也要能经受意外的考验,这样的测试才能确保软件具有更高的可靠性。

3.划分等价类的标准

1)完备测试、避免冗余
2) 集合的划分、划分为互不相交的一组子集,子集并集是整个集合
3) 并是整个集合:备性
4) 子集互不相交:保证一种形式的无冗余性
5) 同一类中标识(选择)一个测试用例,同一等价类中,往往处理相同,相同处理映射到“相同的执行路径”。

4.设计测试用例

在确立了等价类后,可建立等价类表,列出所有划分出的等价类输入条件:有效等价类、无效等价类,然后从划分出的等价类中按以下三个原则设计测试用例:

1)划分并标识等价类:为每一个等价类规定一个唯一的编号,建立等价类表;

2)设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止(正面测试用例);

3)设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止(负面测试用例;Bug单一原则)。

5.测试用例

测试用例(是为某个特殊目标而编制的一组测试输入执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求)

6.等价类划分覆盖率

等价类划分覆盖率=(已覆盖的等价类数量/总的等价类数)×100%

总共覆盖的等价类数量。总的等价类数量是指一个组件的输入值域和输出值域的所有可能的等价类的总和。

7.强度问题

根据测试时基于单缺陷、多缺陷可以划为强、两种。

根据是否考虑无效值,等价类又可以划分为一般和健壮两种。

2. 边界值分析法

1.方法介绍 根据大量的测试统计数据,很多错误是发生在输入或输出范围的边界上,而不是发生在输入/输出范围的中间区域。因此针对各种边界情况设计测试用例,可以查出更多的错误。
2. 使用方法 选取正好等于刚刚大于刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。表示方法:最小值min,略高最小值min+,正常值nom,略低最大值max-,最大值max。
3.边界值测试数据类型 类型包括:数值、速度、字符、地址、位置、尺寸、数量、空间

边界值测试用例的设计思路
字符起始-1个字符 结束+1个字符假设一个文本输入区域允许输入1个到255个 字符,输入1个和255个字符作为有效等价类;输入0个和256个字符作为无效等价类,这几个数值都属于边界条件值。
数值最小值-1 最大值+1假设某软件的数据输入域要求输入5位的数据值,可以使用10000作为最小值、99999作为最大值;然后使用刚好小于5位和大于5位的 数值来作为边界条件。
空间小于空余空间一点 大于满空间一点例如在用U盘存储数据时,使用比剩余磁盘空间大一点(几KB)的文件作为边界条件。

以上类型的边界值应该在:最大/最小、首位/末位、上/下、最快/最慢(倍速)、最高/最低、
最短/最长、空/满(开始/完成、相邻/最远)等情况下用边界值作为测试数据

1.内部边界值分析

在多数情况下,边界值条件是基于应用程序的功能设计而需要考虑的因素,可以从软件的规格说明或常识中得到,也是最终用户可以很容易发现问题的。然而,在测试用例设计过程中,某些边界值条件是不需要呈现给用户的,或者说用户是很难注意到的,但同时确实属于检验范畴内的边界条件,称为内部边界值条件或子边界值条件。计算机是基于二进制进行工作的,因此,软件的任何数值运算都有一定的范围限制。注:“一个汉字(2个字符)”

范围或值
位(bit)0 或 1
字节(byte)0 ~ 255
字(word)0~65535(单字)或 0~4294967295(双字)
千(K)1024(210)
兆(M)1048576(220)
吉(G)1073741824(230) T(240)
整型0-65533(216)
长整型0-4294967295(232)

字符的边界值检验:在计算机软件中,字符也是很重要的表示元素,其中ASCII和Unicode是常见的编码方式。如下列出了一些常用字符对应的ASCII码值。在文本输入或者文本转换的测试种需要测试在边界上的:斜杠、冒号、@、左中括号、单引号敲好处于阿拉伯数字、英文字母的边界值附近。一些特殊值(默认值、空值、无输入值、空格、零)也可以被认为是边界值,多选项都存在这种特殊边界值。

字符ASCII码字符ASCII码字符ASCII码
null0@64b98
space32A65y121
/47B66z122
048Y89{123
149Z90
250[91
95796
:58a97

3. 因果图法和决策表法

1.因果图方法简介

因果图是一种利用图解法网络图分析输入的各种组合情况,从而设计测试用例的方法。(原因:输入条件 ——
结果:输出)依据:需求规格说明书中的因果关系。

2.因果图符号

图中ci表示原因,通常位于图左部, ei表示结果,位于图右部。ci与ei取值0或1,表示某个状态不出现,1表示某个状态出现。

恒等:若c1是1,则e1也为1,否则e1为0.

非: 若c1是1,则el为0,否则e1为1.

或: 若cl或c2或c3是1,则e1是1,否则e1为0.

与: 若c1和02c2都是1,则e1为1,否则e1为0.

3.决策表方法简介

决策表是分析和表达多逻辑条件下不同操作的执行情况!在一个程序中,许多项操作是在多个逻辑条件的组合下完成,此项方法中要做的就是针对每个条件的不同情况来分析每项操作的执行情况

条件框——条件定义、动作框——操作的定义

条件项——条件规则个数、动作项——条件项各种取值的动作

条件桩条件项
动作桩动作项

4.决策表步骤

1.列出所有的条件桩和动作桩

2.确定规则的个数(2N)

3.填入条件项和动作项,得到初始决策表

4.简化决策表(有操作相同的才可以优化,再看条件是否涵盖所有组合)

5.根据决策表设计测试用例

4. 状态测试

1.状态测试方法简介 测试对象的输出和行为受输入数据影响,同时,还与测试对象之前的执行情况、或之前的事件、以前输入的数据有关,即与状态有关状。(被测对象在特定输入条件下所保持的响应形式)

2.状态测试三部曲:

1)建立状态迁移图:
1.软件可能进入的每一种独立状态。

2.从一种状态转入另一种状态所需的输入和条件

3.进入或者退出某种状态时的设置条件及输出结果)

2)将状态图转换为状态树:将状态图转换为状态树—建树步骤
1.将初始状态或开始状态作为树根,层次为1

2.设当前层次为K,依次检查该层节点,将其下一个状态作为其子节点,状态之间的转换,作为边。

3.重复步骤2,直到K层次节点出现在J层上,且J<=K,或该节点为结束状态,则该节点无需有子节点。(对于循环则单独考虑覆盖测试用例)

3)进行具体测试-编写

测试状态及其转换包括检查所有的状态变量—与进入和退出状态相关的静态条件、信息、值、功能等。

在进行测试用例设计时,需要根据项目的实际情况选择覆盖强度:

*1、测试用例至少覆盖所有状态一次

*2、测试用例至少覆盖所有事件一次

*3、测试用例至少覆盖所有状态转换一次

*4、测试用例至少覆盖所有路径一次

5. 场景分析法

1.场景分析法(需求分析时的用例建模技术) 现在的软件大多数是用事件触发来控制流程,事件触发时的情景形成了场景,而同一事件的触发顺序和处理结果形成了事件流,在进行需求分析时,使用用例建模技术进行,然后根据需求分析中的规格说明中的用例确定事件流和场景,从而设计测试用例。

图中经过用例的每条路径都用基本流和备选流来表示:

基本流用黑色表示,是经过用例的最简单的路径。

备选流用不同的彩色表示,一个备选流可能从基本流开始,在某个特定条件下执行,然后重新加入基本流中(如备选流1和 3);也可能起源于另一个备选流(如备选流2),或者终止用例而不再重新加入到某个流(如备选流2和4)。

场景是事件流的一个实例,由基本流或基本流和备选流中的步骤组成,表明了用户执行系统的操作序列。场景可以遍历所有从用例开始到结束的包含基本流和备选流的路径

2.场景分析法测试思想

根据需求规格说明书中的用例所包含的事件流信息构造场景并设计相应的测试用例使每个场景至少发生一次,步骤如下:

1.针对每个用例(用例建模技术)构造该用例的所有场景

2.针对每个场景,至少设计一个可以让该场景发生的测试用例

3.为每一个测试用例选择相应的测试输入

第四章 白盒测试方法

1.动态白盒测试

根据程序内部的逻辑结构进行测试,又称为结构测试Structure(逻辑测试)动态白盒经常采用的是覆盖测试的方法,基于控制流的覆盖准则包括语句覆盖、判定覆盖、条件判定覆盖、条件组合覆盖。(此外基本路径测试和循环测试也是白盒测试中的常用方法)

表示软件结构的图形:程序流程图、控制流图

2.控制流图

以数据结构链的形式表示,以结点表示语句,以边来表示语句之间的控制流,边上一般是条件,点上一般是操作。(基本结构组成:顺序、选择[分支]、重复[循环])
For循环等价于While循环(复合条件需要拆分)

3.语句覆盖 (A ^ B = T)

使程序中的每个可执行语句都能执行一次的测试用例(测试用例条件:A ^ B = T)

语句覆盖是最弱的准则,但是可以检查到无法到达的死代码(C0覆盖)

语句覆盖率=(被执行语句的数量/所有语句的数量)*100%

4.判定(分支)覆盖 (A ^ B = T A ^ B = F)

判定是一个布尔表达式,由一个或多个条件通过(And,Or,Not)连接而成

对于判断语句,在设计用例的时候,要设计判断语句结果为True和False的两种情况,使得程序中每个分支的真假结果出现一次。可以发现空分支中遗漏的语句(C1覆盖)

分支覆盖率=(被执行的分支数/总分支数)*100%

5.条件覆盖 (A=T A=F B=T B=F)

每个条件都需要取到True和False两个值,不包括(&&)And、Or、(!)Not等运算符,更多的是包含“>”或“=”这样的关系运算符。[每个条件表达式true
和 false各取值一次,不考虑判断语句的计算结果]

6.判定(分支)条件覆盖(A ^ B = T A ^ B = F A=T A=F B=T B=F)

设计测试用例时,使得判断语句中每个条件表达式的所有可能结果至少出现一次,每个判断语句本身所有可能结果也至少出现一次。

7.条件组合覆盖( A= T B= T A= T B= F A= F B= T A= F B= F)

设计测试用例时,使得每个判断语句(框)中条件结果的所有可能组合至少出现一次

8.基本路径法(满足语句覆盖)路径覆盖是最强的覆盖准则

一、方法介绍

1.绘制程序的控制流图

2.计算程序的圈复杂度,导出独立路径条数

3.确定现行独立路径的基本集合

4.设计可强制执行基本集合中每一条路径的测试用例

圈复杂度:圈复杂度是一种代码复杂度的衡量标准。

在软件测试的概念里,圈复杂度“用来衡量一个模块判定结构的复杂程度,数量上表现为线性独立路径条数(即独立路径条数<=圈复杂度),即合理的预防错误所需测试的最少路径条数。

圈复杂度大说明程序代码可能质量低且难于测试和维护,根据经验,程序的可能错误和高的圈复杂度有着很大关系。

**圈复杂度的原理:(其实就是分支的个数)**圈复杂度为1,意味着代码只有一条路径。

对于有一条分支的代码,它的圈复杂度为2。 · 从1开始,一直往下经过程序。

· 遇到以下关键字,或其它同类的词,就 +1。如 if、while、repeat、for、and

· 给case语句中的每一种情况都 +1。

二、圈复杂度计算方法

1.程序的控制流图

V(G)=e−n+2p V(G)=e−n+2

式中:e表示控制流图中边的数量,n表示控制流图中节点的数量,p表示图的连接组件数目(图的组件数是相连节点的最大集合)。因为控制流图都是连通的,所以p为1.

2.程序的控制流图 V(G)=区域数=判定节点数+1

其实,圈复杂度的计算还有更直观的方法,因为圈复杂度所反映的是“判定条件”(如
if、while等)的数量,所以圈复杂度实际上就是等于判定节点的数量再加上1,也即控制流图的区域数。

3.程序的控制流图

V(G)=R(外区域需要+1) 式中:R代表平面被控制流图划分成的区域数。

· 针对程序的控制流图时,最好还是采用第一个公式,即 V(G)=e-n+2;

· 针对模块的控制流图时,可以直接统计判定节点数,这样更为简单;

· 针对复杂的控制流图时,使用区域计算公式V(G)=R更为简单。

三、独立路径

1.一条独立路径是指,是在其它的独立路径中没有用过的边的路径,一个程序的 V(G)值正好等于该程序的独立路径最大值。要求覆盖程序中所有可能的路径。

第五章 静态测试方法(评审和静态分析)

白盒测试策略

1.尽量先用工具进行静态结构分析

2.采用先静态后动态的组合方式:先进行静态结构分析、代码检查和静态质量度量,再进行动态的覆盖率测试。

3.不同阶段测试的侧重点不同:

4.单元测试阶段,以代码检查、逻辑覆盖为主;

5.集成测试阶段,增加静态结构分析、静态质量度量;

6.在系统测试阶段,根据黑盒测试结果,采取相应的白盒测试。

2.静态测试

静态测试的方法,主要有人工(手工)评审与静态分析(人工或机器自动检测)两大类。通常可采用一种方法或混合使用两种方法。

通过静态分析可以发现以下缺陷和结构可能会导致程序产生的错误:违背语法规则、违背编程规范和标准、控制流异常、数据流异常。

3.评审内容:对于最可能产生风险的工作成果,要采用最正式的评审方法

管理评审、技术评审、文档评审、过程评审

技术评审:

评审方法是按照正式化程序逐渐增强排列:临时评审、轮查、结对审查、走查、正式审查

文档评审:

(1)正确性 (2)完整性 (3)一致性 (4)有效性 (5)易测性

(6)模块化-系统和文档描述必须深人到模块。模块化指的是模块的独立性

(7)清晰性 (8)可行性 (9)可靠性 (10)可追溯性

第六章 单元测试

1.回顾V模型

2.单元测试定义

单元测试是指对软件开发最小单位-单元进行的测试工作。

单元的含义:结构化语言——函数或者子过程、面向对象语言——类、基于组件的开发——组件(部件)

测试单元的规范性、逻辑性、接口和方法、局部数据结构、全部数据

3.单元测试步骤

桩模块:用于模拟被测模块的下级模块,相当于被测模块调用的子模块。单元测试需要接触要测试的代码。因此其测试环境需要开发环境的支持,比如单元测试的框架或调试器,单元测试不是调试

第七章 集成测试

1.集成测试

集成测试(也叫组合测试,联合测试)是在单元测试的基础上,将所有的软件单元按照《软件概要设计规格说明书》的要求组成子系统(系统)的过程中检查各部分工作是否达到或实现相应技术指标及要求的活动。

集成测试的目标是检查软件是否符合《软件概要设计规格说明书》的要求,即发现接口和相互之间协作的问题以及被集成部分之间的冲突。

2.集成测试方法

(1)非增量式测试(Big Bang方法)

集成中,将所有部件组合形成程序,然后对此进行测试

问题:效率低下,调试困难

(2)增量式测试(自顶向下)深度、广度优先如图:

(3) 增量式测试(自底向上)深度优先如图:

StubsDriver(简单)
用于自上而下的方法用于自下而上的方法
首先测试最顶层的模块首先测试最低模块
刺激较低级别的组件刺激更高级别的组件
较低级别组件的虚拟程序高级组件的虚拟程序

PS:最后特别感谢成都航院林琳老师将“菜鸟”带入测试大门

更多推荐

软件测试入门笔记(测试基础)by.XHF

本文发布于:2024-03-08 22:14:05,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1722602.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:测试   入门   基础   笔记   软件

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!