实验3、黑盒测试:决策表测试方法
黑盒测试方法---决策表法(PPT29张)

条件桩
条件项
动作桩
动作项
规 则
条件桩
决策表示例
条件项 Logo
动作桩 动作项
决策表的生成
Logo
• 若c1、c2、c3都为真,则采取动作a1和a2; • 若c1、c2都为真,c3为假,则采取动作a1和 a3; • 在c1为真c2为假条件下规则中的c3条目叫做 “不关心(条件无关或条件不适用)”条目 。 • 将任何一个条件组合的特定取值及相应要执 行的动作称为一条规则,在决策表中贯穿条 件项和动作项的一列就是一条规则。
• 试分析规格说明书,建立决策表,并简化
Logo
Thank You !
• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •
目 录
1 2 3 4 5 决策表法思想 决策表的生成 决策表法设计测试用例 决策表的简化 决策表应用
Logo
1
决策表法思想
Logo
• 决策表的概念:决策表是分析和表达多逻 辑条件下执行不同操作情况的工具。
决策表实例
• 在一些数据处理问题当中,某些操作的实 施依赖于多个逻辑条件的组合,即:针对 不同逻辑条件的组合值,分别执行不同的 操作。决策表很适合于处理这类问题。
软件测试-7黑盒测试决策表法讲解

√
A5:不可能
√√
√
2019/6/1
14
根据决策表测试用例
编号 [a,b,c] 期望输出
DT1 DT2 DT3 DT4 DT5 DT6 DT7 DT8 DT9 DT10 DT11
412 142 124 555 ??? ??? 223 ??? 232 322 345
非三角形 非三角形 非三角形 等边三角形 不可能 不可能 等腰三角形 不可能 等腰三角形 等腰三角形 一般三角形
- YN Y N Y N Y N
A1:非三角形
√
A2:一般三角形 A3:等腰三角形
√
√
√√
A4:等边三角形
√
A5:不可能
√√
√
2019/6/1
13
条件:a,b,c是否可以
三角形问题的扩展决策表
构成三角形
表2
1
2
3
4 5 6 7 8 9 10 11
C1:a<b+c? C2:b<a+c? C3:c<a+b? C4:a=b? C5:a=c? C6:b=c?
条件桩
决策表
规则 1
2
选项
条件:c1 T
T
c2 T
T
c3 T
F
动作:a1 √
√
a2 √
a3
√
a4
动作桩
3,4 T F -
√
规则
条件项
5
6 7,8
F
F
F
T
T
F
T
F
-
√
√
√
√
动作项
决策表的生成
若c1、c2、c3都为真,则采取动作a1和a2; 若c1、c2都为真,c3为假,则采取动作a1和a3; 将任何一个条件组合的特定取值及相应要执
黑盒测试的7种测试方法

黑盒测试的7种测试方法黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。
在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。
黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。
黑盒测试是以用户的角度,从输入数据与输出数据的对应关系出发进行测试的。
很明显,如果外部特性本身设计有问题或规格说明的规定有误,用黑盒测试方法是发现不了的。
黑盒测试有7种测试方法分别是等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、功能图法、正交实验法。
下面将一一介绍。
等价类划分法等价类划分是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。
该方法是一种重要的,常用的黑盒测试用例设计方法。
1、划分等价类:等价类是指某个输入域的子集合。
在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。
并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试。
因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据。
取得较好的测试结果。
等价类划分可有两种不同的情况:有效等价类和无效等价类。
有效等价类:是指对于程序的规格说明来说是合理的,有意义的输入数据构成的集合。
利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。
无效等价类:与有效等价类的定义恰巧相反。
设计测试用例时,要同时考虑这两种等价类。
因为,软件不仅要能接收合理的数据,也要能经受意外的考验。
这样的测试才能确保软件具有更高的可靠性。
2、划分等价类的方法:下面给出六条确定等价类的原则。
①在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。
黑盒测试-决策表

