skillup

技術ブログ

ドキュメント作成 プログラミング全般

テスト項目の作り方(縦項目について)

投稿日:2021年10月22日 更新日:

テスト項目の作り方について。

単体テスト書のレビューをしていて、なるべく効率的に網羅的にできるテスト仕様書の作成について。

納品物としてではなく、開発の高速化と品質をあげるためのテスト仕様書を。

項目の分解方法

複雑なシステムの場合、テスト項目の切り分け方が大事になってきます。このブログではこのような項目を便宜的にテスト項目の縦項目と定義します。

自分なりに考えたコツなどを。(まだ完全にできるようにはなっていないですが・・・)

困難は分割せよ

全ての一度に切り分けるのは難しいので、Controllerでのスタート→エンドごとに小項目を作り、そのカテゴリーごとに分けます。

典型的な例としては、以下のようなものでしょう。

  • Inパラメータのバリデーション
  • 分割可能な単位の処理(綺麗に書かれているプログラムの場合、コントローラーから呼ばれる1つの単位がテストの小カテゴリ単位になるかと思います。)
  • 比較的大まかなメソッド(シーケンスの1フロー)
  • 比較的上位のif文やswitch文(処理が大きく分かれている部分など、)
  • さらに下部の小さい単位へ・・・

上記の場合、リポジトリやサービスがこの単位になっているとPHPUnitなどのテストツールなどで機械的にテストできるので楽だなと・・

条件分岐の組み合わせ

単純に考えると、Inパラメータや条件分岐となっている箇所の分だけ条件分岐の数が増えてきます。

ただ現実的に考えるとかなり難しいので、メインとなる条件の分岐のみになるケースが多いかと思います。

Unitテストが理想ですが、そうでなければExcelなどを使ったり、楽に網羅的に組み合わせを作れるようにしましょう。

画面からPOSTする場合でも手入力だときついので、JSONなどを自動で作れるようになればパーフェクトかと思います。

エビデンス(結果の担保)

テストやってて憂鬱なものNo1だったんですが(時間がかかる上に仕事のための仕事という感じがして私が嫌いなもののトップ)、上手く使えば結果の担保ができますので、積極的な意味を見出していこうと思います。

スクショ

一般的にエビデンスといえばがこちらが一般的でしょう。

スクショ撮るとか、大嫌いな作業ですが(汗)、メリデメを整理して見ようと思います。

メリット
  • スクショツールを使えばいいので、結果の保存が楽でスキルがいらない
  • 画像で情報を伝えられるのでレイアウトなど文字情報で伝え切れない情報を伝えられる
  • 画面系の結果に関して伝えられる情報量が多く、正確
デメリット
  • エビデンスを保存するのが(特に数が多くなってくると)手間
  • 入力値のコピペができない
  • 検索などもできない

レイアウトを伝えるなどがなければ、デメリットの方が多いですかね・・・

SeleniumやJavaScriptでヘッドレスブラウザを使うというやり方を使えばスクショを自動的に作れることもありますが、

ログ

メリット
  • プログラムのInとOutをセットにして情報を伝えることができる
  • ログの収集方法などを工夫するができる
  • Inパラメータをセットにするなど情報を綺麗な形に圧縮できる
  • 文字情報なので検索ができる
デメリット
  • テスターがエンジニアでないと、エビデンスを集めることが大変
  • ログが綺麗に出ていないとそもそもこの手法が使えない
  • ログ設計に依存する部分がある

レスポンス

ログに近いですが、APIなどの場合はこの方がスクショよりもわかりやすいでしょう。

メリット
  • InとOutなどを定義することで結果としての仕様のコミニケーションの齟齬を防ぐことができる
  • テストの再現性が高い
  • JSONを入れておけば、仕様書になる
  • ユニットテストのように効率化することができる
デメリット
  • APIでないと使えないケースがある(通常の画面側の処理でそれを行うのは難しい)

事前データ

これがテスト仕様書にあるだけでテストの効率が数十倍になります。効率の良い開発を進める上での土台といっても良いでしょう。

仕様がわかる方を捕まえて、トラン系のデータと周辺のマスタ系のデータを一通り作っておきましょう。

データ作りのコツについて

  • 何度も繰り返すことを前提にすると、常にdrop文、truncate文をセットにしておく(これがないと既存データのせいでテストできないことが多い)
  • 外部キー制約はテスト時は外しておいた方がいい
  • リレーションが複雑な場合は、まず組み合わせを考えてデータを横一列に並べて作成し(この場合はExcelが便利)、それをリレーションに分解する(あるいは自動化する)

-ドキュメント作成, プログラミング全般
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

Eclipseのシンタックスハイライト

先日PCがクラッシュした時にEclipseを入れなおしたんですが、普段あまり意識せずに使っていたのでhtmlのシンタックスハイライトをだすためだけに2時間ぐらい費やしました・・・自戒の意味も込めてメモ …

no image

仕様の把握で見るポイント

新しい現場に入って技術的な部分はもとより仕様の把握などでポイントになる点などを。 Contents1 ER図2 ステータス変更3 プレイヤー(イベント)整理4 タイムテーブル5 マトリックス表6 ダミ …

no image

クラスメソッドとインスタンスメソッド

以前staticメソッドを定義したときに、記法がインスタンスメソッドの呼び方でも呼べてしまうことがあったので、これを機にインスタンス・クラス×変数・メソッドちょっと調べてみました。 言葉で書くよりコー …

no image

OSコマンドインジェクション

Contents1 OSコマンドインジェクションとは?2 被害3 対策4 参考リンク OSコマンドインジェクションとは? OSに対する命令文を不正に紛れ込ませて攻撃させる手法。 被害 サーバー内のファ …

no image

シェル基礎2

シェルコマンド使い始めて数年たちますが、いまだに知らないことはおおいですし、早く知っとけばよかった的なこともたくさんあります。 そんな小ネタ集を alias よく使うコマンドを別名で登録することができ …

アーカイブ