软件测试方法有哪些

学人智库 时间:2018-01-13 我要投稿
【www.unjs.com - 学人智库】

软件测试方法种类繁多,记忆起来混乱, 如果把软件测试方法进行分类, 就会清晰很多。 下面品才小编为大家收集整理的相关资料。欢迎大家阅读!!!

自动化创建测试数据的方法

自动化创建测试数据基本上都是用自动化程序来实现的,下面以Python来说明下常见的几种情况:

1) Web页面创建测试数据:如果我们需要手动在web页面上点击一系列操作,才能完成下单的操作,我们可以考虑用Python加selenium的脚本是实现,当需要下单的时候,只需要运行一下脚本即可;实例代码如下:

from selenium import webdriver

import time

driver = webdriver.Firefox()

##下面定义一些操作和处理方法,举例:

driver.find_element_by_id("kw").send_keys("money is coming")

time.sleep(2)

driver.find_element_by_id("su").submit()

time.sleep(3)

driver.quit()

2) 数据中包含数字(要求不重复)参数的处理方法:当我们创建的测试数据中,需要不重复的数字作为参数的时候,我们可以考虑用Python自带的random函数,举例如下:

import random

#用for循环指定数据的多少

for i in xrange(1,5):

#生成随机数的大小可以由上下限指定,

num = random.randint(1,20000)

#也可以直接是 data=num,看你的数据模板是什么

data = “abc d%def” %num

print data

3) 数据中字符串(要求不重复)的处理方法:当我们创建的测试数据中,需要不重复的字符串作为参数的时候,我们可以考虑用Python自带的uuid函数,举例如下,

import uuid

#用for循环指定数据的多少

for i in xrange(1,5):

str = uuid.uuid1()

#也可以直接是 data=str,看你的数据模板是什么

data ="abc s% def" % str

print data

4) 数据库中批量数据的修改方法:也可以通过Python脚本加SQL语句来完成,举例如下:

import pyodbc

