测试基础篇

黑盒测试

首选来看一下缺陷与错误的分布情况

image.png

黑盒测试注重于测试软件的功能需求,主要视图发现下列几类错误
+.功能不正确或遗漏
+.界面错误
+.数据库访问错误
+.性能错误
+.初始化和终止错误等
功能测试用例设计的原则
-.尽量用80%测试用例覆盖20%的核心业务模块
-.功能测试用例中包括业务流,也包括测试数据
-.功能测试用例的设计应注意缺陷群集现象
-.功能测试用例中包括功能的依从性测试用例
测试方法选择的综合策略
1.首选进行等价类划分,包含输入条件和输出条件的等价划分,将无限测试变成有限测试,这是减少工作量和提高测试效率最有效的方法
2.在任何情况下都必须使用边界值分析方法。经验表明,用这种方法设计出的测试用例发现程序错误的能力最强。
3.可以用错误推测法追加一些测试用例,这需要依靠测试工程师的智慧和经验。
4.对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度。如果没有达到要求的覆盖标准,应当再补充足够的测试用例。
5.如果程序的功能说明中含有输入条件的组合情况,则一开始就可选用因果图法和判定表驱动法。
6.对于参数配置类的软件,要用正交实验法选择较少的组合方式达到最佳效果
7.功能图法也是很好的测试用例设计方法,我们可以通过不同时期条件的有效性设计不同的测试数据
8.对于业务流清晰的系统,可以利用场景法贯穿整个测试案例过程,在案例中综合使用各种测试方法。

那下面简单介绍一下每种测试方法的方法&&&&&&&&&&&&&&&

等价类划分法

1.在输入条件规定了取值范围或者值的个数的情况下,可以确立一个有效等价类和两个无效等价类
2.在输入条件规定了输入值的集合或者规定了‘必须如何’的条件的情况下,可以确立一个有效等价类和一个无效等价类
3.在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类
4.在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类
5.在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)
6.在确知已划分的等价类中,各元素在程序处理中的方式不同的情况下,则应再将等价类进步一地划分为更小的等价类

边界值

是产品说明书中有定义或者在使用软件的过程中确定
边界值是等价类的补充,需要寻找边界和次边界
边界条件
1.如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚超越这个范围边界的值作为测试输入数据。
2.如果输入条件规定了值的个数,则应用最大个数,最小个数,比最小个数少1,比最大个数多1的数作为测试数据
3.根据规格说明的每个输出条件,使用前面的规则1
4.根据规格说明的每个输出条件,使用前面的规则2
5.如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例
6.如果程序中使用了内部数据结构,则应当选择这个内部数据结构边界上的值作为测试用例
7.分析规格说明,找出其他可能的边界条件
次边界条件
是最终用户几乎看不到,但是软件测试仍有必要检查。
例如一下ascii值的表格等

错误推测

错误推测法的基本思想就是列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例。例如,设计一些非法,错误,不正确和垃圾数据进行输入测试。输入和输出数据为0的情况或者输入表格为空格或者输入表格只有一行等

因果图

1.分析程序规格说明的描述中,那些是原因,那些是结果。原因常常是输入条件或是输入条件的等价类,而结果是输出条件
2.分析程序规格说明的描述中语义的内容,并将其表示成连接各个原因与各个结果的‘因果图’
3.标明约束条件。由于语法或者环境的限制,有些原因和结果的组合情况是不可能出现的。为表明这些特定的情况,在因果图上使用若干个标准的符号标明约束条件。
4.把因果图转换成判定表
5.为判定表中的每一列表示的情况设计测试用例

判定表驱动

判定表的组成

image.png

条件桩(condition stub):列出了问题的所有条件。通常任务列出的条件的次序无关紧要
动作桩(action stub):列出了问题规定可能采取的操作。这些操作的排序顺序没有约束。
条件项(condition entry):列出针对它所列出条件的取值,在所有可能情况下的真假值。
动作项(action entry):列出在条件项的各种取值情况下应采取的动作。
规则:任何一个条件组合的特定取值及其相应要执行的操作。在判定表中贯穿条件项和动作项的一列就是一条规则,显然,判定表中列出多少组条件取值,也就有多少条规则,条件项和动作项就有多少列。
判定表建立规格
1.确定规则的个数。加入有n个条件,每个条件有两个取值(0,1),故有2的n次方中规则
2.列出所有的条件桩和动作桩
3.填入条件项
4.填入动作项。制作初始判定表
5.简化。合并相似规则或者相同动作。

正交试验法

定义
依据Galois理论,正交实验设计方法是从大量的实验数据中挑选适量的,有代表性的点,从而合理地安排测试的一种科学的实验设计方法。
测试用例设计步骤
1.提取功能说明,构造因子‘---’状态表
2.加权筛选,生成因素分析表。
3.利用正交表构造测试数据集。

