QA, テストケースの質をどのように上げていくか

■QAとテストケースに対する課題感
◎工数がかかる
テストケースの作成とテストケースに沿った動作確認に時間的工数と労力がかかっている。
どのくらいかかっているのか計測したい。
QA工数を減らして、実装工数を十分に確保したい。
◎品質担保性が低い(バグが多い)
インシデント対応が毎週1回は生じている。
直近の機能追加によるものもあれば、それ以外の一定期間生じてからのものもある。
※ チームの状況
8人程度のチーム
QAエンジニアはいない
アプリケーションエンジニア, AIエンジニア, PO, PdM

■テストケースについて調べてみる
◎テストケースの作り方
テストケースに最低限必要な項目は「テスト対象」「テスト観点(確認内容)」「テスト条件」「テスト手順」「期待値」になります。
分解するとこうなるのか、
テスト対象
テストする項目、画面、特定の箇所など
テスト観点
何を確認するか、一読してそのテストケースの目的・糸が把握できるもの。
テスト条件
テスト結果に影響をおよぼすだろう要素をあげる。
入力値など
テスト手順
テストで確認すべき手順を記載する
期待値
■示唆、感想
ここまでしっかりやるのは骨が折れる。
現状、「xx画面:xxするとxxとなること」みたいなテストケースをたくさん書いて網羅した気になってた?かも、
「テスト観点」と「テスト条件」これは書いていきたい。

■ハイレベルテストケースとローレベルテストケース
◎ハイレベルテストケース
抽象的なテストケース
◎ローレベルテストケース
具体的なテストケース
■示唆、感想
なるほど、
抽象的なものを記載して、具体的なものを実施していくかんじで作成するのはどうかな?そしたら、


仕様を網羅したテストケースと、仕様の範囲外のテストケース
テストケース
- 余計なテストケース:減らしたい
- 足りないテストケース:充足させたい
- 分析すべき

吉田さんの会社を含むスタートアップのQAに必要なのは、テスト手法でもなく、QAの仕組みでもなく、QAに対して真正面から真摯に向き合うことなんです。一言で、QAに正対するといっていいかもしれませんね。基本的にはスタートアップの>>アーリーフェーズでは、QAに正対している企業は少ないです。もちろんプロダクトを開発してリリースすることのほうが重要ですし、収益も最優先で考える必要があるでしょう。とはいえ、必要に迫られてテストベンダーにQA業務を外注したり、エンジニアが片手間でテストしたりしているようなQAのことを後回しにしてきた状況ではプロダクトのリリースや収益に対して、そのうち少なからず影響を及ぼし始めます。


■ソフトウェアテストとは
ソフトウェアテストとは、欠陥を取り除いて、ユーザーの要求を満たす、品質の良いソフトウェアをつくること
◎ソフトウェアの欠陥とは
ソフトウェアの誤動作のこと
この書籍では、
- 欠陥:誤動作の原因がソフトウェアにあることが特定されたもの
- 不具合:原因が特定される前の欠陥と思われる現象のこと
◎品質のよいソフトウェアとは
ユーザーの要求を満たし、ユーザーに価値を提供するソフトウェア
◎ソフトウェアとは
コンピュータを動作させるためのプログラムのこと

■ソフトウェアの品質:狩野モデル
当たり前品質
あって(充足)されていても当たり前と受け取られるが、ない(不充足)と不満に感じる品質要素。ソフトウェアを例に挙げれば、「機能通り正しく動く」という品質が該当します。ソフトウェアが正しく動くことは利用者(ユーザー)にとっては当たり前のことですが、仮に求める機能に不具合があればユーザーの不満を引き起こします。
一元的品質
あると嬉しいものの、ないと不満につながる品質要素。これは例えば、ソフトウェアの使いやすさなどが該当します。実際、ソフトウェアが正しく動き、使いやすければユーザーの満足度は上がりますが、仮に不具合はなくてもデザインや操作性がイマイチで、UX(ユーザーエクスペリエンス)や UI(ユーザーインターフェイス)が見劣りすれば、結果的にユーザーの不満が高まるでしょう。
魅力的品質
本来なくても構わないものの、あると嬉しい品質要素。YouTubeなどの動画配信サービスを例に挙げれば、外国語の動画音声を自動で翻訳してくれる機能など該当します。ストレスなく動画を観るという本来の品質を満たしている限り、自動翻訳機能はなくても問題ないと言えますが、語学学習などに興味がある人には高い満足度を提供することができます。
無関心品質・・・あってもなくても顧客の満足度に影響を与えない品質要素。これには例えば、アプリの開発者がユーザーにとってはどうでもよいデザインの仕様を変更するようなケースが含まれます。こうした顧客の関心から遠い領域でのサービス改善は顧客満足度に影響を与えないばかりか結局は無駄な作業となってしまうため、注意が必要です。
逆品質
あると逆に満足度が下がり、ないほうが嬉しい品質要素。例えば、動画配信サービスでこれまで表示されなかった広告が表示されるようになった場合を考えてみましょう。事業者視点では収益化の多角化という目的でコンテンツの隙間に広告を掲載するという決断を取ったとしても、「広告はない方が嬉しい」と考える一部のユーザーにとってはサービス自体の評価を下げる結果につながりかねません。
思ったこと
ユーザーが不満に感じるかどうかも「欠陥」として定義してソフトウェアを開発する必要がある。
仕様を満たすことを確認するテストケースと
ユーザーが不満に感じるかどうかという「欠陥」を確認するためのテストケースを作成してもよさそう。

■ブラックボックステスト・ホワイトボックステスト
◎ブラックボックステスト
入力値と出力値だけを確認するテスト
中身のロジックは気にしない
◎ホワイトボックステスト
システムの内部構造に着目して実施するテスト技法。
中身のロジックが正常に動作しているかを確認するテスト
■ 同値分解テスト・境界値テスト
◎同値分解テスト
同じ動作をする値のグループのこと
- 有効同値クラス:仕様上システムを正常に動作させる値のグループ
- 無効同値クラス:仕様上システムを無効に動作をさせる値のグループ
◎境界値テスト
有効に動作する値と無効に動作する値の境界値の隣り合った値2つでテストを実施する方法
参考

■テストケース
◎機能動作確認一覧
- Must系:できるのが正しい
- Never系:できないのが正しい
テストを設計する上ではNever系が得に重要。なぜなら、Never系の機能は機能仕様書などに十分に記載されていないため、Never系の方に不具合が多く残っている傾向があるため。
◎テストケース作成
基本的に書くこと
- 事前条件
- 具体的な入力値
- テスト実施手順
- 期待結果(動作後に予想される結果)
- テスト実施結果(成功、失敗)
◯テスト実施のしやすさに考慮する
- テストの目的
- xxを確認する
- 準備手順
- 前提としてやっておくことなどを記載する