[黑盒测试基本方法]状态迁移法
黑盒测试的7种测试方法

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

黑盒测试方法有哪些黑盒测试是一种软件测试方法,它是在不考虑内部结构和代码的情况下对软件进行测试。
黑盒测试方法主要是通过输入数据和对应的输出结果来验证软件系统的功能是否符合需求。
在实际的软件开发过程中,黑盒测试方法是非常重要的,它可以帮助开发人员发现软件系统中的功能性问题,提高软件的质量和稳定性。
下面我们将介绍一些常用的黑盒测试方法。
1. 等价类划分测试方法。
等价类划分是一种常用的黑盒测试方法,它将输入数据划分成若干个等价类,然后从每个等价类中选择一个代表性的数据进行测试。
这种方法可以有效地减少测试用例的数量,同时保证对输入数据的全面覆盖。
例如,对于一个要求输入1到100之间的数字的软件系统,可以将输入数据划分为小于1、1到100、大于100这三个等价类,然后分别选择一个代表性的数据进行测试。
2. 边界值测试方法。
边界值测试是一种基于等价类划分的测试方法,它主要是针对输入数据的边界值进行测试。
由于边界值往往是容易出错的地方,因此通过对边界值进行测试可以有效地发现潜在的问题。
例如,对于一个要求输入1到100之间的数字的软件系统,可以分别测试1、100以及2和99这两个边界值。
3. 因果图测试方法。
因果图是一种用于描述软件系统功能与输入数据之间关系的图形工具,因果图测试方法主要是通过分析因果图来设计测试用例。
通过因果图测试方法,可以发现输入数据之间的关联性,从而设计出更加全面的测试用例。
4. 判定表测试方法。
判定表是一种用于描述软件系统功能与输入条件之间关系的表格工具,判定表测试方法主要是通过分析判定表来设计测试用例。
判定表测试方法可以帮助测试人员更好地理解软件系统的功能需求,从而设计出更加全面的测试用例。
5. 状态迁移测试方法。
状态迁移测试是一种专门针对有状态的软件系统进行测试的方法,它主要是通过对系统状态的变化进行测试。
通过状态迁移测试方法,可以发现系统状态转换时可能出现的问题,从而保证系统的稳定性和可靠性。
黑盒测试是什么,有哪些方法

黑盒测试是什么,有哪些方法黑盒测试是一种软件测试方法,它是在不了解软件内部结构的情况下对其功能进行测试的一种测试手段。
黑盒测试关注软件的输入和输出之间的关系,而不关注软件内部的实现细节。
在进行黑盒测试时,测试人员只需要通过输入一些数据,观察软件的响应并验证其是否符合预期的行为,从而判断软件是否能够按照要求正常运行。
黑盒测试的方法1. 等价类划分等价类划分是黑盒测试中常用的一种方法。
在等价类划分中,测试用例被划分为若干等价类,每一个等价类代表了一组相似的输入数据,该组数据具有相同的测试结果。
通过选取每个等价类的典型值作为测试数据,可以有效地减少测试用例的数量,提高测试效率。
2. 边界值分析边界值分析是一种针对边界条件的黑盒测试方法。
在边界值分析中,测试人员会针对输入值的边界情况设计测试用例,以验证软件在边界条件下的正确性。
通过对输入值的最大值、最小值以及临界值进行测试,可以发现潜在的软件缺陷,提高软件的稳定性和健壮性。
3. 因果图法因果图法是一种用于识别软件功能之间关系的黑盒测试方法。
在因果图法中,通过绘制因果图来描述软件功能之间的依赖关系,帮助测试人员理解系统的功能结构和交互逻辑,从而设计有效的测试用例。
因果图法能够帮助测试人员快速准确地捕捉系统的关键功能点,提高测试的全面性和覆盖率。
4. 决策表测试决策表测试是一种黑盒测试方法,它通过设计决策表来确定软件在不同条件下的响应行为。
在决策表中,列出了软件可能的输入条件和相应的输出行为,测试人员可以根据决策表设计测试用例,验证软件在不同条件下的逻辑正确性。
决策表测试能够帮助测试人员全面地覆盖软件的各种情况,有效地发现潜在的错误和漏洞。
5. 状态迁移测试状态迁移测试是一种针对有状态系统的黑盒测试方法。
在状态迁移测试中,测试人员会设计测试用例,覆盖软件在不同状态之间的转换过程,以验证软件在状态切换时的正确性。
通过状态迁移测试,可以有效地发现软件在状态转换时出现的错误,确保软件在不同状态下的行为符合预期。
黑盒测试用例设计方法之:状态迁移法

