public enum State {welcome, register, displayTickets, terminal};

  public boolean loginEricOkGuard() {return loginGrd(); }

  @Action public void loginEricOk() { login(“ERIC”, “ETO”); }

  public boolean loginGrd() {return state == State.welcome;}

  public void login(String userName, String userPassword)

  {

  if (userName.equals(“”)) {

  message = “EMPTY_USERNAME”; /*@REQ: CIN_031 @*/

  }

  else if (userPassword.equals(“”)) {

  message = “EMPTY_PASSWORD”; /*@REQ: CIN_032 @*/

  }

  else if ( ! allUsers.containsKey(userName)) {

  message = “UNKNOWN_USER_NAME_PASSWORD”; /*@REQ: CIN_033 @*/

  }

  else {

  User user_found = allUsers.get(userName);

  if (user_found.password.equals(userPassword)) {

  currentUser = user_found;

  message = “WELCOME”; /*@REQ: CIN_030 @*/

  }

  else {

  message = “WRONG_PASSWORD”; /*@REQ: CIN_034 @*/

  }

  }

  }

  public Object getState()

  {

  }

  public void reset(boolean testing)

  {

  }

  已JunitModel为例以annotation @Action 为属性间步骤的实现。reset为case进行reset的重写方法。运行结果中多种覆盖率的统计。

  越来越多的公司注重自动化的效率和覆盖率,也有越来越多的商业化工具基于MBT及穷举的理论开始被接受,使自动化更加智能化是下一个测试时代的理论。