23分で読めるby hana_boy

単体・結合テスト観点表

テスト観点表

概要

現場にテスト観点表がなかったため、私がテスト観点表を作成しました。
以下の内容は、私が作成したテスト観点表です。
また、現場がLaravelのため、ところどころLaravel特有の観点などが出てきます。

背景

現場にテスト観点表がなかったため、私が作ることになりました。
テスト観点表作成のために、以下の書籍を読んだのですが、そのときのメモについても投稿していますので、少しでもこの記事を読んでいる方のためになれば幸いです。

「テスト駆動開発」の読書メモ:https://zenn.dev/hana_boy/articles/585fb00267e8c2
「単体テストの考え方/使い方」の読書メモ:https://zenn.dev/hana_boy/articles/bf013d92b9956c

感想

テスト観点表を作った自分のテスト観点は、レベルアップしたと思います。
ただ、正直テストに興味がないメンバーからすると、すべて読むのはかなり大変だと思うので、分類などを変更し、わかりやすくできればベストなのかなと思っています。

また、単体テストのモックの使用については賛否両論ありますが、私の現場では基本的に外部API以外はモックを使わないようなルールとなっています。

テスト観点表

テスト作成時の観点

ブラックボックステストなどの観点については、「知識ゼロから学ぶソフトウェアテスト 【改訂版】」を参考にしました。
細かい観点については、以下のQiitaの記事を参考にさせていただきました。
https://qiita.com/nittannittan/items/2d8a342a8d77db53b70a

入力観点

大観点中観点小観点観点の説明備考
入力チェック共通未入力何も入力されていない場合、期待通りの動作となるかどうか。
エラーチェックバリデーションエラーなど期待されるエラー以外のエラーが返ってこないかどうか。
最小桁数最小桁数より小さい場合、期待通りの動作となるかどうか。
最大桁数最大桁数より大きい場合、期待通りの動作となるかどうか。
半角英字半角英字が入力された場合、期待通りの動作となるかどうか。
半角数字半角数字が入力された場合、期待通りの動作となるかどうか。
半角カナ半角カナが入力された場合、期待通りの動作となるかどうか。
全角英字全角英字が入力された場合、期待通りの動作となるかどうか。
全角数字全角数字が入力された場合、期待通りの動作となるかどうか。
全角かな全角かなが入力された場合、期待通りの動作となるかどうか。
全角カナ全角カナが入力された場合、期待通りの動作となるかどうか。
混合(フリーテキスト)フリーテキストの場合は全ての文字種が入力された場合、期待通りの動作となるかどうか。
混合(特定文字種)特定文字種のみの場合は、他の文字種が入力された場合、期待通りの動作となるかどうか。
禁則文字禁則文字が入力された場合、期待通りの動作となるかどうか。
形式(メールアドレス・URL・日付など)指定の形式に沿った形で入力した場合、期待通りの動作となるかどうか。
指定値以外指定値以外を入力した場合、期待通りの動作かどうか。
存在セレクトボックス等で選択した場合、期待通りの値が入力されているかどうか。
数値系0を入力する0を入力した場合、期待通りの動作かどうか。
最小値未満最小値未満の値を入力した場合、期待通りの動作かどうか。
最大値超過最大値超過した値を入力した場合、期待通りの動作かどうか。
指定値以外指定値以外を入力した場合、期待通りの動作かどうか。
小数小数を入力した場合、期待通りの動作かどうか。
マイナスマイナスの値を入力した場合、期待通りの動作かどうか。
日時系過去日過去日を入力した場合、期待通りの動作となるかどうか。
未来日未来日を入力した場合、期待通りの動作となるかどうか。
日付大小開始日や終了日があった際、開始日が終了日より後だった場合に期待通りの動作となるかどうか。
うるう年日付のみの入力の場合、2/29の存在を考慮できているか。
その他相関チェックFromToそれぞれ指定する場合など、フォーム間で何らかの相関性がある場合。
ファイルファイル名ファイル名が、指定された名前の場合、期待通りの動作かどうか。
拡張子拡張子が、指定された拡張子の場合、期待通りの動作かどうか。
サイズファイルサイズが、指定されたサイズの場合、期待通りの動作かどうか。
空ファイルファイルの中身が空の場合、期待通りの動作かどうか。
文字コード・改行コード文字コード・改行コードが入力されている場合、期待通りの動作かどうか。
ファイル(CSVインポート)項目数CSVの項目数が、指定された数の場合、期待通りの動作かどうか。
ヘッダ有無CSVのヘッダが存在する場合、期待通りの動作かどうか。
データ件数CSVの件数が指定の件数の場合、期待通りの動作かどうか。
最大データ件数CSVの件数が最大データ件数を超過した場合、期待通りの動作かどうか。
変換観点空白除去空白が入力されていた場合、除去されるなど期待通りの動作かどうか。
形式日付や郵便番号の形式変換や、0埋め、「¥」の付与などが、期待通りにされるかどうか。
全角←→半角全角or半角で入力された場合、それぞれ変換されるかどうか。
大文字←→小文字大文字or小文字で入力された場合、それぞれ変換されるかどうか。

