MBT框架(MTest)的实现用到的技术探讨

发表于:2013-7-29 11:02

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:MianSheng    来源:51Testing软件测试网采编

  MBT框架的实现需要用到2种技术:参数组合技术与代码生成技术。

  参数组合技术:抽象出测试场景的参数,并对参数做等价类及边界值分析后,利用迪卡尔乘积对多类参数进行组合,并过滤掉不需要组合,这里多半是用例建模时需要考虑。框架需要提供的是组合算法与过滤算法,用户在使用这些算法的比较易懂、实用。

  代码生成技术:框架应能执行模型代码,执行模型后能生成可执行的测试代码,这有点类似病毒,代码执行后,能产生出与自己等价的代码。举例如下:

  原始模型代码:

from MTest import TestCaseBase, Model, Scenario, Action, Assert, Logger

@Action(DespFormat="Called with {0}, {1}")
def JustReturnArg1(arg1, arg2):
if arg1 == 1:
return arg2
return arg1

@Model()
class SimpleModel(TestCaseBase):

@Scenario(Param={
'p1':[1, 2],
'p2':['a', 'b']
}, Where={'combine':['p1','p2'],'strategy':'add'})

def TestJustReturnSelf(self):
Logger.Step('Call JustReturnSelf and Validate')
p1 = self.Param['p1']
p2 = self.Param['p2']
rsp = JustReturnArg1(p1, p2)
Assert.AreEqual(p1, rsp, 'p1 check')
if __name__ == '__main__':
import sys
from MTestLauncher import MTestLoader
MTestLoader.Run(None, False, "MTestRunConfig.xml", [sys.argv[0]],
"mtest")

  在执行后,生成3个测试用例

@Model(TestModule="")
def SimpleModel(TestCaseBase):

@Scenario(Param={'p1': 1, 'p2': 'a'})
def TestJustReturnSelf_p1(self):

Logger.Step("Call JustReturnSelf and Validate")
rsp1 = JustReturnArg1(self.Param["p1"],
self.Param["p2"])
Assert.AreEqual(self.Param["p1"], rsp1, "p1 check")

@Scenario(Param={'p1': 1, 'p2': 'b'})
def TestJustReturnSelf1_p2(self):

Logger.Step("Call JustReturnSelf and Validate")
rsp1 = JustReturnArg1(self.Param["p1"],
self.Param["p2"])
Assert.AreEqual(self.Param["p1"], rsp1, "p1 check")

@Scenario(Param={'p1': 2, 'p2': 'a'})
def TestJustReturnSelf2_p1(self):

Logger.Step("Call JustReturnSelf and Validate")
rsp1 = JustReturnArg1(self.Param["p1"],
self.Param["p2"])
Assert.AreEqual(self.Param["p1"], rsp1, "p1 check")

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号