だらだらやるアドベントカレンダー9日目

2021 だらだらやるアドベントカレンダー9日目 

ということで2021/12/09を担当させていただきます「SesamiSesa」です。

該当のアドベントカレンダーは以下を参照してください。

 

adventar.org

12/03も担当しているのでもしよろしければ。

https://sesamisesa.hatenablog.com/entry/2021/12/03

 

書く内容

今回は自動テストについて紹介できればと思います。

現在主に使っているのはcodeceptjsです。

 

codeceptjsとは

Node.js で動作するテストするためのフレームワーク

細かく言うと、様々な操作ツールを統合して操作できるやつ。えらい。

具体的には

  • Playwright
  • WebDriver
  • Puppeteer
  • TestCafe
  • Protractor
  • Appium

ここら辺が同じ書き方でテストできますよ~ってこと。

構造はこちら

エンジニアの方が普段使っていたテストの書き方からそこまで乖離しないと思われる。

ちなみに私は手動テストあがりなので事前知識は皆無だった。無問題。

 

 

何ができるの

自動テストって言われてもつまるところ何ができるのか。

結論、ブラウザ操作にまつわるものはたいてい可能となっている。

手動でやることとなんら遜色なく実行できる。

  • ページを開く
  • 要素・テキストが存在するか確認する
  • 要素を取得する(コード上で比較・操作するため)
  • クリックする
  • テキストボックスに入力する
  • セレクトボックスから選択する
  • 指定期間待機する

ここまであれば並大抵のことはできそう。

 

何がいいのか

自動でできることは分かったけど、じゃあ手動と比べてなにがいいのか??

  • 操作時にスクリーンショットを取ってくれる。
  • 操作ログに日本語をつかってどんな操作を行ったか見返すことができる。
  • クリックや要素取得時のパラメータ指定が容易

が手動と比べていいなと思った点。異論は認める。

手動→自動テスト以降ももちろんコストがかかるので上記メリットじゃそこまでそそられないかもしれない。

 

・・・・でもテストの結果を自動でスクリーンショットしてくれるってめっちゃうれしいとおもいませんか。各ページスクリーンショットを取ってエクセルに張り付けてテスト報告書としていたあの作業が簡単になるんです!

しかも画像にどの操作を行ったか記載してくれるという!

 

ここではそんなcodeceptjsの導入部分だけでも紹介できればと。

 

codeceptjsのインストール

1.Node.jsのインストール

qiita.com

npx --versionが実行できればよし

f:id:SesamiSesa:20211202152138p:plain

npx --version
2.codeceptjsのインストール

作業フォルダを任意で作成し下記のコマンドを実行。

npx create-codeceptjs .

yを入力し、進める

f:id:SesamiSesa:20211202153624p:plain

install

インストール完了後、下記のコマンドを実行。

npx codeceptjs init 

f:id:SesamiSesa:20211202154225p:plain

init

そのままEnterを押下。

f:id:SesamiSesa:20211202154515p:plain

init2

Playwrightを選択し、Enterを押下。

f:id:SesamiSesa:20211202155156p:plain

init3

そのままEnterを押下。

f:id:SesamiSesa:20211202155316p:plain

init4

ja-JPを選択しEnterを押下。

f:id:SesamiSesa:20211202155453p:plain

init5

そのままEnterを押下。

f:id:SesamiSesa:20211202155619p:plain

init6

テスト実行中にブラウザで操作を見たい方はyを入力しEnterを押下。

f:id:SesamiSesa:20211202155756p:plain

init7

ブラウザーエンジンの選択。今回はchromiumを使用するのでそのままEnterを押下。

f:id:SesamiSesa:20211202160029p:plain

init8

どんなテスト名にするか。任意の文字を入れてEnterを押下。

ファイル名を聞かれるので、そのままで問題なければEnterを押下。

f:id:SesamiSesa:20211202160256p:plain

init9

初期化完了。

 

3.下準備

メリットで述べたスクリーンショットを取ってもらうために、設定ファイルを編集する。

作成したフォルダ内の「codecept.conf.js」を開き、下記内容を追加し保存する。

 "stepByStepReport": {
      "enabled": true,
     "deleteSuccessful": false,

   }

f:id:SesamiSesa:20211202162221p:plain

edit1

次に、テスト内容を変更する。先ほど作成した「XXXX_test.js」を開き、下記内容を入力して保存。

I.amOnPage('https://google.com');
  I.fillField('検索','codeceptjs');
  I.click('Google 検索');

I.wait(2);

f:id:SesamiSesa:20211202162431p:plain

edit3

下準備完了!

4.実行

下記コマンドを実行!

npm run codeceptjs

f:id:SesamiSesa:20211202163432p:plain

f:id:SesamiSesa:20211202163250p:plain

f:id:SesamiSesa:20211202163258p:plain

f:id:SesamiSesa:20211202163315p:plain

exec


ブラウザが立ち上がり、テスト終了後にoutputフォルダに実行結果が保存される。

あとは思うがままにテストを書いたり、プラグインで便利な機能を追加したりしてみよう。