00:07
皆さん、こんにちは。B-Testingのブロッコリー です。このB-Testing.fmは、QA
エンジニアである私、ブロッコリー は、テストや品質に対する私なり
の考えを、約10分間で語っていく ポッドキャスト番組です。ちょっと
今日のオープニングは、今回の 公開日がおそらくですが、木曜日
になるかなとは思っています。基本的に 週1回ですね、毎週月曜日に公開
していくっていうふうには、もともと はポッドキャストの概要欄にも
書いているんですけれども、結構 やっぱりテストのことを普段考えて
いると、これも話したいかもみたいな ネタが結構増えてくるんですよ
ね。そういったもの、前回までやって たような動地分割、境界値分析、ディシジョン
テーブルみたいな、そういう技法 的な話以外の、これ話したいかも
みたいな、ちょっとTips的な話っていう のは、木曜日あたりに公開すること
が多くなるかなと思っています。 今回もちょっと唐突に話したい
なと思う、自動テストに関する話の ネタが出てきたので、これを収録
しています。ということで、今回も btesting.fmスタートです。ということで
今日は、E2Eの自動テストはテスト の目的によって作り方が変わる
という、ちょっと自動テストに絡ん だような話をしていきたいなと思います。
今回伝えたいことなんですけれども、 テストの目的によってE2Eの自動
テストの組み方っていうのは変わって くるよっていうお話です。まず前提
として、今回話すこのE2E End-to-End の略ですね。End-to-Endっていうのは
どういうものかっていうと、今回の 場合ですと、画面を介して実際の
データ DBとかに接続してテストを 行うことを、今回の場合のE2Eテスト
と呼んでいます。実際に説明で使う 具体例とした、ピザの注文システム
のお客さまの画面ですね。お客さま が実際にウェブページとかにアクセス
して、そこでピザを注文するみたいな そういうところをイメージして
もらえればと思います。ちょっと 具体的な画面とかを用意している
わけではないですが、ピザの注文 サイトを思い浮かんでもらえれば
いいかなと思います。それを画面 で実際に操作して、操作した結果
データとかが入ったりとか、そういう ところで実際に裏側のデータベース
に接続してテストを行うみたいな そういうことを考えますと。かつ
もう一つ言うと、あらかじめちょっと してユニットレベルのテストで
03:00
あったりとか、統合レベルだったり とか、そういうテストはあらかじめ
ある程度終わっている前提での 話になるかなと思います。そうなった
ときに、今回伝えたいことで書いている ように、目的によってその自動テスト
どうテストケースを作るかっていう 組み方が変わるかなと思っています。
どういうふうに具体的に組み方が 変わるかっていうのを二つ例を
持ってきます。まず一つ目ですね。 テストの目的が一連の業務をちゃんと
遂行できるっていうところを見 たいですと。このテストをやる
ことで不具合が見つかるみたいな 可能性が低い。それまでのテスト
でもあらかじめテストをちゃんと やって、そういう不具合が出ている
ことを前提としている。不具合が 出る可能性が低いことが想定される
場合っていうのは、本当に一連の 業務を遂行するっていうところ
がテストの目的であれば、例えば 購入したいピザをキーワード検索
して、そこで出てきたピザを商品 詳細画面に遷移してカートに入れて
購入して、購入のときに住所とか 入れてみたいな、それを一連のシナリオ
で作るっていいのかなと思っています。 どうして長めのシナリオで作り
たいかっていうと、これは変に シナリオを細かく分割すると、毎回の
テストシナリオの実行準備、実際に エンドツーエンドのテストを実行
やったことがある方は分かるかな と思うんですけれども、実際にブラウザー
を立ち上げてとか、それ以前にまず そういう環境を立ち上げて、実行
できる環境を立ち上げて、その後 ブラウザーを立ち上げて、ページ
を読み込んで、必要な情報を入力 してみたいなことが毎回実行の
準備とか、もしくはテストが終わった 後の終了の後片付けっていうところ
が必要になってしまって、その結果 全体の実施時間が長くなってしまう
っていう傾向になります。なので シナリオを細かく分割するのではなくて
あくまでも特に今回のテストの 目的が一連の業務をちゃんと最初から
最後までちゃんと遂行できること っていうところを目的として考える
んだったら、これを一つの長めの シナリオで書くのがいいのかな
と思っています。一方でもう一つ 例を持ってきました。テストの目的
として、画面それぞれの部分で 遷移した際に適切に処理できる
っていうのを目的とした場合を考えます。 これは先ほどとちょっと違って
ここの時点のE2Eのテストで、ある 程度の不害の検出が想定されている
場合を前提として考えています。 そうすると先ほどみたいに一つの
シナリオ、長めのシナリオじゃなくて ちょっと細かく分けたほうがいい
かなと思います。例えば、購入したい ピザをキーワード検索して、それで
見つかったピザの商品詳細画面 に遷移するっていうので、一つの
06:04
テストのシナリオを終わりにする と。カートを入れて購入するみたいな
話はキーワード検索してうんぬん ではなくて、最初に詳細画面のURL
指定のものを直接叩いてアクセス して、そこの画面に行ってカート
に入れて購入するみたいな感じ でテストを分けたほうがいいかな
と思っています。どうして分けた ほうがいいかっていうと、不具合
がもし発生したときっていうのは 後工程の不具合を隠してしまう
恐れがあります。今回の場合です と、例えば購入したいピザのキーワード
検索をしたときの、そこの検索 の部分が何か不具合とかがあった
とき、これを一つのシナリオとして 長めのシナリオを取ってしまう
と、キーワード検索してもうまく いきませんでした。テストが落ちて
しまうと、そうするとその後商品 詳細画面に行ってカートを入れて
みたいなところをテストが実行 不可能になってしまうんですね。
一つ前のこちらで示したような 一連の業務を遂行できる長めの
シナリオになっていた場合だと キーワード検索でもしも不具合
が起きていたら、その後のテスト が実行できない。実行できない
ということは、そこで他の不具合 があるか、後続で不具合があるか
を確認ができないんですね。ということで 不具合発生時に後工程の不具合
隠してしまうので、ある程度テスト を分けたほうがいいかなと思います。
これは前提で話したとおり、ある 程度不具合のケースが想定されている
場合なので、こういうふうに分け たほうがいいと思いますし、目的
としても一連の業務ではなくて 画面を遷移したときの適切な処理
というちょっと細かめのところを 目的としているのであれば、ちゃんと
テストのシナリオも細かく分ける べきかなと思っています。
ということで、このEnd-to-End E2Eテスト の自動テストっていうのは、必ずしも
テストシナリオを一つの長いもの にすべきだとか、細かく分ける
べきだではなくて、まず大事なのは そのテストの目的ですね。どういう
目的でE2Eの自動テストを組んでいる かっていうのを、ちゃんと改めて
考えて、それによって作り方が変わって いくんだということを、今回理解
してもらえたら嬉しいです。
ここからは一つ質問に答えていき たいなと思います。この質問は
以前に自分がイベント登壇した ときにいただいた質問になります。
質問の内容としては、スプリント ごとにリリース規模や内容が変化
すると思うのですが、今回は待ち 時間が少なかった、今回は待ち時間
が多かったというのをそこそこ 厳密に評価する方法はありますか
という質問をいただいています。 これは前提として、イベント自体
09:05
がQA待ちみたいなのをなくすために みたいな、確かそういうタイトル
のイベントではあったと思うので、 待ち時間が多い、少ないっていう
のは、QAとして早くテストできない かなって待ってるんだけども、開発
がなかなか終わらないみたいな そういうふうなことを前提として
想定している上でのこの質問です と。あんまり個人的にはそこを厳密
に評価するっていうことをしない っていうのと、あとはQAがやりたい
んだけれども、開発期限で待っている みたいなことがないので、すみません。
これ質問の前提から崩れてしま うんですけれども、テストの準備
が終わっているのに開発が終わってない からテストができないっていう
のはそもそもないぐらい、開発が すごいいっぱい作ってくれてる
っていうところもありますし、そもそも QAとしてテスト作り終わって
待ってるっていうのがあんまりない というか、そういうときは開発の
ほうに顔を出すというか、今どこが 複雑そうなんですかねみたいな
そういう話をしてもっとシンプル にしていくみたいな働きかけ
をすることが多いかなと思います。 それが例えば普通の設計のレビュー
であったりとか、そういうことが あるかなと思うので、あんまり
この質問に明確に答えられるわけ ではないですが、厳密に評価する
方法っていうのは自分は持ち合わせて ないというか、それを評価しよう
っていうモチベーションが湧いて ないっていうのが正直なところ
ですかね。すみません、ちゃんと お質問に答えられなかったかもし
れませんが、質問ありがとうございました。 ではエンディングです。 btesting.fm
ではリスナーさんからのお便り を募集しています。エピソードの
感想や私に聞いてみたい質問や テストのお悩みなど、どんなこと
でもかまいません。投稿フォーム は番組概要欄にあります。また
エピソードの感想はハッシュタグ btesting banscotestingでXのポストを
お願いいたします。今日の話ですと、 E2Eの自動テストのお話をしてきました
けれども、自動テストを一度はこういう ふうにE2Eの自動テストやってる
よとか、こういうタイミングで 自動テストを流してるよとか、そういう
のも感想をいただけると嬉しい ですし、あとは結構まだまだ自動テスト
のところのお悩みというか、ここ ってどうなんすかみたいな質問
とか、自分も身の回りで結構あった りするので、そういうのはぜひ投稿
フォームに送ってもらえると嬉しい かなと思います。もしもこれから
も聞きたいという方は、お手持ち のPodcastアプリで番組のフォロー
12:01
もお願いします。最新回が上がった ときにすぐに気づけるようになっています。
今日のこの配信はおそらく木曜日 に行っているので、特に木曜日は
配信したりしなかったりっていう のは、結構気まぐれなところも
あるので、そういうときにでも すぐに気づけたりするので、ぜひ
フォローもお願いします。ということで 今回はここまでです。それでは
また次回。バイバイ。