見出し画像

転職のテンサゲから始まった自動化入門③~自動化テストで見えてきた「人間が無意識にやっている確認」~

※ これまでの自動化入門シリーズはこちら 🙆‍♀️

転職のテンサゲから始まった自動化入門 ~自動化できないQAの民から脱却~
https://note.com/miyu1928/n/n735526e3df96?sub_rt=share_sb

転職のテンサゲから始まった自動化入門② ~結局、全部“期待値”の話だった~
https://note.com/miyu1928/n/ne619b4b45401?sub_rt=share_sb


転職活動のテンション低下から始まった、自動化研修もついに3回目。
今日で座学は一通り終了らしい。

……いや、普通に頭が爆発している。

前回までは、

「自動化=継続的に品質を確認する仕組み」

という理解になっていた。

でも今回はさらに、

  • wait

  • DOM

  • Isolation

など、新しい概念が一気に出てきた。

正直、最初は呪文だった。


waitが分からない

最初、waitについては、

「期待値通りになるまで待つもの」

くらいの理解はしていた。

でも実際は違った。

自動化では、

「何を待てば、人間は“処理が終わった”と判断しているのか」

を明示する必要があるらしい。

例えばログイン。

人間なら、

「ログインできたね」

で終わる。

でも自動化では、

入力
↓
ログインボタン押下
↓
画面切り替わり待ち
↓
本当に次画面か確認

まで分解しないといけない。

しかも、その「待つ対象」も重要だった。

  • DOMが生成された?

  • 検索結果が表示された?

  • ボタンが押せる状態?

  • エラーメッセージが出た?

何をもって「処理完了」とするのかを定義しないと、自動化は動けない。


人間は無意識に確認している

Selenium IDEを触っていて、かなり面白かった。

人間って普段、

  • 画面変わったな

  • ロード終わったな

  • エラーっぽいな

  • 結果表示されたな

を、無意識に判断している。

でも自動化は違う。

全部、

「どの状態になれば次へ進めるのか」

を明示しないといけない。

ここを分解しないと、自動化は成立しないらしい。


DOMという概念

これも最初は完全に呪文だった。

でも理解したこととしては、

ブラウザは画面を「DOM」という部品の集まりとして管理しているらしい。

つまり自動化は、

「画面を見ている」

というより、

「DOM上の部品を探している」

感覚に近い。

検索結果も、

検索
↓
API/DB処理
↓
DOM生成
↓
画面表示

という流れになっているらしい。

waitで待っていたのも、結局はこのDOM生成だった。


Isolationでさらに頭が爆発した

今回かなり印象に残ったのがIsolation。

これはコマンド名ではなく、

「テストの独立性を保つ考え方」

らしい。

例えば、

  • ログイン状態

  • Cookie

  • 検索条件

  • DB状態

などを次のテストへ引きずらない。

つまり、

「毎回同じ条件で期待値確認できる状態」

を作るということ。

でもここで、ふと気づいた。

これ、完全に初めての概念ではなかった。

手動総合テストでも、

  • DB戻し

  • テストデータ準備

  • 権限切替

  • 前提条件確認

みたいなことを普通にやっていた。


自動化は「全く新しいこと」ではなかった

今回一番面白かった気づき。

自動化って、

「コードを書くこと」

だと思っていた。

でも実際は、

「今まで人間が無意識にやっていた確認を、機械でも継続実行できる形へ分解している」

感じだった。

だから wait や Isolation も、

突然現れた難しい概念ではなく、

  • 処理が終わったことを確認する

  • 毎回同じ条件で確認する

みたいな、今まで自然にやっていたことに名前が付いていたらしい。


なお、理解度チェックは普通にぴえん

  • checked と selected が混ざる

  • present と not present を見落とす

  • store attribute が呪文

など、まだまだ分からないことは多い。

でも逆に、

「何を保証したいのか」

は少しずつ見えてきた気がする。


自動化は「コードを書くこと」だと思っていた。

でも実際は、人間が無意識にやっている確認を、機械でも判定できるように分解していく世界だった。

今日で座学は一通り完了した。
あとは習うより慣れろ。

いいなと思ったら応援しよう!