新建new 测试⼈员新建⼀个缺陷记录已分派assigned 将缺陷指派给对应的开发已确认confirmed 开发确认这是的确是缺陷,并且后续会处理打回feedback开发认为这不是缺陷,打回给测试,不做修改已打开但未处理open 将缺陷置为打开状态,开始修改已解决但未验证resolved 缺陷已被开发修改,但没有被测试已解决并已验证fixed 缺陷已被开发修改,并且测试通过重新打开reopen 被开发修改过的缺陷,未通过测试验证延期suspended 缺陷当前不做修改或⽆法修改,需要延期处理已关闭closed缺陷已确认被修复,并没有再复现,关闭⿊盒测试⽤例设计⽅法之:状态迁移法⽹上查找了⼤量关于状态迁移法的知识,都没有得到⾃⼰想要的内容,因此⾃⼰动⼿来记录这个测试⽤例设计⽅法,⾸先我在mantis 上筛选了⼀些常⽤的缺陷状态,如下;除了上述的状态以外,还有acknowledged(公认)、unable to reproceduce(⽆法复现)、duplicate(重复问题)、not fixable(⽆法修复)、no change required(不是问题)、won't fix(不做修改)等等既然状态已经得到了,那么接下来就开始尝试使⽤状态迁移法来设计⽤例,第⼀步:先在表格中找出有关联的状态,并标记出来:⾏中表⽰上⼀个状态,列中表⽰下⼀个状态,归纳出的表格如下图所⽰;新建已分派已确认打回已打开但未处理已解决但未验证已解决并已验证重新打开延期已关闭新建 已分派1 1 已确认 1 打回1 已打开但未处理11 11 已解决但未验证1 已解决并已验证1 重新打开 1 延期 1 已关闭111假设缺陷⽣命周期的起始状态均为新建。
第⼆步:绘制状态转换流程图,其实这个步骤感觉可以省略,直接整理向下或者向右的树形图,如下;新建已分派已确认已打开但未处理延期已打开但未处理打回已分派已关闭已打开但未处理已解决但未验证已解决并已验证重新打开已打开但未处理已关闭已关闭以上就是整理出的向右的状态迁移树形图,每⼀个分⽀都是⼀个测试路径,接下来我们就可以做,第三步:将第⼆步的树形图转换成状态路径,如下:1. 新建->已分派->已确认->已打开但未处理2. 新建->已分派->已确认->延期->已打开但未处理3. 新建->已分派->打回->已分派4. 新建->已分派->打回->已关闭5. 新建->已分派->已打开但未处理->已解决但未验证->已解决并已验证->重新打开->已打开但未处理6. 新建->已分派->已打开但未处理->已解决但未验证->已解决并已验证->已关闭7. 新建->已关闭从上⾯罗列的状态路径可以看出,有些路径的最后的状态并不缺陷实际的最终状态,主要是因为这些路径的后续状态在其他状态中已经体现。
黑盒测试的方法有哪些覆盖

