それなりに網羅しているつもり。
SpreadSheetsにまとめている。
ソフトウェアテスト観点
機能
DB
本番データでおかしくなるといったケースも考えられるので、できるだけ本番に近く厳密なデータを用意する。実際の本番データが使用できればなおよし。
- Create
- Read
- Update
- Delete
- NULL登録
- ロールバック
- デッドロック
検索
- 単一条件で検索
- 検索条件の組み合わせ
- 前方一致
- 後方一致
- 完全一致
- 期間指定
- 検索結果0件
- 検索結果最大
- ソート
- ページング
- 検索後操作
エラー処理
想定されるエラー処理は基本的にすべて。- 不正入力
- セッションタイムアウト
- 通信エラー
帳票
- レイアウト
- 文言
- 文字の見切れ
- 想定しない改行
通信
- 通信先アドレス
- 悪条件での動作
ファイルIO
- ディレクトリが存在しない
- 同名ファイルが存在する
- 対象ファイルが存在しない
- ファイルがロックされている
データ・状態
データ形式(画像)
- フォーマット(jpg,png)
- TIFF回転情報
- サイズ
データ形式(CSV)
- ""の取扱
- 固定長か
- 値に,を含むか
- 値に改行を含むか
- ヘッダの有無
文字
- 機種依存文字
- 外字変換
- SJIS ⇔ UTF8 変換
- 改行コード
- 空白文字
- 3バイト以上の文字
境界値
- 境界値
- 境界値の前後
- NULL/0/空値
- エラー値
数値処理
- 端数処理(切り捨て、切り上げ、四捨五入、銀行丸め)
- 小数点の精度
- 最大値 桁あふれ
- 消費税計算
日付時刻
- UTC
- JST
- うるう年
- うるう秒
- 月初め・終わり
- 祝日
権限
- 管理者
- ユーザ
- 運用者
- システム
データ量 データ件数
運用
予算にもよるが何かしらミスをしても切り戻しできるようにしたい。
障害対策
- 待機系
- 障害通知
- 運用継続手順
- 復旧手順
- 連携システムの障害
- 災害対策
移行
- 並行運用
- データ移行
- マスタ移行
- バージョンアップ
システム監視
- アラートメッセージ・ログ
- 障害通知
セキュリティ
- ウイルス対策
- バージョンアップ、パッチ
- デバッグオプションの無効化
バックアップ
- 期間・タイミング
- リカバリ
日次・月次・年次処理
ここのテストの質で休日を安心して過ごせるかが決まる。不定期処理
データ・ログ整備
- 保存期間
- ディスク容量
- データ量・処理時間
- 不正データ
- 不要データ
ログ
- 記録対象
- ローテート
- 閲覧方法
- 不適切情報がないか(個人情報、パスワード)
起動・停止・再起動 起動手順
- 停止手順
- バッチタイミング
GUI
表示項目
- 解像度・画面サイズ
- 表示色
- 文言
- 文字数による表示崩れ
- 表示桁数
- 表示方法、フォーマット
入力項目
- 必須項目
- 関連項目の連動
- 関連項目の排他
- 桁数
- 全角
- 半角
- 英数字
- 数字
- 記号
- 全角半角自動変換
画面遷移
まっとうなウェブアプリケーションを名乗るなら戻るボタンを押しても不具合のないようにしたい。- 進む・戻る
- キャンセル
- 全ルートの確認
- セッション切れ
- 実行完了後の遷移
画面制御
- ポップアップ
- タブオーダー
- 表示項目切り替え
- エラー時の表示
- 権限ごとの表示
ボタン
- 有効/無効
環境・インフラ
インフラ周りは基本的に別途専門家が必要。
HW
- 構成
- 容量
- 性能
NW
- 構成
- 性能
ミドルウェア
- バージョン
- サポート期間
- 影響範囲
OS
- バージョン
- サポート期間
本番/テスト環境の差異
思わぬところで不具合が出る。できれば同一環境にしたい。
- VPNの有無
- 権限の有無
非機能
性能は基本的に遅すぎる作り以外はハードウェアのスペックを上げる。
無理な時は無理。
高負荷
何かしら外部サービスを使用している場合使用制限があるケースが多い。- DB同時アクセス
- 処理の同時実行
- ネットワーク負荷
- CPU使用率
- ディスクIO
連続稼働
基本的に可動しっぱなしなので長時間い渡っても問題ないことを確認する。- メモリリーク
- データ閾値の超過
- HDD空き容量
- その他不正な動作
性能
基本的に徐々に劣化するので余裕をもたせる。- ピーク時性能
- 将来の機能追加
- 各処理の応答時間・スループット
セキュリティ
フレームワークがカバーしている箇所は不要。- バッファオーバフロー
- XSS
- OSコマンドインジェクション
- CSRF
- DDOS
- SQLインジェクション
- セッションハイジャック
- クロスサイトスクリプティング
- クロスサイトインジェクション
- 中間者攻撃
- クリックジャッキング
- パスワードのハッシュ化
- 個人情報の管理(ログなど)
ユーザビリティ 視認性・操作性
- 上から下。左から右へと操作する。移動量が大きすぎない
- 必要十分な機能が一画面に収まる
- 項目が多すぎない(7項目前後が理想)
- 項目間に十分な空白がある
- ディスプレイ・モバイル画面にかかわらず使用できる
- 重要な項目が大きく目立っている
- 重要でない項目が小さく目立たない
- 文字が十分に見やすい
- 機能を利用するための入力・クリック数が十分少ない
- 操作方法がシステム全体で共通化されている
- 操作方法が標準から外れていない
- 通常利用する上でエラーの表示が少ない
- トグル・スイッチ項目が誤解を生まない
- Yes/Noの選択肢が誤解を生まない
- ボタンじゃない項目はボタンと似たデザインにしない
- ボタンなどアクションがある項目は目立たせる
- 通知項目は重要な情報やボタンに覆いかぶさない
参考
http://www.juse.jp/sqip/library/shousai/?id=87
http://labs.opentone.co.jp/wp-content/uploads/2010/02/8a7a1b428edc1ed170f8556838542f41.pdf
プロジェクトに合わせて調整するといいかと。