画面観点

大観点中観点小観点観点の説明備考
表示内容共通ページングページネーションが、期待通りの動作・レイアウトかどうか。
表示限界個数一覧などで、表示の限界までコンテンツを表示させた際、レイアウトが崩れないかどうか。
文言表示文言設計書など、正となる文言との比較を行い、条件ごとに期待通りの文言が表示されるかどうか。
最大長・最小長最大長または最小長の文字の内容を表示し、レイアウトが崩れないことを確認する。
連続した半角英字連続した半角英字を表示し、レイアウトが崩れないことを確認する。
表示形式日付や数値のカンマ、0埋めなど、期待通りの表示形式かどうか。
NULL・空文字・空白NULLや空文字を表示した際、期待通りの表示となるか。
特殊文字・絵文字特殊文字や絵文字を出力した際、文字化けなど起こらないか。
HTML関連<>などHTMLに使用される文字が、期待通りに反映or表示されるかどうか。
ソート一覧表示の場合、ソート順が正しいかどうか。
特定文言禁止されている特定の文言が、表示されないかどうか。
フォントフォントが、設計書通りのフォントとなっているかどうか。
画像SRC属性画像のSRC属性が、期待通りかどうか。
ALT属性画像のALT属性が、期待通りかどうか。
画面制御表示初期表示入力フォームの初期値などが、期待通りの表示かどうか。
条件表示データやフォームの状態での表示/非表示制御をしている場合、条件ごとに期待通りかどうか。
エラーメッセージエラー表示位置やレイアウトが崩れていないかどうか。
タブ遷移タブ押下時の、フォーカスの移動順が、期待通りかどうか。意識しないまま実装すると、時に変なタブ遷移をしてしまい、ユーザビリティが悪くなる可能性がある。
リストボックスリストボックスの選択項目が、期待通りかどうか。
広告広告が表示されるか、レイアウトが崩れていないかどうか。広告が表示されるタイミングや条件についても確認する。
地図地図が表示されるか、座標通りに位置が指定されるかどうか。
TDKTDKが期待通りかどうか。参考:TDKについて
計測系GAGAのイベントを実施した際、期待通りに動作するかどうか。参考:GAについて
遷移画面遷移自画面/他画面遷移が、期待通りとなるかどうか。ボタンにリンクがないなどを検知する。
ブラウザバックブラウザバック時に、期待通りの挙動となるかどうか。
不正パラメータGETパラメータが不正であった場合、期待通りの動作となるかどうか。
URL直接入力正規の画面遷移をせずに、URLを直接入力し遷移した際、期待通りとなるかどうか。
多重送信サブミットを連打した場合、期待通りとなるかどうか。「JSでダブルクリックさせないよう、ボタンを非活性にする 」や、「多重送信されても問題ないよう、システムで制御する」などができているか。
リダイレクトリダイレクト設定がある場合、遷移先が正しいか。
パラメータ引き継ぎがある場合は引き継がれているかどうか。
未ログイン・ログイン済みなどで、ログイン画面からのリダイレクト先を検証する。
ブラウザブラウザバリエーションWin・Mac・Android・iOSそれぞれ、システムで指定された推奨ブラウザで期待通りに動作するかどうか。ブラウザによって表示が乱れる、JavaScriptが動作しないなどが起こりうる。
メーラ起動もエンコードの違いなどにより文字化けが発生する事があるため注意する。

機能観点(データなど)

