基于对象状态的软件测试方法分析
- 来源:互联网周刊 smarty:if $article.tag?>
- 关键字:软件测试,状态图,测试用例 smarty:/if?>
- 发布时间:2022-11-16 15:26
摘要:软件测试是软件开发的重要步骤,需要注重测试环境的构建,基于对象状态进行分析,确保软件测试的准确性。基于此,本文将从识别状态、测试准则、状态响应等方面对基于对象状态的软件测试方法进行分析,深入研究测试过程,注重测试对象状态的把控,同时构建完善的测试用例,将测试状态与测试结果进行对比,提高对象状态测试结果的可靠性。
引言
类和对象是实现软件功能的关键,有助于功能模块的构建,确保软件性能的稳定性。软件测试过程中,对象状态具有唯一性,采用固定的测试结果进行检验,判断对象的功能是否实现,提高对象状态测试的有效性。同时,需要注重对象状态的变化,对类方法展开测试,确定方法间是否存在相互影响,使基于对象状态测试过程能够发挥作用。
1. 基于对象状态的软件测试方法概述
1.1 对象状态
对象状态由软件功能决定,在满足一定条件下,对象状态将会发生变化,进而执行相应的功能。通常情况下,对象转台处于等待某一事件中,由消息来响应某一功能,使对象的原有状态发生改变。状态对象测试过程中,测试人员需要对状态变化进行记录,并且与预期进行对比,判断软件功能的实现情况,对软件的性能进行判断。对象状态测试应重视执行符号的运用,确定对象空间的状态变化,将对象与功能类结合起来,有助于对象状态行为的控制。对象与类具有密不可分的关系,对象往往需要依靠人类才能存在,通过类方法来控制对象,尤其是私有状态的对象,采用类调用进行间接改变,使对象的状态变化得到保护。对象状态测试需要设置监视对象,采用相关数据分析的方式,通过数据流确定状态的变化,使状态测试能够反映类的功能。对象状态测试需要正确地进行交互,确定类方法的通信状态,确定对象状态触发的有效性,进而判断软件功能的实现情况[1]。
1.2 状态属性
对于类中的对象而言,一般具有自身的属性,需要对属性状态进行判断,明确属性变化情况,保证类方法与属性能够发挥作用。状态属性将会影响到对象变化,使对象状态发生改变,属性值代表着状态变化区间。根据属性取值的不同,类方法的执行效果也会不同,引起对象状态发生改变。通常情况下,对象状态属性主要分为两种:(1)数据储存属性。通过类方法将数据赋值给对象,使对象带有相应的数据属性,不会对程序的控制结构造成影响,仅表现为数据方面的变化。(2)信息控制属性。信息属性的不同,将会影响到程序的调用情况,使程序的状态行为发生改变,进而引起对象属性的变化。状态属性是软件测试的重要依据,根据状态属性可以制作测试用例,基于程序分析对象状态变化,确保对象状态分析的全面性。状态属性是软件测试的跟踪对象,针对对象变化情况进行检测,确保对象能够按照某个方法变化,进而分析对象的状态行为[2]。
1.3 测试技术
软件测试是功能实现的关键,需要注重测试技术的应用,保障测试结果的准确性。基于对象状态测试技术如下:一种为基于程序测试,通过程序来判断对象状态,确保对象状态变化与程序相符,提高对象状态的测试精度。测试过程中可以对被测对象进行假设,对对象的测试状态进行安排,提高对测试对象的分析效率。另一种为基于规约测试,注重对需求及功能的把控,判断软件的实际运行状况。通过规约测试可以掌握测试内容的重点,确定对象状态的优先级,针对重要功能优先进行测试,保障测试状态得到有效推进。以消息序列处罚对象状态测试为例,既可以基于程序类进行分析,又可以结合功能情况,采用逆工程分析方式,得到对象的状态转移图,提高测试用例的可靠性。通过测试技术可以确定对象状态行为,使测试对象能够作用于程序,明确对象状态测试的基本方法,提高对象状态的测试质量[3]。
2. 基于对象状态的软件测试方法分析
2.1 求取状态集
对象状态测试过程中,需要确定对象的状态集,采用对象属性变化进行分析,判断对象的属性选择。状态集结合符号执行进行判断,确定对象属性的执行路径,使对象状态的判定更加精准,使对象状态测试能够发挥作用。假设符号执行状态集为P,分支条件为T,终值表达式为R。状态集与分支条件具有对应性,通过分支条件对对象属性进行选取,确保对象Ti和Pi相对应,采用终值表达式Ri进行求取,得到对象所具备的状态。对象状态空间包含多个子状态,如{P1,P2,…,Pn},需要明确状态的变化,对状态进行检验。以布尔型对象为例,对象具有真、假两种状态变化,状态集表示为{True,Flase},终值表达式R为0或1。对象状态集采用分支条件语句得出,可以存在多个分支条件,表示为{T1,T2,…,Tn},与对象空间子状态相对应。状态集中子状态对应着属性名,通过终值表达式可得到属性值,若分支条件判断为True,则得到形式为<属性名,属性值>的结果表达式[4]。
2.2 识别状态
若对象属性被条件语句引用,则对象状态将会发生改变,对程序执行过程产生影响,根据分支条件对属性值域进行划分,对属性状态进行识别。为了提高状态识别的效率,需要确定状态执行的结果,将分支条件进行汇总,确定对象的状态属性,如布尔型状态属仅有true和false。其次,需要明确状态属性的分支条件,确保测试过程得到预期对象状态,判断程序执行有无问题。以整型属性为例,假设状态属性为M,条件语句为X>8且X≤15,对象的值域区间表示为(8,15]。若对象符合这一条件,条件语句的结果将为true,在程序无误的情况下,将得到预期对象状态。对于存在状态交集的情况,需要将对象状态交集部分拆分出来,并且针对交集和非交集部分展开测试,避免状态识别过程造成遗漏。如对象状态A、B的交集为C,则测试对象可以看成三部分,分别为{A-C}、{B-C}、C。而且,需要重视状态的边界条件,提高状态属性判断的精度[5]。
2.3 状态转换
对象状态测试过程中,需要对状态转换引起重视,明确状态转换的条件,保证对象状态能够测试出来。对象状态会在生命周期内发生变化,测试时是对象满足激发条件,使对象状态主动改变,进而达到软件测试目的。状态转变以状态迁移的形式发生,如图1所示,语法形式表示如下:
event_signsture[guard_conditions]/action_expression^send_clause
其中,event_signsture为事件特征,用于构建对象状态的分支条件,确定对象的触发迁移形式;guard_conditions为布尔表达式,表示事件特征的返回值(true/flase);action_expression为触发迁移过程的表达式,为对象属性进行赋值,使对象的状态发生转变;send_clause为触发迁移期间的消息传递,用于对属性状态进行判断,对消息传递过程进行检验[6]。
2.4 构造状态图
对象状态分析过程中,需要构造对象的状态图,使对象状态变化的展示更加明显,结合图形化的方式进行分析,确定对象状态的变化流程。在状态图中,需要包含条件判断、表达式等,确保对象具有完整的状态改变,使状态图能够形成完整循环。条件判断是状态图构建的核心,如图2所示,以布尔型作为判断条件,通过判断条件可得到true和false,通过表达式来改变对象的状态,为对象状态测试提供图形依据,使软件测试能够流程化。在不同状态下,将会调用不同的程序类,采用不同的对象属性进行赋值,将对象的状态进行改变。图2为对象状态判断的通用形式,实际测试过程中,需要将具体对象代入其中,对判断条件、执行语句等进行替换,同时结合多个判断条件分支,构建出一个完整的对象状态图。以超出200元商品打九折为例,假设商品价格为S(元),原价为P(元),则判断条件为P>200,若结果为false,则商品不打折,P不发生任何变化,执行语句为S=P;若结果为true,则商品打九折,商品价格乘以0.9,执行语句为S=0.9×P。在本例中,对象状态判定条件为布尔型,通过是否打折来改变对象的属性,使商品对象的价格发生改变,标志着对象状态发生了变化[7]。
2.5 测试准则
基于对象状态的软件测试应明确测试准则,构建出完善的测试语句序列,根据功能逐条进行测试,确保程序功能能够实现。对象状态测试前,需要参考优秀的测试用例,对程序中存在的缺陷进行判断,降低程序发生错误的风险。测试过程中,语句序列应满足测试条件,确保测试语句能够真实执行,必要时检验程序的运行日志,对程序运行状况加以审查,提高程序运行控制的可靠性。测试流程对测试结果应全面覆盖,确保对象状态测试的充分性,避免软件测试过程造成阻碍。软件测试应以满足客户需求为核心,着重于条件判断和执行语句的实现,确保程序中存在对象状态变化,实现软件运行的实际效果。测试对象位于软件程序类中,相似的测试对象归属于同一类,为了方便对象状态的测试,需要逐个对象展开分析,确定对象测试中存在的矛盾点,将程序的缺陷体现出来,使测试准则得到有效运用,进而对软件程序进行优化和改进[8]。
2.6 测试用例
测试用例是实现软件测试的关键,将对象状态变化罗列出来,根据测试效果检验程序的功能性,便于对程序缺陷进行检查。测试用例编制过程中,首先,需要保证测试内容的正确性,确保判断条件与执行语句相匹配,构建精准的对象状态测试条件,掌握对象状态的测试点;其次,注重对象状态的全面性,随着判断条件的变化,执行语句也会随之而改变,需要在测试用例中列举出所有对象状态,对不同状态之间的切换进行测试,确保对象状态切换得以实现;然后,确保测试对象状态的连贯性,测试对象不能同时覆盖多个测试点,应逐个功能展开测试,使测试用例具有清晰的条理;最后,需要保证测试用例的可操作性,遵守软件程序对象状态变化的流程,并且标注出测试操作步骤,逐步得出所有对象状态的测试结果[9]。
2.7 状态响应
软件测试过程中,需要明确对象状态的响应关系,将每一步的运行结果与对象状态进行对比,判断对象状态变化是否能够协调进行。状态响应需要遵循一定的测试路径,通过状态图分析测试流程,注重类方法对测试对象的改变,有助于对象状态变化流程的分析。然后,通过测试用例展开测试,结合对象状态的响应关系,结合条件语句的判断,使对象状态错误能够展现出来,实现基于对象状态的测试过程。以自动售卖机为例,将对象及方法写入CoinBox类中,主要对象为售卖机硬币总量totalQrts,消费者投币金额curQtrs,假设商品价格为price,产生交易的条件语句为totalQrts>=curQtrs-price,满足条件后售卖机将售出商品且进行找零;否则,将退还所有金额。通过这种方式,可对消费者购买状态进行响应,按照条件语句测试状态响应的效果,测试对象的变化情况[10]。
结语
综上所述,基于对象状态的软件测试是一种重要的测试方法,对实例运行周期内对象状态进行分析,对状态变化情况进行测试,判断对象是否按照程序指令执行。同时,需要注重状态转换图的影响,为软件测试的对象进行建模,便于对软件测试状态进行验证,制定出规范的测试步骤,通过对测试数据的分析,确定软件的运行状态。
参考文献:
[1]邓梅淇.计算机软件测试方法及发展趋势[J].信息与电脑(理论版),2021,33(8): 114-116.
[2]冯长卿,张欣露,李红伟,等.智能家电黑盒软件测试方法研究[J].家电科技,2020,(5):21.
[3]沈莹.计算机软件基于多平台的测试方法分析[J].电子测试,2020,(24):129-130,83.
[4]杨晨.软件自动化测试方法的分析及应用[J].现代工业经济和信息化,2022, 12(1):167-168,171.
[5]黄卫.软件质量保证与软件测试方法[J].电子技术与软件工程,2021,(3):67-68.
[6]黄天开.计算机软件测试方法及应用研究[J].中国新通信,2020,22(16):56-57.
[7]张宝斌.面向安全性分析的嵌入式软件测试方法研究[J].电子测试,2020, (11):117-118.
[8]顾雨田.计算机软件测试方法及应用分析[J].计算机产品与流通,2020,(8):25.
[9]刘佳,王丽,杨俊叶.计算机软件测试方法及应用分析[J].科技风,2020,(9):119.
[10]文博,叶燕芬.大数据环境下的软件测试研究[J].信息技术与信息化,2022, (1):100-102.
作者简介:刘渊,本科,讲师,研究方向:计算机、信息技术教育、现代教育技术。