MBT框架的实现需要用到2种技术:参数组合技术与代码生成技术。
参数组合技术:抽象出测试场景的参数,并对参数做等价类及边界值分析后,利用迪卡尔乘积对多类参数进行组合,并过滤掉不需要组合,这里多半是用例建模时需要考虑。框架需要提供的是组合算法与过滤算法,用户在使用这些算法的比较易懂、实用。
代码生成技术:框架应能执行模型代码,执行模型后能生成可执行的测试代码,这有点类似病毒,代码执行后,能产生出与自己等价的代码。举例如下:
原始模型代码:
from MTest import TestCaseBase, Model, Scenario, Action, Assert, Logger @Action(DespFormat="Called with {0}, {1}") @Model() @Scenario(Param={ def TestJustReturnSelf(self): |
在执行后,生成3个测试用例
@Model(TestModule="") @Scenario(Param={'p1': 1, 'p2': 'a'}) Logger.Step("Call JustReturnSelf and Validate") @Scenario(Param={'p1': 1, 'p2': 'b'}) Logger.Step("Call JustReturnSelf and Validate") @Scenario(Param={'p1': 2, 'p2': 'a'}) Logger.Step("Call JustReturnSelf and Validate") |