skillup

技術ブログ

ドキュメント作成

テストについて

投稿日:2016年6月17日 更新日:

本日は完全自分用です。私以外の人間が見ても意味不明かもです(汗)

大事だと思う考え方

  • 負荷テストなどを除くと最終的なケース自体がそう多くないことをまず理解する。(ケースが多すぎると勝手に思い、雑になることが多い。効率のいいパターンを組めば2桁になることはめったにない。)
  • データベースが絡んだ場合、検出結果の際を見るとき、複雑に見えても主にSQLを見ながらWHERE句の条件分岐でテストケースを考えるとシステマチックにできる
  • 作業ツールはExcel,CSVエディタ,テキストエディタのいいところを組み合わせる
  • なるべくユニットテスト中心で考え、無理な場合、画面テストを行う。
  • 費用対効果を考える
  • 最適化させすぎないこと
  • 状況がかわることの想定
  • テストをやらないことと&テスト自体の自己目的化を避ける
  • 日ごろのコーディングでテストしやすいように組む。個人的なポイントはとにかく短くする。意味ごとに分割する。引数と戻り値をしっかり定義し、メソッド内部でPOSTをうけとったりしない(WEBを前提としたメソッドを作らない)、早期リターンで分岐を少なくする

実際のテストパターンの作り方について。

検索系

あらかじめ入っているデータが必ず必要。

未チェック時

必ず全レコードが出力されているか

キーワード系 1:Nパターン(主にキーワードなど)

Nに該当しているパターンがあるかどうかの確認。テストケースは必ずNパターンがいる。完全一致と部分一致で入力値を分ける

1:1パターン

通常の検索パターン。ダイレクトに検索ができるかどうか。すべて1つのテストケースにあっても構わないが、一致しないものを考えるために、最低2パターンいる。likeも検索値を分ければよいのでパターン自体は2パターンでも問題ない。

日付パターン(範囲パターン全体)

同日一致パターンは漏れやすい。一致無し、区間一致、同日一致でできれば3パターンほしい。場合によってまたぎパターンなど。

集計系(検索の一部)

基本的に範囲内と範囲外でOK。集計といっても2レコードも200レコードでもシステムの正確性を試すには変わらないことを忘れないこと。

全般的にSQLをみて分岐パターンを考える。境界値付近は必ず値をチェックする。

更新系

基本チェック項目

  • エラーになって画面を返す場合、値が正常に保存されているか。
  • 更新の場合、最初のページはデータベースから表示され、一度入力値がある場合はエラー発生時、入力値が保存されるか。
  • 空白で上書きができるか。
  • 値の優先度(データベースから呼び出す場合などや複数の値を参照する場合など)
  • ただのテキストは問題ないが日付や数値などは空白値のデータがどのようになるかを確認するとよい

項目チェックパターン

  • 必須系のエラー
  • 形式エラー(必須かつ形式があるものと、特に必須ではないけれど形式エラーがあるものに要注意)
  • 重複や存在確認などDBと参照するタイプのエラー
  • 最後のinsertやupdateが正常に行われているかいなかレスポンスが正常に返せているかいなかの確認

入力値

  • 正常に値がはいっているか
  • nullと空白,0が区別できているか
  • 重複チェックなどが出来ているか

上記の3,4パターンが必要。エラーが出るケースは全項目にエラー値を入れればいいのでパターン数は増えない。

残しておくデータに関してはすべてが正常系のものと、空白系の2パターンで基本OK。(その後の特殊なパターンを考えないケース。)

テスト実行前と実行後でデータの状態が変わるのでできれば削除して初期化しておくことが望ましい→(超重要。通常のユニットテストだったらそういう機能がついているが、ついていない場合は日付などで作成日を範囲づけして削除すると便利)

CSV系

  • 文字コードや改行コードの選定や対策ができているか
  • ファイル存在チェック、形式チェック
  • データが一行もない場合にエラーがでるか
  • データ自体が不正なものをはじけているか(改行で分割した時に複数行、つまりは配列形式になっているか)
  • 列数が正しくないものを正確なエラーメッセージが出せてはじけているか
  • 形式が正しくないものを正確なエラーメッセージが出せてはじけているか(メルアドチェックなど)
  • DBへの存在チェックで存在しないものをはじけて正確なエラーメッセージが出せているか
  • データ入力失敗時にエラーメッセージが出せているか(主に例外系のエラー)
  • 危ないタイプのデータ(特に入力すべき値を参照)をチェックできているか

負荷テスト

  • 本番に相当する or 近いデータ量でのテストをしておくべき(動くけど、実データいれると使い物にならない・・というケースが起こりがち)
  • テスト作成のためにはマクロ、WEBサービスなどがお勧め。作業が頻出かつ必要性がある場合は自分で作成コードを書くのもあり

特に入力すべき値

  • 桁数最大値
  • 桁数最小値
  • 0
  • 空白
  • null
  • 特殊文字(HTMLやエスケープしなくてはいけないタイプの文字など)
  • 改行(CSVで特に有効)
  • ダブルクオートやカンマ(CSV内で崩れないか特に有効)

自動化に関する覚える書き

  • テストのたびにデータベースを初期化できるのが理想(更新系の処理の場合、これをしないと検証できない)
  • ただし、上記はフレームワークなしだと難しい。それができない場合データベースを入れ替えするのはかなり大変。都度データを消すのがもっとも現実的。
  • データ保存はCSVやExcelでケースをまとめておくのが現実的。特に複雑なケース。簡単なケースであればハードコーディングでいいかも。
  • それが難しいケースでは小さいケースでダンプを取り、テスト前にダンプ→テスト実行→リストアを随時行う。
  • データベースの入れかえができない場合の更新テストは、重複不可、日付、ナンバリング系の数字のチェックをはずすか対策をとること。データ保存の場合もこの点に注意。

参考リンク

開発・テスト用DB環境の管理と自動テストの考察

-ドキュメント作成
-,

執筆者:


comment

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

関連記事

no image

プロジェクトマネジメントについて

ある程度、大規模なプロジェクトを経験させていただき、経験だけでなくプロジェクトマネジメントを体系的に理解しておきたいため、ポツポツと本を読んでます。 比較的初心者でも読みやすいと思った本としてを2冊メ …

no image

ファジープロジェクト対策 その2

前回に引き続き、大事だと思ったこと。一部単なるフレームワークの作り方的な内容になっているかも。 Contents1 テンプレート共通化2 バリデーション3 ログ出し4 異常系の処理5 新規プラグイン+ …

no image

ドキュメント作成について

アプリやプロジェクトのドキュメント作りですが、時間が立ったり、複数人での開発を行うと 情報の漏れや抜けが非常に多くなる 本番との差分ができる 一部の人しか更新しなくなる 似たようなドキュメントがあちこ …

no image

ER図作成ツールについて(Mac版)

ER図作成ツールについてMacで色々と調べましたので、メモを。 フリー限定で。 ちなみにwindowsを使っていればA5:SQLが一番使えるかと思います。 以前も下記リンクで説明させていただきました。 …

no image

テスト分類について

一般的なテスト工程での分類や個人的に大事だと思うこと Contents1 全プロセス共通1.1 テストデータ作成バッチ1.2 ローカル、開発、ステージング、本番の分岐2 PT(プログラムテスト)、単体 …

アーカイブ