另外要注意的是,在NModel里面,集合Set、Map是不可變的,即創建好了以后,就不能從里面刪除和添加新元素了。每一次修改都會創建一個新的Set、Map實例。所以你會看到類似下面的用法:
ActiveLoginRequests = ActiveLoginRequests.Add(user, LoginStatus.Success);
最后,你需要采用一個工廠模式的方式,告訴NModel分析哪一個Feature,創建測試用例
public class WebSiteModel { public static ModeState State = ModeState.Initializing;
public static ModelProgram CreateLoginModel() { return new LibraryModelProgram(typeof(WebSiteModel).Assembly, "TrainMode", new Set<string>("Login")); }
[Action] public static void Initialize() { State = ModeState.Running; }
public static bool InitializeEnabled() { return State == ModeState.Initializing; }
public static Set<User> UsersLoggedIn = Set<User>.EmptySet; } |
編譯通過以后,先用NModel提供的圖形化模型驗證工具查看一下生成的模型是否正確。NModel自帶的mpv.exe是用來驗證模型的,但是 mpv.exe使用到一個圖形布局程序GLEE需要單獨下載,下載后,將Microsoft.GLEE.*.dll拷貝到NModel的bin文件夾里,就可以執行mpv.exe了。
使用下面的命令查看生成的模型:
"d:\Program Files\NModel\bin\mpv.exe" /r:TrainMode.dll TrainMode.WebSiteModel.CreateLoginModel
生成的模型應該如下圖所示:
下圖是放大后的結果:
如果查看模型以后,覺得沒有問題,就可以生成測試用例了,這里先生成手工的測試用例,下一篇再介紹如何生成自動化的測試用例。
"d:\Program Files\NModel\bin\otg.exe" /r:TrainMode.dll /f:scenario.txt TrainMode.WebSiteModel.CreateLoginModel
下面是生成的測試用例:
TestSuite( Initialize(), Login_Start(User("Authenticated"), Password("Correct")), Login_Start(User("Administrator"), Password("Incorrect")), Logout(User("Authenticated")) ), TestCase( Initialize(), Login_Start(User("Administrator"), Password("Correct")), Login_Start(User("Authenticated"), Password("Correct")), Logout(User("Administrator")), Logout(User("Authenticated")) ), TestCase( Initialize(), Login_Start(User("Administrator"), Password("Incorrect")), Login_Start(User("Authenticated"), Password("Incorrect")) ), TestCase( Initialize(), Login_Start(User("Authenticated"), Password("Incorrect")), Login_Start(User("Administrator"), Password("Correct")), Logout(User("Administrator")) ), TestCase( Initialize(), Login_Start(User("Administrator"), Password("Incorrect")), Login_Start(User("Authenticated"), Password("Correct")) ), TestCase( Initialize(), Login_Start(User("Administrator"), Password("Correct")), Login_Start(User("Authenticated"), Password("Incorrect")) ), TestCase( Initialize(), Login_Start(User("Administrator"), Password("Correct")), Logout(User("Administrator")), Login_Start(User("Authenticated"), Password("Correct")) ), TestCase( Initialize(), Login_Start(User("Authenticated"), Password("Correct")), Logout(User("Authenticated")), Login_Start(User("Administrator"), Password("Correct")) ), TestCase( Initialize(), Login_Start(User("Administrator"), Password("Correct")), Logout(User("Administrator")), Login_Start(User("Authenticated"), Password("Incorrect")) ), TestCase( Initialize(), Login_Start(User("Authenticated"), Password("Correct")), Login_Start(User("Administrator"), Password("Correct")), Logout(User("Authenticated")), Logout(User("Administrator")) ), TestCase( Initialize(), Login_Start(User("Authenticated"), Password("Incorrect")), Login_Start(User("Administrator"), Password("Incorrect")) ), TestCase( Initialize(), Login_Start(User("Authenticated"), Password("Correct")), Logout(User("Authenticated")), Login_Start(User("Administrator"), Password("Incorrect")) ) ) |
文章來源于領測軟件測試網 http://www.kjueaiud.com/