conn=pyodbc.connect('DRIVER={SQLServer};SERVER=192.168.1.1;DATABASE=TEST;UID=XXXXX;PWD=XXXX)

sql = "tablename set productID =xxxx,quantity=xxxxx where orderID in( X1,X2,...Xn)"

cursor = conn.cursor()

cursor.execute(sql)

resultRows = cursor.fetchall()

nums=len(resultRows)

print nums

设计软件测试

1黑盒测试用例设计技术

(1). 等价类划分

概念:将输入/输出域分为若干个子集,从中选取代表数据,如果被选取的数据测试没有问题,就认为未被选取的数据测试也没有问题;

相关术语:有效等价类/无效等价类(针对输入的数据是否有意义,是否合法,是否正确)

原则:a. 若输入(输出)是一个取值范围或者值的个数,则划分一个有效等价类,两个无效等价类;

b. 若输入(输出)是一个有限的集合或者必须如何的条件或者布尔值,则划分成一个有效等价类和一个无效等价类;

c. 若输入(输出)已经划分好有效等价类和无效等价类,针对有效等价类具体的值有不同的处理结果和方式,则划分成多个有效等价类和一个无效等价类;

d. 若输入(输出)要同时满足多个条件,则划分成一个有效等价类和多个无效等价类(从不同角度违反规则);

步骤:将SRS划分成规格片段→找出输入条件→进行等价类划分→给划分每一个等价类编号→选代表数据设计用例→直到所有等价类都被覆盖;

PS:编写用例原则:一条测试用例要尽量覆盖多个有效等价类&&一条测试用例只覆盖一个无效等价类;

2. 边界值分析

概念:边界值分析法是对等价类划分法的一种补充,大量的经验数据表明,边界是问题多发区,如果边界测试没有问题,就认为内部数据发生问题的概率较小;

相关术语:上点→边界上的点;离点→离边界最近的点(闭区间,离点在边界外,开区间离点在边界内); 内点→边界内任意一点;

原则:a. 如果输入(输出)是一个取值范围或者值的个数,则以边界或者边界附近的值作为测试用例数据选取;

b. 如果输入(输出)是一个有序的集合,则以第一个元素和最后一个元素作为测试用例数据选取;

c. 如果输入(输出)的值的个数是一个取值范围,则以最大值;最大值+1;最小值;最小值-1作为测试用例数据选取;

d. 如果是一个内部数据结构,则以极限值作为测试用例数据选取;

步骤:将SRS划分成规格片段→找出输入条件→进行等价类划分→给划分每一个等价类编号→分析每个数据类型,判断是否有边界值→生成用例;

PS:只有等价类和边界值才能生成最终的测试用例,其它测试设计方法生成的都是测试规则或者测试路径(逻辑测试用例)

3. 判定表

概念:分析和表达多种输入条件进行不同组合来完成不同动作的一种工具,目的是分析复杂逻辑关系的条件组合;

相关术语:条件桩(输入),条件项(输入的取值情况),动作桩(输出),动作项(输出的取值情况)

步骤:将SRS划分成规格片段→找出条件桩、条件项,动作桩,动作项→对条件项进行排列组合生成规则数→合并化简→设计最终用例;

特点:

a. 弥补了等价类不考虑组合的情况;

b. 是一种全排列组合情况,测试较全面;

c. 测试规则数目庞大,测试用例数量庞大,导致测试工作量大;

d. 合并有风险,化简需谨慎;

e. 能发现需求规格说明书中不符合逻辑的需求;

f. 对于逻辑关系比较复杂的需求无法胜任;

适用范围:功能测试;

4. 因果图

概念:将复杂逻辑关系的需求转化为判定表的一种中间系统化方法。目的是为了得到判定表;

相关术语:因(条件),果(动作);

逻辑关系:a.因果之间:恒等/非/与/或;

b.原因之间:E(排斥:最多一个为真)、I(包容:至少一个为真)、O(唯一:有且只有一个为真)、R(要求:a为真,b需为真)、 M(强制:a为真,b需为假)

中间节点: 当多个输入之间的关系不是单纯一种与,或的关系,利用中间节点存取中间结果;

当多个输入都在描述同一件事情的时候,可以利用中间节点归并逻辑;

步骤:将SRS划分成规格片段→分析原因和结果→画因果图→判断制约关系→生成判定表→合并删除→设计用例

特点:

a. 弥补了等价类不考虑组合的情况;

b. 是一种全排列组合的测试方法,测试的比较全面;

c. 测试规则数目庞大,测试用例数量庞大,导致测试工作量大;

d. 能发现需求规格说明书中不符合逻辑的需求;

e. 能够分析复杂逻辑关系的需求;

f. 制约关系可以快速删减不符合逻辑的规则,从而提高测试设计效率;

5. 正交实验法

概念:利用正交表进行试验的一种方法,是一种两两组合的方法,经验表明,如果两两组合测试没有问题就认为其他组合发生问题的概率较小。

特点:两两组合;直接套用;经济高效;

相关术语:因子(输入)、状态(水平:输入的取值)

步骤:将SRS划分成规格片段→找出因子和状态→构造因子状态表→加权筛选→套用正交表→对生成的组合进行增删→设计用例

适用范围:功能测试,配置测试

6. 状态迁移图(点到点,内部路径不可循环)

概念:针对有限状态机的状态和合法的跳转条件进行测试,目的是为了测试所有的状态能够按照正确的条件进行跳转和迁移。不要有未覆盖到的状态和非法的跳转;

有限状态机:web网页,嵌入式系统

相关术语:状态(某个时间点或某个指令后的表现);跳转条件(操作/指令);事件(输出)

步骤:将SRS划分成规格片段→找出状态和跳转条件→设定初始状态,画状态迁移图→事件转换表→状态转换树→测试路径→添加非法路径→设计用例

7. 流程分析法(端到端,内部路径可循环)

概念:针对整个软件系统的业务流程进行分析测试的一种方法,这种方法借鉴了白盒测试中的语句覆盖测试法;

相关术语:节点(某个功能点),箭线(功能点之间的连接路线)

步骤:分析SRS→找到主要功能点→画出主干图(基本流)→细化分支→进行路径组合确定优先级

8. 输入域覆盖法

主要有三点内容:中间值测试(相当于内点),极端值测试(边界中的上点),特殊值测试(业务相关,根据软件功能)

9. 输出域覆盖法

分析输出的等价类和边界值,达到输出域等价类覆盖和输出域边界值覆盖,使用此测试方法需要对系统的功能有特别深入的了解,采用该方法的一般来说是行业内的专家;

10.异常分析法

对系统有可能存在异常的操作进行测试,主要针对系统的容错能力,故障恢复能力进行测试;

11. 错误猜测法

根据经验猜测,是基于经验的测试法,是对其他测试方法的补充,不单独使用

白盒测试用例设计技术

语句覆盖

判定覆盖

条件覆盖

判定-条件覆盖

条件组合覆盖

路径覆盖

[软件测试方法有哪些]