测试代码开发

规约

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
1)当該メニューを起動した直後(サーバーから情報を取得した状態を想定)
想定結果:更新ボタンが無効、エラーメッセージが出ていない
2)入力値エラーのとき(※)
・入力必須の個所を空にしたとき
想定結果:更新ボタンが無効、入力必須に関連するエラーメッセージが出ている
・入力値が範囲外のとき
想定結果:更新ボタンが無効、入力値に関連するエラーメッセージが出ている
3)1つ以上の項目に関して、起動直後とは違う正常値に変更したとき
想定結果:更新ボタンが有効、エラーメッセージが出ていない
(※)境界値の評価は、機能テストで実施済みであることを前提として、e2eにおいては、エラーメッセージの種類分だけ実施してください。
1
2
3
4
5
6
7
8
1.首先截取程序启动时的状态,这个时候判断更新按钮应该是不可用的,并且没有错误消息
2.输入值错误的情况:
  *输入值为空
  *输入值在范围外
需要判断更新按钮不可用,并且显示错误消息
3.输入值正常,需要判断更新按钮可用,并且没有错误消息

边界值的判断在机能测试中实施,不需要在这里处理

代码开发

程序开发时要注意,可以输入值的控件尽量添加一个唯一的标识符(如添加id,name等信息)方便在测试中取得该控件

apps/client-e2e/src/po/

  1. 新建程序对应的文件夹
  2. 参照其他程序新建form.po.ts文件
  3. form.po.ts中应写出测试中需要取得的控件的变量,如果需要修改控件值的话,也要写出对应的方法

apps/client-e2e/src/spec/

  1. 新建程序对应的文件夹
  2. 参照其他程序新建e2e-spec.ts文件
  3. e2e-spec.ts中,参照规约写出对应情况下的输入值,并且截图

用expect方法来验证画面值和期望值
screenshot方法来进行截图

apps/client-e2e/src/spec.capture/

  1. 新建程序对应的文件夹
  2. 参照其他程序新建e2e-spec.ts文件

这个文件不需要做过多处理,将部分值改为程序对应的即可

注意事项

截图的测试代码开发时,可能需要对不同浏览器进行处理
例如chrome中,beforeEach方法可能需要:

1
2
3
if (process.env.BROWSER === 'chrome'){
    browser.ignoreSynchronization = true;
}

其他浏览器中可能需要:

1
browser.waitForAngularEnabled(false);

部分测试项需要等待加载,一般推荐在测试项开始前执行:

1
await browser.driver.sleep(2000);

让页面加载完成

测试代码debug

直接进行e2e测试会执行所有测试项,包括其他程序的
如果想只执行自己的测试项目,可以修改apps/client-e2e下的protractor.conf.js文件
例如,想在ie测试中,只执行自己的测试项目,就修改protractor.ie.conf.js
然后将js中,specs下只执行自己的e2e-spec.ts文件:

1
2
3
4
5
6
7
8
...
  specs: [
    // './src/spec/**/*.e2e-spec.ts'//,  注释这一行
    //'./src/spec.async/**/*.e2e-spec.ts'
    // './src/spec/employee/list.e2e-spec.ts'
    './src/spec/passwordrule/detail.e2e-spec.ts' //添加这一行,只运行passwordrule项目
  ],
...

其他浏览器同理