黑盒测试的方法有哪些覆盖黑盒测试是软件测试中的一种重要方法,它着重于测试软件的功能,而不考虑内部结构或源代码。
黑盒测试可以帮助发现功能性缺陷、性能问题以及安全漏洞。
在进行黑盒测试时,测试人员不需要了解软件的内部工作原理,而是根据软件的需求规格和预期功能来设计测试用例。
接下来我们将介绍一些常用的黑盒测试方法及其覆盖范围。
等价类划分等价类划分是一种常用的黑盒测试方法,它将输入值划分为等价类,从每个等价类中选择一个代表性的值进行测试。
通过这种方式可以有效地减少测试用例的数量,同时覆盖到各个等价类。
边界值分析边界值分析是另一种常见的黑盒测试方法,它侧重于测试输入值的边界条件。
在进行测试时,我们会选择处于边界的数值来验证软件的响应是否正确。
通过边界值分析可以发现一些常见的程序错误,比如越界访问、溢出等问题。
因果图法因果图法是一种用于描述系统逻辑关系的图形化工具,通过绘制因果图来分析系统的功能以及相互约束关系。
在黑盒测试中,可以利用因果图法帮助测试人员理解系统的逻辑流程,从而设计出更加全面的测试用例。
决策表测试决策表是一种用于描述系统决策规则的方法,通过列出各种可能的输入条件及其对应的输出结果来帮助理解和验证系统的功能。
在黑盒测试中,可以结合决策表测试方法来覆盖各种不同的场景,并验证系统是否按照规定的决策规则正确运行。
状态迁移测试状态迁移测试是一种适用于有状态系统的黑盒测试方法,通过识别系统的不同状态以及状态之间的转换条件来设计测试用例。
通过状态迁移测试可以覆盖系统的各种状态和状态转换情况,确保系统在不同状态下的行为正确。
以上介绍了几种常见的黑盒测试方法,每种方法都有其独特的测试重点和覆盖范围。
在实际测试中,可以根据项目需求和系统特点选择合适的测试方法,结合多种方法来设计全面的测试用例,以确保软件的质量和稳定性。
黑盒测试是软件测试中不可或缺的一环,通过科学合理的测试方法和设计,可以发现潜在的问题,提高软件的可靠性和稳定性。
黑盒测试的方法包括

黑盒测试的方法包括黑盒测试是一种软件测试方法,旨在检查软件应用程序功能的正确性,而不考虑内部程序结构或代码。
在黑盒测试中,测试人员只关注输入和输出,测试目标是验证系统是否按照规格说明书或功能需求工作。
黑盒测试的方法包括以下几种常见技术:1. 等价类划分等价类划分是一种黑盒测试技术,将输入数据划分为有效的等价类和无效的等价类。
在测试中,我们只需选择一个代表性的值来测试每个等价类,从而有效地减少测试用例的数量。
例如,对于要求输入1到100之间的数字的程序,我们可以选择测试用例1、50和100代表几个等价类。
2. 边界值分析边界值分析是一种黑盒测试技术,旨在测试程序对输入边界的处理能力。
测试人员会选择接近边界值和边界值本身的测试用例,以确保系统在边界条件下能正确工作。
例如,对于要求输入1到100之间的数字的程序,我们会测试1、100、0和101等边界值附近的情况。
3. 因果图方法因果图方法是一种黑盒测试技术,用于将系统功能描述为输入和输出之间的因果关系。
测试人员可以根据这种方法创建因果图,找出系统的功能点和输入/输出之间的关联。
通过这种方法,可以帮助测试人员理清测试需求并设计出有效的测试用例。
4. 决策表方法决策表方法是一种黑盒测试技术,用于描述系统行为的决策逻辑。
测试人员根据系统规格或需求文档创建一个决策表,列出所有可能的输入组合和相应的输出。
然后根据决策表设计测试用例,以确保系统在各种情况下都能正确处理。
5.状态迁移测试状态迁移测试是一种黑盒测试技术,主要用于测试系统在不同状态变化下的行为。
测试人员会定义系统可能的状态和状态之间的转换规则,然后设计测试用例来覆盖各种状态转换情况。
通过状态迁移测试,可以检查系统是否按照设计规定的状态机行为。
这些方法是黑盒测试中常用的技术,每种方法都可以帮助测试人员有效地设计测试用例,并发现系统中的潜在问题。
在实际测试中,测试人员可以根据具体项目需求和测试目标选择合适的技术,以确保黑盒测试的全面性和有效性。
状态迁移法

