(6)代码国际化模型
该模型主要是在语言进行国际化的过程中,可能造成本地设置和程序需求不符的情况,造成匹配错误。
(7)易诱骗代码模型
该模型主要指代码中容易引起歧义的、迷惑人的编写方式。比如无意义的比较,永远是真值的判断,条件分支使用相同的代码,声明了却未使用的域等,即那些混淆视听,无法正常判断程序的真正意图的代码。
四、模型驱动的软件测试过程
模型驱动的软件测试方法通过对测试过程的抽象化,分离测试模型和测试执行,从而能够通过正向或逆向手段建立针对WA某方面特征的测试模型,并重用有针对性的测试执行手段。传统黑盒、白盒测试方法与模型驱动的软件测试方法并不矛盾,它们可以被包含到模型驱动的软件测试过程中。
如图1所示,测试模型是模型驱动的软件测试的核心概念,它在测试的不同阶段表现为不同视图。
(1)通过被测系统(SUT)视图得到测试模型;
(2)基于测试模型,自动化或半自动化地得到测试用例集,通过测试用例视图描述;
(3)在测试执行阶段,测试部署和调度视图通过相应模型描述测试的执行环境以及执行过程;
(4)根据部署调度模型自动执行测试用例,生成的结果通过测试结果视图显示,并将某些结果直接反馈给被测系统模型、测试用例模型以及部署调度模型,在各自视图上直观的显示出来,便于分析结果进行回归测试。
五、模型驱动的软件测试工具
模型驱动的软件测试必须有相关工具支持。当前,有代表性的模型驱动的软件测试工具中有:
(1)支持状态机模型的工具。包括:Software Engineering Technology的测试工具toolSET_Certify,运行于RISC6000和SUN平台;IBM的GOTCHA,可以根据用户事先确定的测试充分性准则进行基于软件状态模型的测试例生成;IBM 的TCBean是一个提供测试脚本管理功能的基于状态机的测试引擎。
(2)支持马尔可夫链模型的工具。包括:Cleanroom Software Engineering的CleanTest,支持统计测试,是商用的使用模型及统计测试例生成工具;IBM 的CleanroomCertification Assistant,可以自动化统计验证过程,通过使用概率分布产生测试例,并对测试结果进行分析。
(3)对UML模型提供测试支持的工具。包括:SilverMark公司针对IBM 公司的VisualAge开发的支持测试用例生成和回归测试的TestMetor和UML Designer Connection。