有多少条规则 ?
条件
1 2 3 4 5 6 7 8 9 10 11 12 13 ..
C1:月份在 M1 M1 M1 M1 M1 M1 M1 M1 M2 M2 M2 M2 M2 ..
C2:日在 C3:年在
D1 D1 D2 D2 D3 D3 D4 D4 D1 D1 D2 D2 D3 .. Y1 Y2 Y1 Y2 Y1 Y2 Y1 Y2 Y1 Y2 Y1 Y2 Y1 ..
实战演习2
列出所有的条件桩和动作桩; 填入条件项; 填入动作项,制定初始判定表; 简化、合并相似规则或者相同动作。
进一步优化
两项因素没有影响
优化
案例分析-三角形问题
1列出所有的条件桩和行动桩
条件桩
行动桩
C1:a<b+c? C2:b<a+c? C3:C<a+b? C4:a=b? C5:a=c? C6:b=c?
<=28} D2={日期:日期=29} D3={日期:日期=30} D4={日期:日期=31} Y1={年:年是闰年} Y2={年:年是平年}
C5:日期在D2中 C6:日期在D3中 C7:日期在D4中 C8:年是闰年 C9:年是平年
规则数?
2^9=512 太大!
新办法…
等价类
M1={月份:每月有30天} M2={月份:每月有31天} M3={月份:此月是2月} D1={日期:1<=日期
条件 C1:月份在{M1,M2,M3,m4}中之一 C2:日期在{D1,D2,D3,D4 ,D5}中之
一 C3:年在{Y1,Y2}中之一
问题:可得到 ?条规则
新的NextDate函数的扩展条目决策表:
条件 C1:月份在 C2:日在
软件工程中软件测试方法

软件工程中软件测试方法软件测试是软件工程中非常重要的环节,它用于验证和评估软件系统是否满足预期的需求,并发现其中的错误和缺陷。
在软件测试过程中,可以采用多种不同的测试方法来确保软件的质量和稳定性。
以下是一些常见的软件测试方法:1. 黑盒测试:这种测试方法着重于测试软件系统的功能性,而不考虑内部的实现细节。
测试人员只关注输入和输出之间的关系,通过输入不同的数据,检查系统的响应和输出是否符合预期。
黑盒测试通常包括等价类划分、边界值分析、决策表等技术来设计测试用例。
2. 白盒测试:与黑盒测试相反,白盒测试关注软件系统的内部结构和实现。
测试人员需要了解代码的逻辑和结构,在此基础上设计相关的测试用例。
白盒测试通常包括语句覆盖、分支覆盖、路径覆盖等技术,以确保代码的全面覆盖率。
3. 灰盒测试:灰盒测试是黑盒测试和白盒测试的结合,既考虑系统的功能性,也考虑内部的实现。
测试人员在设计测试用例时,会兼顾输入输出关系和代码结构等因素。
4. 冒烟测试:冒烟测试也称为可靠性测试或基本功能测试,用于验证软件系统的基本功能是否正常工作。
在软件开发过程中的早期阶段,进行冒烟测试可以尽早发现严重的错误和缺陷。
5. 性能测试:性能测试用于评估软件系统在不同负载下的性能表现,包括响应时间、吞吐量、并发性能等指标。
通过性能测试,可以确定系统在实际使用场景下的性能瓶颈,并进行性能优化。
6. 安全测试:安全测试用于评估软件系统的安全性,包括数据安全、身份认证、访问控制等方面。
通过安全测试,可以发现系统中的安全漏洞和弱点,并提供相应的安全防护措施。
7. 兼容性测试:兼容性测试用于验证软件系统在不同的操作系统、浏览器、设备等环境下的兼容性。
通过兼容性测试,可以确保软件在各种环境下都能正常运行。
以上是软件工程中常见的软件测试方法,每种方法都有其特定的应用场景和测试目标。
在实际项目中,通常会根据需求和资源的情况,选择合适的测试方法来保证软件的质量和稳定性。
软件测试(14)--黑盒测试案例设计技术--基于决策表的测试

软件测试(14)--黑盒测试案例设计技术--基于决策表的测试决策表,也叫判定表。
在所有的功能性测试方法中,基于决策表的测试方法被认为是最严格的,因为决策表具有逻辑严格性。
人们使用两种密切关联的方法:因果图法和决策表格法。
与决策表相比,这两种方法使用起来更麻烦,并且全冗余。
决策表是分析和表达多逻辑条件下执行不同操作的情况的工具。
在程序设计发展的初期,决策表就已被用作编写程序的辅助工具了。
它可以把复杂的逻辑关系和多种条件组合的情况表达得比较明确。
1、决策表的组成决策表通常由4个部分组成,如下图:●条件桩(condition stub):列出了问题的所有条件。
通常认为列出的条件的次序无关紧要。
●动作桩(action stub):列出了问题规定可能采取的操作。
这些操作的排列顺序没有约束。
●条件项(condition entry):列出针对它所列条件的取值,在所有可能情况下的真假值。
●动作项(action entry):列出在条件项的各种取值情况下应该采取的动作。
●规则:任何一个条件组合的特定取值及其相应要执行的操作。
在决策表中贯穿条件项和动作项的一列就是一条规则。
显然,决策表中列出多少组条件取值,也就有多少规则,条件项和动作项就有多少列。
2、决策表建立决策表的建立应该根据软件规格说明,步骤如下:①确定规则的个数。
假如有n个条件,每个条件有两个取值(0,1),故有2n种规则。
②列出所有的条件桩和动作桩。
③输入条件项。
④填入动作项。
制定初始决策表。
⑤简化。
合并相似规则或者相同动作。
Beizer(《Software Testing Techniques》的作者)指出了适合使用决策表设计测试用例的条件:①规格说明以决策表的形式给出,或很容易转换成决策表。
②条件的排列顺序不影响执行哪些操作。
③规则的排列顺序不影响执行哪些操作。
④当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则。
⑤如果某一规则要执行多个操作,这些操作的执行顺序无关紧要。
黑盒测试常用的方法

黑盒测试常用的方法黑盒测试是一种软件测试方法,它是在不考虑内部逻辑的情况下对软件进行测试。
黑盒测试方法主要关注软件的功能和性能,以验证软件是否符合预期的行为和需求。
以下是常用的黑盒测试方法:1. 等价类划分:这是一种常用的测试方法,它将输入域划分为多个等价类,每个等价类代表相同的输入条件。
然后,从每个等价类中选择一个测试用例进行测试,以覆盖整个输入域。
2. 边界值分析:这种方法使用输入域的边界值作为测试用例,因为通常边界值处容易出现错误。
通过测试输入域的最小值、最大值和所有边界值,可以发现可能存在的边界条件错误。
3. 错误推测:根据软件的规格说明或需求文档,分析可能的错误,然后设计测试用例来验证这些错误是否已正确处理。
例如,输入非法数据时是否有适当的错误提示。
4. 决策表测试:使用决策表来测试软件的各种输入组合。
决策表列出了所有可能的输入和它们对应的输出,通过测试这些组合可以检查软件的正确性。
5. 回归测试:当软件发生变更时,为了确保修改不会引入新的错误或破坏已有的功能,使用回归测试来重新执行一部分或全部之前的测试用例。
6. 状态转换测试:对软件的不同状态进行测试,例如登录状态、注销状态、错误状态等。
通过切换软件的状态并测试其相应的行为,可以验证软件是否正确地在不同状态之间转换。
7. 用户界面测试:测试软件的用户界面,包括布局、颜色、字体等方面。
通过测试用户界面的各个组件和功能,可以确保用户能够正常地操作软件。
8. 性能测试:测试软件的性能和响应时间。
通过模拟高负载和并发用户,并监测软件的响应时间和资源使用情况,可以评估软件的性能是否满足需求。
9. 安全测试:测试软件的安全性,如是否存在漏洞、是否能够抵御攻击等。
通过测试软件的鉴权、加密、防护等机制,可以确保软件的安全性。
10. 兼容性测试:测试软件在不同操作系统、浏览器、设备等平台上的兼容性。
通过测试软件在各种环境下的功能和性能,可以确保软件在不同平台上的可用性。
7.黑盒测试(3)-决策表

实战演习 2 问题要求:”……对功率大于50马力的机器、维 修记录不全或已运行10年以上的机器,应给予优 先的维修处理……” 。这里假定,“维修记录不 全”和“优先维修处理”均已在别处有更严格的 定义。请建立决策表。
实战演习2 实战演习
列出所有的条件桩和动作桩; 填入条件项; 填入动作项,制定初始判定表; 简化、合并相似规则或者相同动作。
2 Y Y N
3
4 Y N N
5 N 2 Y N Y Y √Y
6 N3 YN NY
7 N N Y
8
1Y YN -Y -
4N NN NN -
你对内容感兴趣吗? 你对内容感兴趣吗? 书中内容使你胡涂吗? 书中内容使你胡涂吗? Y 书中内容使你胡涂吗? 书中内容使你胡涂吗 请回到本章开头重读 ? 请回到本章开头重读 继续读下去
C1:月份在 中 月份在M1中 月份在 C2:月份在 中 月份在M2中 月份在 C3:月份在 中 月份在M3中 月份在 C4:日期在 中 日期在D1中 日期在 C5:日期在 中 日期在D2中 日期在 C6:日期在 中 日期在D3中 日期在 C7:日期在 中 日期在D4中 日期在 C8:年是闰年 年是闰年 C9:年是平年 年是平年
NextDate是一个有三个变量(月份、日期和年)的函数。函数返回输 是一个有三个变量(月份、日期和年)的函数。 是一个有三个变量 入日期后面的那个日期。 入日期后面的那个日期。 变量月份、日期和年都为整数,且满足以下条件: 变量月份、日期和年都为整数,且满足以下条件:
C1.1<=月份 月份<=12 月份 C2.1<=日期 日期<=31 日期 C3.1912<=年<=2050 年
C1:月份在 M1 M1 M1 M1 M2 M2 M2 M2 M3 M3 M3 M3 M3 M3 月份在 D1 D2 D3 D4 D1 D2 D3 D4 D1 D1 D2 D2 D3 D4 √ √ √ √ √ ? ? ? √ ? ? ? √ √ Y1 Y2 Y1 Y2 √ √ √
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
20 15 — 20 16 学年第 2 学期软件测试技术课程实验报告学院:计算机科学技术专业:软件工程班级:软件二班姓名:吴德宁学号:041340217任课教师:刘玉宝实验日期:2016年 5 月 17 日实验题目实验3、黑盒测试:决策表测试方法实验目的1、掌握决策表的概念2、掌握决策表测试用例设计法。
实验内容1、对NextDate问题运用决策表法设计测试用例,并执行测试,撰写实验报告。
NextDate (int month, int day, int year)函数规定:输入三个整数:month、day 和year,函数的输出为输入日期后一天的日期。
例如,输入为2006年3月7日,则函数的输出为2006年3月8日,year满足1920≤year≤2050。
实验步骤:1)构造决策表●M1={月份:30天/月},M2={月份: 31天/月,12月除外},M3={月份: 12月},M4={月份: 2月}●D1={日期:1<=日<=27},D2={日期:日=28},D3={日期:日=29} ,D4={日期:日=30},D5={日期:日=31}●Y1={年:闰年},Y2={年:平年}注:二月:平年28天,闰年29天条件桩:●C1:月份在{M1,M2,M3,M4}中之一●C2:日期在{D1,D2,D3,D4 ,D5}中之一●C3:年在{Y1,Y2}中之一动作桩:●A1:不可能●A2:日期增1●A3:日期复位(置1)●A4:月份增1●A5:月份复位(置1)●A6:年增11 2 3 4 5 6 7 8 9 10C1:月M1 M1 M1 M1 M1 M2 M2 M2 M2 M2C2:日D1 D2 D3 D4 D5 D1 D2 D3 D4 D5C3:年A1:不可能√A2:日期+1 √√√√√√√A3:日期复位√√(置1)A4:月份+1 √√A5:月份复位(置1 )A6:年+111 12 13 14 15 16 17 18 19 20 21 22C1:月M3 M3 M3 M3 M3 M4 M4 M4 M4 M4 M4 M4C2:日D1 D2 D3 D4 D5 D1 D2 D2 D3 D3 D4 D5C3:年Y1 Y2 Y1 Y2 A1:不可能√√√A2: 日期+1 √√√√√√√√√A3: 日期复位(置1)A4: 月份+1 √√√A5: 月份复位(置1 )A6: 年+1 √2)根据决策表设计测试用例,得到测试用例表(测试用例表格式同实验1)。
用例编号月日年预期输出1--3 4 12/28/29 2001 2001年4月13/29/30日4 4 30 2001 2001年5月1日5 4 31 2001 不可能2001 2001年1月16/29/30/31日6--9 1 15/28/29/310 1 31 2001 2001年2月1日11-14 12 15/28/29/32001 2001年12月16/29/30/31日15 12 31 2001 2002年1月1日16 2 15 2001 2001年2月16日17 2 28 2004 2004年2月29日18 2 28 2001 2001年3月1日19 2 29 2005 2005年3月1日20 2 29 2001 不可能21,22 2 30/31 2001 不可能3)执行测试,填写软件缺陷报告(软件缺陷报告格式同实验1)。
缺陷编号001 用例编号1—3 缺陷类型严重级别严重优先级优先缺陷状态New测试阶段□单元□集成□系统□√验收□其它()可重现性□是□否BUG原因□需求分析□基本设计□详细设计□设计式样理解□√编程□数据库设计□环境配置□其它()缺陷描述输入非数字字符,运行出现死循环预期结果报告输入格式错误重现步骤备注按照步骤打开程序,输入非字符,运行以下部分由BUG修改人填写缺陷修改描述测试人修正人确认人修正日期年月日缺陷编号001 用例编号缺陷类型缺陷编号002 用例编号9 缺陷类型严重级别一般优先级优先缺陷状态New 测试阶段□单元□集成□系统□√验收□其它()可重现性□是□否BUG原因□需求分析□基本设计□详细设计□设计式样理解□√编程□数据库设计□环境配置□其它()缺陷描述输入2012.1.30,出现两次2012.2.1预期结果出现一次2012.2.1重现步骤备注按照步骤打开程序,输入2012.1.30,出现两次2012.2.1以下部分由BUG修改人填写缺陷修改描述测试人修正人确认人修正日期年月日缺陷编号003 用例编号12 缺陷类型严重级别严重优先级优先缺陷状态New测试阶段□单元□集成□系统□√验收□其它()可重现性□是□否BUG原因□需求分析□基本设计□详细设计□设计式样理解□√编程□数据库设计□环境配置□其它()缺陷描述输入2012.12.31出现2011.12.33预期结果应该出现2013.1.2重现步骤备注按照步骤打开程序,输入2012.12.31出现2011.12.33以下部分由BUG修改人填写缺陷修改描述测试人修正人确认人修正日期年月日测试代码(C语言实现)#include <iostream>using namespace std;void NextDate(int year,int month,int day);void main(){int year=0,month=0,day=0;NextDate(year,month,day);}void NextDate(int year,int month,int day){cout<<"请输入年份:"<<endl;cin>>year;while(!(year>=1811 && year<=2013)){cout<<"年份超过界限,请重新输入"<<endl;cin>>year;}cout<<"请输入月份:"<<endl;cin>>month;while (month>12||month<1){cout<<"月份输入有误,请重新输入"<<endl;cin>>month;}cout<<"请输入日期:"<<endl;cin>>day;while (day>31||day<1){cout<<"日期输入有误,请重新输入"<<endl;cin>>day;}if((year%4==0 && year%100!=0) || (year%400==0)) //检查闰年;{int i=0;i=day-29;while(month==2&&i>0){cout<<"本月是闰月,请在1-29之间从新输入日期"<<endl;cin>>day;}if(month==2&&day==28){month=3;day=1;}else if(month==2&&day==29){month=3;day=2;}else day=day+2;}else day=day+2;//月底计算;switch(month){case 1:case 3:case 5:case 7:case 8:case 10:if (day==32){month++;day=1;cout<<"明天是:"<<year<<'/'<<month<<'/'<<day<<endl;}else if (day==33){month++;day=2;cout<<"明天是:"<<year<<'/'<<month<<'/'<<day<<endl;}break;case 2:if(day==29){month=3;day=1;cout<<"明天是:"<<year<<'/'<<month<<'/'<<day<<endl;}else if(day==30){month=3;day=2;cout<<"明天是:"<<year<<'/'<<month<<'/'<<day<<endl;}break;case 4:case 6:case 9:case 11:if(day==31){month++;day=1;cout<<"明天是:"<<year<<'/'<<month<<'/'<<day<<endl;}else if(day==32){month++;day=2;cout<<"明天是:"<<year<<'/'<<month<<'/'<<day<<endl;}break;case 12:if(day==32){year++;month=1;day=1;cout<<"明天是:"<<year<<'/'<<month<<'/'<<day<<endl;}break;}cout<<"明天是:"<<year<<'/'<<month<<'/'<<day<<endl;}2、航空服务查询问题:根据航线,仓位,飞行时间查询航空服务。
假设一个中国的航空公司规定:●中国去欧美的航线所有座位都有食物供应,每个座位都可以播放电影。