状态迁移法状态迁移法是一种常用的软件测试方法,它可以帮助测试人员更有效地发现软件中的错误和缺陷。
本文将介绍状态迁移法的基本原理、应用场景、优缺点以及实际应用中需要注意的问题。
一、基本原理状态迁移法是一种基于有限状态自动机(Finite State Machine,FSM)的测试方法。
有限状态自动机是一种数学模型,用于描述系统的状态和状态之间的转移。
在软件测试中,我们可以将被测软件看作一个有限状态自动机,每个状态代表软件的某个运行状态,状态之间的转移代表软件执行某个操作或接收某个输入后的状态转换。
状态迁移法的基本原理就是通过构建有限状态自动机模型,来分析软件的状态转移规律,找出可能存在的错误和缺陷。
具体来说,状态迁移法需要完成以下几个步骤:1. 确定被测软件的状态和状态之间的转移。
一般来说,状态可以是软件的某个界面、某个功能或某个操作,状态之间的转移可以是用户的输入、系统的响应或程序的执行。
2. 根据状态和状态之间的转移,构建有限状态自动机模型。
在模型中,每个状态都对应着软件的某个状态,每个转移都对应着软件的某个操作或输入。
3. 针对每个状态和转移,设计测试用例。
测试用例应该包括输入数据、预期输出和实际输出,用于检查软件在不同状态和转移下的正确性和健壮性。
4. 执行测试用例,记录测试结果。
测试结果应该包括测试用例的执行情况、实际输出和预期输出的比较结果,以及发现的错误和缺陷。
二、应用场景状态迁移法适用于软件功能测试、界面测试、性能测试和安全测试等方面。
具体来说,它可以用于以下几个方面:1. 功能测试。
状态迁移法可以帮助测试人员发现软件的功能缺陷,例如某个操作无法执行、某个功能无法实现或某个状态无法转移等。
2. 界面测试。
状态迁移法可以帮助测试人员发现软件界面的缺陷,例如界面显示不正常、界面操作不方便或界面布局不美观等。
3. 性能测试。
状态迁移法可以帮助测试人员发现软件的性能问题,例如响应时间过长、负载能力不足或资源占用过高等。
状态迁移法——精选推荐