大観点中観点小観点観点の説明備考
データ取得共通検索条件仕様通りの条件で、データが取得できているかどうか。条件が複雑な場合、マトリクス表を作る。
範囲指定ページネーションなど、取得件数を制限する場合、期待通りとなるかどうか。
取得項目仕様通りの項目が、取得できているかどうか。
ソート仕様通りのソート条件で、データが取得できるかどうか。
ページネーション仕様通りに、指定の件数でページネーションしたデータが取得できるかどうか。
データ登録・更新正常系データ追加仕様通りに、データ追加ができるかどうか。
データ更新仕様通りに、データ更新ができるかどうか。
異常系データサイズ不正データ型毎の制限を超えた値を、登録できないかどうか。
データ非存在更新対象のデータが存在しないときに、期待通りの動作となるかどうか。
型不正データ型が異なるデータを投入しようとしたときに、期待通りの動作となるかどうか。
主キー、ユニークキー違反キー重複となるデータを投入しようとしたときに、期待通りの動作となるかどうか。
NotNull制約違反NotNull制約があるカラムに、NULLを追加したときに、期待通りの動作となるかどうか。
データ削除正常系データ削除対象のデータのみが、正しく削除されるかどうか。
論理・物理削除論理・物理削除が、仕様通りにされているかどうか。
異常系データ非存在データが存在しない場合、何も削除されないかどうか。
共通トランザクションロック更新対象のレコード、テーブルに対し適切にロックがかかり、ロックがかかった対象への参照、更新が想定通り待機状態となるかどうか。処理内で複数のテーブルに対しロックをかける場合、他の処理と同時実行することで、デッドロックが発生しないことも確認する。
ロールバックトランザクション内でのデータ登録、更新削除について、(エラー発生などで)ロールバックした場合、全てがキャンセルされるかどうか。例外処理が起こった場合、ロールバックされることを確認する。
コミットトランザクション内でのデータ登録、更新削除について、コミットした場合にそれらが全て確定されるかどうか。
マスター・スレイブ参照先最新のデータを取得する必要がある際に、マスターDBへデータ参照をしているかどうか。登録、更新処理のコミット直後に、再度データ取得をする処理を行う場合、マスター参照をしていないと古い情報を取得している場合がある。
異常系ログ出力処理が異常終了した場合、ログが出力されるかどうか。
ビジネスロジック共通仕様比較入力、出力が仕様通りかどうか。他機能からのデータ入力、他機能へのデータ出力がある場合、それらが相互に正しく機能していることを確認する。
条件分岐条件分岐を伴う場合、各条件の真偽の組み合わせを網羅し、期待通りとなるかどうか。複雑な機能要件となっている場合、マトリクスでテストケースを表現すると網羅性が高まる。
複数データ(ループ)複数のデータをループして処理するような機能である場合、全ての処理が正常に機能するかどうか。1件1件での機能テストでは通っても、複数件同時に処理した時にループ処理の仕方によっては想定通り動かない場合もある。
複数データ(統計、グループ化)複数のデータに対し統計を取ったり、グループ化する場合に、取得するデータが正しいかどうか。
年月日跨ぎ操作・処理が年、月、日を跨いだ場合に正しく機能するかどうか。
競合同一機能同時操作複数人操作同一の機能を複数人が、同時に操作した場合に、正しく機能するか。
同一セッション操作同一の機能を同一ブラウザ(セッション)内で、並行して操作した場合、正しく機能するかどうか。複数タブ立ち上げなどで確認する。
(バッチ)多重起動バッチが多重起動した場合に、後続の処理への対処が、期待通りにできるかどうか。
他機能同時操作同一データを複数機能から同時操作複数の機能が同じデータを同時に参照・更新する場合に、正しく機能するか。
メールメール送信送信条件指定の条件のユーザーにのみ、メールが送付されるかどうか。
送信内容送信内容が、条件ごとに期待通りになっているかどうか。文言、画像がある場合は画像を確認する。
送信元送信元が、指定のメールアドレスかどうか確認する。
PUSH通知PUSH送信送信条件指定の条件のユーザーにのみ、PUSHが送付されるかどうか。
送信内容送信内容が、条件ごとに期待通りになっているかどうか。文言、アイコンがある場合は画像を確認する。
OSごとOSごとに、送信内容が違っていないかどうか。
ネットワーク異常系悪いネットワーク環境ネットワーク環境が悪く、通信できないとき、期待通りとなるかどうか。

参考文献・サイト

参考サイトURL

テスト観点一覧
URL:https://qiita.com/nittannittan/items/2d8a342a8d77db53b70a

テスト観点とは?
URL:https://service.shiftinc.jp/column/5029/

単体テストの観点とは?
URL:https://biz.techvan.co.jp/tech-quality/quality-blog/000242.html

テスト観点一覧
https://trueman-developer.blogspot.com/2019/03/blog-post.html

AAAパターンを意識して単体テストを書く
URL:https://tech.pepabo.com/2021/08/23/writing-unit-test-with-aaa/

参考文献

「単体テストの考え方/使い方」
著者:Vladimir Khorikov
訳:須田 智之
出版年:2022年
出版社:マイナビ出版
リンク

「ソフトウェアテスト入門 押さえておきたい<<要点・重点>>」
著者:ソフトウェア・テストPRESS編集部 (編集)
出版年:2008年
出版社:技術評論社
リンク

「知識ゼロから学ぶソフトウェアテスト 【改訂版】」
著者:高橋 寿一
出版年:2013年出版
出版社:翔泳社
リンク