软件测试技术 主讲教师:冯书晶 珍惜时间,善待自己,善待他人!
“四个一”训练 组织教学: 校训:自强不息,开物成务! 培养目标: 计算机软件技术高技能人才! 岗位能力要求: 精编程、善操作、懂设计、知流程!
第3章 软件测试用例的设计方法 一、黑盒测试策略与准则 讲授内容: 二、边值分析 三、等价类划分 四、因果图 五、判定表驱动测试 六、正交实验设计法 讲授内容:
一、黑盒测试策略与准则 1、黑盒测试策略 正常情况; 非正常情况; 边界情况; 非法情况; 极端情况(强度测试); 性能测试; 兼容性,用户友好性。
2、黑盒测试准则 何时结束? 覆盖率? 测试方法的选择。
二、边值分析 1、边值分析: 实践表明,在设计测试用例时,对边界附近的处理必须给予足够的重视,为检验边界附近的处理专门设计测试用例,常常取得良好的测试效果。
2、注意遵循以下几条原则: (1)如果输入条件规定了取值范围,或是规定了值的个数,则应以该范围的边界内及刚刚超出范围的边界外的值,或是分别对最大、最小个数及稍小于最小、稍大于最大个数作为测试用例。 (2)针对规格说明的每个输出条件使用上面的规则。 (3)如果程序规格说明中提到的输入或输出域是个有序的集合(如顺序文件、表格等),就应注意选取有序集的第一个和最后一个元素作为测试用例。 (4)分析规格说明,找出其他的可能边界条件。
思考: 跳棋中的边界值分析?
三、等价类划分 1、等价类划分 是一种典型的黑盒测试方法,即用这一方法设计测试用例完全不考虑程序的内部结构,而是只根据对程序的要求和说明,即需求规格说明书。把说明中对输入的要求和输出的要求区别开来并加以分解。
2、选取等价类划分方法的原因: 由于穷举测试的办法数量太大,以至于无法实际完成,自然促使我们要在大量的可能数据中选取其中的一部分作为测试用例。问题在于如何选取——等价类划分。
等价类划分的办法是把程序的输入域划分成若干部分,然后从每个部分中选取少数代表性数据当作测试用例。
3、等价类划分方法简介 有效等价类 无效等价类 指的是对程序的规格说明是有意义的、合理的输入数据所构成的集合。在具体问题中,有效等价类可以是一个,也可以是多个。 无效等价类 指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能有多个。
4、确定等价类的原则 (1)如果输入条件规定了取值范围或值的个数,则可确定一个有效等价类和两个无效等价类。 例如,程序的规格说明中提到的输入条件包括“…项数可以从1到999…,”则可以取有效等价类“1<项数<999”。无效等价类为“项数<1”及“项数>999”。又如,程序规格说明中提到“…学生允许选修2至4门课…”,有效等价类可取“选课2至4门”,无效等价类为“只选一门或未选课”及“选课超过4门”。
(2)输入条件规定了输入值的集合,或是规定了“必须如何”的条件,则可确定一个有效等价类和一个无效等价类。 例如,某程序的规格说明中提到的输入条件包括“…统计全国各省、市、自治区的人口…”,则应取“国内省、市、自治区”为有效等价类,“非国内省、市、自治区”为无效等价类。
(3)如果我们确知,已划分的等价类中各元素在程序中的处理方式是不同的,则应将此等价类进一步划分成更小的等价类。
5、等价类表格形式:
6、确定测试用例步骤: (1)为每个等价类规定一个唯一的编号。 (2)设计一个测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类。重复这一步,最后使得所有有效等价类均被测试用例所覆盖。 (3)设计一个新的测试用例,使其只覆盖一个无效等价类。重复这一步使所有无效等价类均被覆盖。
思考: 测试文本框输入情况时,存在哪些需要使用等价类划分测试方法的?
四、因果图法 1、为何采用因果图: 等价类划分方法并没有考虑到输入情况的各种组合,也没考虑到各个输入情况之间的相互制约关系。 这样做尽管考虑到各个输入条件可能出错的多种情况,但多个输入条件组合起来出错的情况却被忽略了。 采用因果图方法(Cause-Effect Graphing)能够帮助我们按一定步骤地选择测试用例,同时还能为我们指出,程序规格说明描述中存在着什么问题。
2、测试用例选择步骤: (1)分析程序规格说明的描述中,那些是原因,那些是结果。原因常常是输入条件或是输入条件的等价类。而结果是输出条件。 (2)分析程序规格说明中的描述中语义的内容,并讲其表示成连接各个原因与各个结果的“因果图”。 (3)由于语法或环境的限制,有些原因和结果的组合情况是不可能出现的。为表明这些特定的情况,在因果图上使用若干个特殊的符号标明约束条件。 (4)把因果图转换为判定表。 (5)把判定表中每一列表示的情况写成测试用例。
3、因果图法介绍: 因果图的四种符号:
因果图的四种符号:
说明: c i 表示原因,通常置于图的左部;e i 表示结果,通常在图的右部。c i 和e i 均可取值0或1,0表示某状态不出现,1表示某状态出现。 在实际问题中,输入状态相互之间还可能存在某些依赖关系,称之为“约束”。比如,某些输入条件本身不可能同时出现。输出状态之间也往往存在约束。在因果图中,用特定的符号标明这些约束。
E约束(异):a和b中至多有一个可能为1,即a和b不能同时为1。
I约束(或):a、b和c中至少有一个必须是1,即a、b和c不能同时为0。
O约束(唯一): a和b必须有且仅有一个为1。
R约束(要求):a是1时,b必须为1,即不可能a是1时b是0。
输出条件有的约束只有M约束(强制):若结果a是1时,则b的结果强制为0。
4、小结 在较为复杂的问题中,因果图这个方法是十分有效的,它能有力地帮助我们确定测试用例。当然,如果哪个开发项目在设计阶段就采用了判定表,也就不必再画因果图,而是可以直接利用判定表设计测试用例了。
思考: 如何在测试象棋中的走马情况 时,体现因果测试法?
五、判定表驱动测试 1、判定表(Decision Table) 在一些数据处理问题中,某些操作是否实施依赖多个逻辑条件的取值。也即在这些逻辑条件取值的组合所构成的多种情况下,分别执行不同的操作。处理这类问题的一个非常有力的分析和表达工具是判定表。
2、判定表(Decision Table )驱动测试 判定由四个部分组成: 条件茬(Condition Stub) 动作茬(Action Stub) 条件项(Condition Entry) 动作项(Action Entry)
3、判定表的化简
4、判定表的特点: 它能把复杂的问题按各种可能的情况一一列举出来,简明而易于理解,也可避免遗漏。 它的不足之处在于,不能表达重复执行的动作,例如循环结构。
5、判定表在功能测试中的应用: 一些软件的功能需求可用判定表表达得非常清楚,在检验程序的功能时判定表也就成为一个非常有力的工具。
6、例如: 一软件的规格说明指出: (1)当条件1和条件2满足,并且条件3和条件4不满足,或者当条件1、3和条件4满足时,要执行操作1。 (2)在任何一个条件都不满足时,要执行操作2。 (3)当条件1不满足时,而条件4被满足时,要执行操作3。
7、适合使用判定表设计测试用例的条件: (1)规格说明以判定表形式给出,或是很容易转换成判定表。 (2)条件的排列顺序不会也不应影响执行哪些操作。 (3)规则的排列顺序不会也不应影响执行哪些操作。 (4)每当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则。 (5)如果某一规则得到满足要执行多个操作,这些操作的执行顺序无关紧要。
六、正交实验设计法 1、为何采用正交实验设计法: 利用因果图来设计测试用例时,作为输入条件的原因与输出结果之间的因果关系,有时很难从软件需求规格说明书得出,而且即使是对于一般中小规模的软件,画出的因果图也可能非常庞大,以至于据此因果图而得到的测试用例数目将达到惊人的程度,给软件测试工作带来在人工、机时、费用上的沉重负担。 为了有效地、合理地减少测试的工时与费用,可以利用在实际生产活动中行之有效的正交实验法,进行测试用例的设计。
2、正交实验设计法: 是从大量的实验点中挑选出适量的、有代表性的点,应用依据伽罗瓦理论导出的“正交表”,合理地安排实验的一种科学的实验设计方法。 在正交实验设计方法中,通常把判断实验结果优劣的标准叫做实验的指标,把有可能影响实验指标的条件称为因子,而影响实验因子的,叫做因子的水平(或状态)。
软件功能测试,作为实验的一种,完全可以利用正交实验设计法,来进行测试数据的选择,以提高测试的效率。
3、如何使用正交实验设计法: 首先要根据被测软件的规格说明书找出影响其功能实现的操作对象和外部因素,把它们当作因子,而把各个因子的取值当作状态,构造出二元的因素分析表。然后,利用正交表进行各因子的状态的组合,构造有效的测试输入数据集,并由此建立因果图。这样得出的测试用例集中,测试用例的数目将大大减少。
4、提取功能说明,构造因子—— ——状态表 在实际测试时,用户所提供的被测软件的功能说明,往往是非形式化的,很难满足构造因素分析表的需要。因此需要对软件规格说明书的功能要求进行划分,把整体的概要性的功能要求进行层层分解与展开。分解成具体的,有相对独立性的基本的功能要求,这样就可以把被测软件中所有的因子都确定下来,并为确定各因子的权值提供参考的依据。
接下来,由用户会同测试人员根据软件规格说明书,确定各个因子的取值,即因子的状态。由于有些因子的取值范围较广,我们必须进行采样取值,在各个不同的取值区间上取典型值与边界值,并重点选取某些具有特定意义的取值点。 确定因子与状态是设计测试用例的关键,因此需要尽可能全面、准确地确定取值,以确保测试用例的设计做到完整与有效。 因子与状态填入用二维表格形式表示的因子——状态表。
5、加权筛选,生成因素分析表 对因子与状态的选择可按其重要程度分别加权。具体来说,可根据各个因子及状态的作用大小,出现频率的大小,在不同的子系统或模块中的重要程度以及测试的需要,确定权值的大小。这样在必要时,可删去一部分权值较小,也就是重要性较小的因子或状态,使最后生成的测试用例集缩减到允许范围。
在不同测试阶段对因子及状态的权值的输入、改变都会有不同的要求。例如,初次测试时,可以根据被测软件规模大小,确定是否加权。若需要加权,则由测试人员确定权值并输入之,若无需加权,则应以0作为各因子及状态的权值。在进行模块或子系统测试时,有时需要修改部分因子或状态的权值,有时必须修改所有因子及状态的权值,有时可以借用上次测试的权值重复进行测试。因此,必须考虑各个测试阶段可能出现的各种情况,分别进行处理。
6、利用正交实验设计法设计测试用例的特点: 1)节省测试工作时。 2)可控制生成的测试用例的数量。 3)测试用例具有一定的覆盖度。
思考: 测试过程中,应如何使用黑盒测试技术?
课后总结: 掌握黑盒测试策略与准则 本次课重点: 掌握黑盒测试的五种方法
回顾与讨论 • Any Question ?
Thank You !