状态迁移法 许多需求⽤状态机的⽅式来描述,状态机的测试主要关注在测试状态转移的正确性上⾯。
对于⼀个有限状态机,通过测试验证其在给定的条件内是否能够产⽣需要的状态变化,有没有不可达的状态和⾮法的状态。
可能不可能产⽣⾮法的状态转移等。
对于被测系统,若我们可以抽象出它的若⼲个状态,以及这些状态之间的切换条件和切换路径,那么就可以从状态迁移路径覆盖的⾓度来设计⽤例对该系统进⾏测试。
状态迁移法的⽬标是设计⾜够的⽤例达到对系统状态的覆盖、状态-条件组合的覆盖以及状态迁移路径的覆盖。
状态迁移法的思想是提供将多个状态的转换串联起来进⾏测试的思路。
该⽅法适合测试各种状态的转换,⽽且这些状态转换的测试在实践中是易遗漏的。
例如像⼿机、MP3等,都可以使⽤状态迁移法对使⽤状态的迁移(即⽤户使⽤场景的转换)进⾏测试。
状态迁移法的使⽤:步骤⼀:根据需求提取全部状态;步骤⼆:绘制状态迁移图;步骤三:根据状态迁移图推导测试路径(状态迁移树);步骤四:选取测试数据,构造测试⽤例。
例⼦:⼀、需求:路⼈甲打电话预订飞机票,要去某地。
⼆、分析:1、测试需求分析:a).客户向航空公司打电话预订机票。
此时,机票信息处于“完成预订”状态;b).顾客⽀付了机票款项后,机票信息变为“已⽀付”状态;c).客户当天到达机场并使⽤⾝份证换领登机牌后,机票信息变为“已出票”状态;d).检票登机后,机票信息变为“已使⽤”状态;e).在登机前,可以取消⾃⼰的订票信息,若已⽀付机票费⽤,则可以退回票款。
取消后,订票信息处于“已取消”状态;由以上分析得出客户预订机票时订单的全部状态:完成预定、已⽀付、已出票、已使⽤、已取消;2、测试设计⽅法分析(状态迁移法):a).状态迁移图:b).测试路径(状态迁移树):由状态迁移图得出的测试路径:(1).A->B->E;(2).A->B->C->E;(3).A->B->C->D。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
状态迁移法
一、概念
1.什么是状态迁移法
在定义状态迁移法之前,先介绍一下程序的功能说明。
一个程序的功能说明通常由动态说明和静态说明组成。
动态说明描述了输入数据的次序或转移的次序。
静态说明描述了输入条件与输出条件之间的对应关系。
对于较复杂的程序,由于存在大量的组合情况,因此,仅用静态说明组成的规格说明对于测试来说往往是不够的,必须用动态说明来补充功能说明。
功能图方法是用功能图形式化地表示程序的功能说明,并机械地生成功能图的测试用例。
功能图模型由状态迁移图和逻辑功能模型构成:
(1)状态迁移图用于表示输入数据序列以及相应的输出数据。
用状态和迁移
来描述一个状态指出数据输入的位置(或时间),而迁移则指明状态的改
变,同时要依靠判定表或因果图表示的逻辑功能。
在状态迁移图中,由
输入数据和当前状态决定输出数据和后续状态。
(2)逻辑功能模型用于表示在状态中输入条件和输出条件之间的对应关系。
逻辑功能模型只适合于描述静态说明,输出数据仅由输入数据决定。
(3)测试用例则是由测试中经过的一系列状态和在每个状态中必须依靠输入
/输出数据满足的一对条件组成。
如何从状态迁移图中选取用例?我们采用节点代替状态,弧线代替迁移,那么状态迁移图就转换成为一个程序的控制流程图,问题也就随之转换为路径测试的问题了。
所以,功能图方法其实是是一种黑盒/白盒混合使用的用例设计方法。
比如在功能图方法中,用到的逻辑覆盖与路径测试的概念和方法,就是属于白盒测试方法中的容。
(逻辑覆盖是以程序部的逻辑结构为基础的测试用例设计方法,该方法要求测试人员对程序的逻辑结构有清楚的了解。
由于覆盖测试的目标不同,逻辑覆盖可分为:语句覆盖,判定覆盖,判定-条件覆盖,条件组合覆盖及路径覆盖。
)
注意:测试人员应当注意区分黑盒测试中系统功能或者系统水平上的逻辑覆盖与路径,和白盒测试中所指的程序部的逻辑覆盖的区别。
状态迁移法的目标是设计足够的用例达到对系统状态的覆盖、状态——条件组合的覆盖以及状态迁移路径的覆盖。
测试用例的生成规则:为了把状态迁移(测试路径)的测试用例与逻辑模型(局部测试用例)的测试用例组合起来,从功能图生成实用的测试用例,须在一个结构化的状态迁移(SST)中,定义三种形式的循环——顺序、选择和重复。
然后按照以下四个过程从功能图中生成测试用例。
1. 生成局部测试用例。
在每个状态中,从因果图生成局部测试用例。
局部测试用例由原因值(输入数据)组合与对应的结果值(输出数据或状态)构成。
2. 测试路径生成。
利用上面的规则(顺序、选择、重复)生成从初始状态到最后状态的测试路径。
3. 测试用例合成。
合成测试路径与功能图中每个状态中的局部测试用例,结果是初始状态到最后状态的一个状态序列,以及每个状态中输入数据与对应输出数据的组合。
4. 测试用例的合成算法。
采用条件构造树。
二、操作步骤及实例分析
借鉴实例(?)——手机中MP3的播放功能。
在手机中使用MP3,R键功能为倒退,P键功能为播放,F键功能为快进,RC键功能为录音,S键功能为暂停;其中没有选择MP3曲目时不能按任何键,并且当MP3曲目在起点时不能按R键,当MP3曲目在末端时不能按P、F键;MP3只有在暂停状态下才可以录音。
本工程方法具体的实施步骤如下:
步骤1:绘制状态迁移图
图:手机中MP3的播放功能——状态迁移图
步骤2:定义状态——条件表
当前状态事件下一状态输出
P 播放
中途停止
F 前进
步骤3:根据状态迁移图推到测试路径
- a 从初始状态节点(可以有多个)出发,依据广度优先原则遍历状态迁移图,遍历到结束状态节点或已经遍历过的节点为一次遍历结束,得到一条测试路
径。
- b 选取需要测试的路径,达到规定的路径覆盖率。
这里每条路经对应一个或几个测试用例规格。
其中“覆盖路径”指该用例覆盖的路径的分支序列;“覆盖状态——条件组合”指该分支序列上各状态点和条件的组合。
为了更好地进行遍历,可以借助于状态转换树,使用状态转换树首先要确定一个根节点,比如状态迁移图中的“起点停止”状态,然后从该状态往后延伸,有三个方向,可以分别转换到播放状态、快进状态,录音状态。
然后再分别从这三个状态往后延伸,直到所有的状态转换都包含到该状态转换树中。
从根节点到最后的叶子节点就是需要测试的路径。
图:手机中MP3的播放功能——状态转换树
步骤4:选取测试数据,构造测试用例
对选定的每条需要测试的路径,结合等价类、边界值分析,确定每个状态节点的输入,沿着该路经通过表格将各种测试数据的输入输出对应起来,这样就完成了测试用例的设计。
如果有足够的时间,就应该测试软件的每一个分支——不仅是连接两个状态的每一条线,而是每一种线路组合。
但是覆盖所有分支是不可能的,正如对数据等价分配一样,大量的可能性也需要减少可操作的测试用例数目。
我们可以通过以下5种方法减少测试用例:
1.每种状态至少访问一次。
无论用什么方法,必须测试每一种状态。
2.测试看起来最常见最普遍的状态转换。
我们可以根据审查产品说明书时
分析收集到的信息确定某些用户情况可能比其他更常见。
3.测试状态之间最不常用的分支。
这些分支是最容易被产品设计者和程序
员忽视的。
4.测试所有错误状态及其返回值。
错误没有得到正确处理、错误提示信息
不正确、修复错误时未正确恢复软件等情况是常有的。
5.利用工具自动执行状态转换测试。
步骤5:其他考虑
运用其他测试方法,如错误推测法等增加异常测试等非正常性测试用例。
三、实际应用
状态迁移图法的核心在于通过状态转换树将不同状态之间的转换串起来进行测试,而这里所说的转换也可以看成是修改、改变,因此凡是被涉及到改变的地方都可以考虑使用状态迁移图法。
状态迁移图法主要适用于以下几种类似情况:
1.播放器、手机等存在工作状态不断改变的系统;
2.编辑功能,如修改字体颜色、大小、格式等等。
四、总结
到目前为止,我们测试的是数据,包括数字、文字、软件输入和输出。
软件测试的另一方面是通过不同的状态验证程序的逻辑流程。
软件状态是指软件当前所处的情况或者模式,例如启动Windows画图程序,程序处于铅笔绘画状态,我们可以通过选中喷枪工具改变软件的状态,使它处于喷涂状态,也可以通过选
择其他工具、菜单项、颜色等使软件的代码进入某一个流程分支,触发一些数据位。
设置某些变量,读取某些数据,转入一个新的状态。
软件测试人员必须测试程序的这些状态及其转换。
如同穷举数据测试是不可能的一样。
除了极其简单的程序之外,基本上不可能覆盖所有程序分支,达到所有状态。
目前软件越来越复杂,特别是为了迎合日益丰富的用户界面,提供了太多选择和选项,致使程序分支爆炸式增长:与著名的流动推销员问题类似:给定城市数目,以及任何两个城市之间的距离,设法找出访问到每一个城市并返回起点的最短路线。
如果只有5个城市,则可以快速计算出共有120条不同的路线。
走遍所有路线,从中找到最短的路线并不是太难,花费不了太长时间。
如果城市数目增加到成百上千(或者在测试用例中增加成百上千种状态),就形成一个难以解决的问题。
要减少测试的风险,尽量全面测试程序的状态及其转换流程,可以首先根据产品说明书建立一个状态转换图,用来描述系统设计和指导我们进行测试,然后运用等价分配技术选择要测试的状态和分支,这将是十分有效的方法。
所以,状态迁移图法实际上是测试了各种状态的转换,这些状态转换的测试在实际工作中是容易遗漏的。
只要能将这些状态的转换测试覆盖到,是否采用了状态迁移图法其实并不重要,因为状态迁移图法仅仅是给出了一种将多个状态的转换串起来进行测试的思路而已。
综上所述,状态转换图应包括以下条目:
1.软件可能进入的每一种独立状态。
如果不能断定是否为独立状态,先把
它设置为是。
如果以后发现不是,可以随时将其剔除。
2.从一种状态转入另一种状态所需的输入和条件。
比如,可能是按键、菜
单选择、传感器信号或者振铃等、进入或退出某种状态时的设置条件及输出结果,包括显示的菜单和按钮、设置的标志位、产生的打印输出、执行的运算等。
这些是状态转换时发生的部分或全部现象。