功能图法

1.生成局部测试用例:在每个状态中,从因果图生成局部测试用例。局部测试库由原因值(输入数据)组合与对应的结果值(输出数据或状态)构成。
2.测试路径生成:利用上面的规则生成从初始状态到最后状态的测试路径。
3.测试用例合成:合成测试路径与功能图中每个状态的局部测试用例,结果是视状态到最后状态的一个状态序列,以及每个状态中输入数据与对应输出数据组合。
4.测试用例的合成算法:采用条件构造树。

场景法

<ul>
<li>1.确认好基本流和备选流</li>
<li>2.采用矩阵或者决策表来确定和管理测试用例</li>
<li>3.挑选用例</li>
</ul>
<p>最后来看一下软件测试的过程</p>

TIM图片20171116110619.png

测试费用质量曲线
image.png

来来继续看一下白盒测试的方法和技能呀!

白盒测试

用例设计方法
白盒测试用例设计技术可分为逻辑覆盖和路径覆盖,逻辑覆盖又可分为以下几种,从弱到强:
语句覆盖(SC):设计足够多的测试用例,确保每条语句都被执行过。
判定覆盖(DC):设计足够多的测试用例,确保每个判定都分别取真值与假值。
条件覆盖(CC):设计足够多的测试用例,确保每个条件都分别取真值与假值。(一个判定里可能包含多个条件)
判定/条件覆盖(DCC):设计足够多的测试用例,确保每个判定和条件分别取真值和假值。
条件组合覆盖(CMC):设计足够多的测试用例,确保覆盖每个判定中的各个条件的所有组合情况。(只考虑同一个判定内的各条件组合情况)
路径覆盖:设计足够多的测试用例,确保每条路径都被执行。如果程序复杂,比如包含循环的情况,路径覆盖的测试用例数将会是个天文数字,无法实现。可以采用简化了的路径覆盖,即将循环看成是一个判定,只考虑循环被执行和未执行两种情况。

静态测试

词法分析与语法分析
1.标号交叉引用表。列出在各模块中出现的全部标号,在列表中标出标号的属性,包括已说明,未说明,已使用,未使用,表中还包括在模块以外的全局标号。计算标号等
2.变量交叉引用表,即变量定义与引用表
3.字程序、宏和函数表
4.等价表。表中列出在等价语句或值语句中出现的全部变量和标号。
5.常数表。表中列出全部数字常熟和字符常熟,并指出他们在那些语句中首先被定义
静态错误分析
1.类型和单位分析
数据类型
2.引用分析
3.表达式分析
1)在表达式中不正确地使用了括号造成错误
2)数组下标越界造成错误
3)除数为零造成错误
4)对负数开平方,或对π求正切造成错误
4.接口分析
形参与实参在类型,数量,维数,顺序,使用上的一致性,检查全局变量和公共数据区在使用上的一致性
代码走查
1.代码走查方式
1)桌面检查
2)代码审查
通用代码审查错误
*1.数据引用错误
*2.数据声明错误
*3.计算错误
*4.比较错误
*5.控制流程错误
*6.子程序参数错误
*7.输入/输出错误
*8.其他检查错误
3)走查
2.代码检查项目
1)检查变量的交叉引用表
2)检查标号的交叉引用表
3)检查子程序、宏、函数
4)等价性检查
5)常量检查
6)标准检查
7)风格检查
8)比较控制流
9)选择、激活路径
10)对照程序的规格说明
11)补充文档
3.编码规范

  • 自行查阅资料太多*
    4.缺陷表检查
    静态结构分析法

动态测试

测试方法
5.逻辑覆盖法
6.域测试
7.符号测试
8.z路径覆盖
画基本路径测试方法
1.画控制流程图
2.计算环路复杂度V(G)
*1.区域数
*2.变数-节点数+2
*3.判定节点数+1
3.导出基本路径集
4.设计测试用例
白盒测试错误的定义
a.语法错误:通常由语言编译程序给出‘出错信息’,并且告诉你在那一行出错,程序设计者只要细心,会很快发现并排除这种错误
b.运行时异常:运行时的错误不容易修改,因为其中的错误是不可预料的,或者可以预料但是无法避免的,比如内存空间不够,或者调用函数会出现死机现象,我们吧程序运行时错误统称为异常,对异常处理称为异常处理
c.静态语义分析:语义审查,包括上下文相关性,类型匹配,类型转换。如果有语法错误,静态的语义错误或者词法错误,那么程序编译是不能通过的
d.动态语义分析:动态的语义错误是具体的语句的组合与他们的关系不当,但不会造成程序运行不下去

接口测试

单元测试的内容包括:模块接口;局部数据库结构;模块内路径;边界条件;错误处理。
模块内聚由低到高分别为:巧合内聚,逻辑内聚,时间内聚,过程内聚,通信内聚,信息内聚和功能内聚七种类型
逻辑内聚:一个模块把几种相关的功能组合在一起,每次被调用时,由传送给模块的判定参数来确定该模块应执行哪一种功能
顺序内聚:一个模块中各个处理元素都密切相关于同一功能,且必须顺序执行,前一个功能元素的输出就是下一个功能元素的输入
功能内聚:一个模块中各个部分都是完成某一具体功能必不可少的组成部分
通信内聚:一个模块内所有处理元素都在同一个数据结构上操作,或者指各种处理使相同的输入结构,或者产生相同的输出数据
模块之间的耦合由低到高分为:非直接耦合、数据耦合、标记耦合、控制耦合、外部耦合、公共耦合、内容耦合
非直接耦合:两个模块之间没有直接联系,它们的联系完全是通过主模块的控制和调用来实现的
数据耦合:两个模块彼此间通过数据参数交换信息
标记耦合:一组模块通过参数表传递记录信息,这个记录是某一个数据结构的子结构,而不是简单变量
控制耦合:两个模块彼此间传递的信息有控制信息,例如
高级语言的数组名、记录名,文件名等传递的数据结构的地址
外部耦合:一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息(外部耦合不存在依赖)
公共耦合:两个模块之间通过一个公共的数据区域传递信息,情况如下:
全局数据结构、共享的通信区域、内存的公共覆盖区
内容耦合:一个模块需要涉及到另一个模块的内部信息,情况如下:
1.一个模块直接访问另外一个模块的内部数据
2.一个模块不通过正常入口转到另一个模块内部
3.两个模块有一部分程序代码重叠(只可能出现在汇编语言中)
4.一个模块有多个入口

数据库测试

数据库安全

用户授权

系统角色

审计

视图

链接测试

目的

链接测试的主要目的是确保web应用功能能够实现。

主要内容:

1.链接是否正确跳转
2.链接页面是否存在
3.不存在孤立页面

界面

界面测试

1.各元素布局:每个页面上是否设计友好
2.界面操作的便利性:用户界面有直观的导航系统
3.动态操作
4.是否考虑多种浏览器的需要
5.是否建立了页面文件的命名体系
6.是否充分考虑了合适的页面布局技术,如层叠样式,表格和帧结构

界面整体测试

规范性测试、合理性测试、一致性测试和界面定制性测试

界面元素测试

窗口测试、菜单测试、图标测试、鼠标测试和文字测试

界面中帮助的测试要点

1.文本的准确性
2.与程序的接口
3.帮助索引的检查
4.超链接的正确性
5.链接的意义
6.风格应简洁

cook测试

1.是否预定时间保存
2.刷新对cook的影响

框架测试

1.是否可以随时浏览窗口变化自动调整大小
2.不能完全显示内容是否提供滚动条
3.能否在正确的目标框架中打开新页面

表格测试

1.表格能否随窗体变化
2.页面变化自动调整大小

图形测试

1.颜色饱和度对比度是否合适
2.需要突出的链接的颜色是否容易识别
3.是否正确加载所有的图形

客户端配置与兼容测试

浏览器的配置测试

1.缓存
2.cookie
3.显示

平台兼容测试

1.Windows
2.linux
3.手机

浏览器兼容测试

1.兼容矩阵
浏览器/平台

安全测试

安全测试应考虑哪些方面

Paste_Image.png

安装测试

安装测试包含的方面

1.评估安装手册
2.安装的自动化测试
3.安装的选项和设置的测试
4.安装过程的中断测试
5.安装顺序的测试
6.多环境安装测试
7.安装正确性测试
8.修复安装与卸载测试

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容

  • 1.测试与软件模型 软件开发生命周期模型指的是软件开发全过程、活动和任务的结构性框架。软件项目的开发包括:需求、设...
    Mr希灵阅读 21,925评论 7 277
  • 1.测试与软件模型 软件开发生命周期模型指的是软件开发全过程、活动和任务的结构性框架。软件项目的开发包括:需求、设...
    宇文臭臭阅读 6,702评论 5 100
  • 文章来自:http://blog.csdn.net/mj813/article/details/52451355 ...
    好大一只鹏阅读 9,186评论 2 126
  • 1.问:你在测试中发现了一个 bug ,但是开发经理认为这不是一个 bug ,你应该怎样解决。 首先,将问题提...
    qianyewhy阅读 9,230评论 4 123
  • 等价类划分方法: 一.方法简介 1.定义是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个...
    繼續hug阅读 5,574评论 1 16