Web制作者視点で理解するソフトウェアテスト

作品と活動
勉強会資料
JavaScript
ユニットテスト
ペアワイズ法
Pairwiser
約400字

社内勉強会資料。制作系のフロントエンド技術者向けに、ソフトウェアテストについて概要をまとめたスライドです。

本資料に関連し、『Pairwiser』について更に掘り下げた記事『Webアプリのテスト工数を削減できるかもしれないペアワイズ法とPairwiser』もQiitaに公開しています。

スライド

参考資料

スライド(一部)

今日お話しするのは… テストとは何か frontplateのテスト環境 実践ユニットテスト こんな時にこれ使うと便利 実践システムテスト オールペア法による組合せテスト ブラックボックステスト 例:ユニットテスト 関数またはメソッドを1つづつ呼び出し、入力と出力が仕様通りであるかを検証するテスト手法。自動化が前提となる。条件分岐がある場合は、それを全部実行する想定される入力値を全部実際に入れてみて
実行する ホワイトボックステスト 例:システムテスト 完成したシステムが要件を満たしているか、実際に動かして確認する。基本は手動での確認となる。内部の実装を知らなくてもテストできる 再帰テストが辛いので自動化の試みは色々あるけど、結局楽な方法はない ホワイトボックステストが完璧ならブラックボックステストは不要? NO コードが仕様通りであることは担保できるが、仕様自体に間違いや漏れがあることはホワイトボックステストでは分からない frontplateのテスト環境 Karma node.js上でJSテストを実行するためのテスト実行環境を提供 mocha テストを実施するテストフレームワークを提供 power-assert テストに必要なアサーション機能を提供 sinon.js テストに便利なテストダブル機能を提供 phantomJS コマンドラインWebブラウザの機能を提供 babel/webpack KarmaでもES6とwebpackの機能を利用できるようにする 各ツールの意味:テストダブルとは テストの対象となる関数が依存する、テスト対象外の機能を擬似的に再現するための機能を「テストタブル」と呼ぶ。 テストスタブ ある機能が別の関数を呼んで処理をしているけど、その別の関数の結果を都合の良い値にしてテストしたい 既存の他の関数の戻り値を改竄できる機能 テストモック ある機能が別の関数を呼んで処理をしているけど、その別の関数は外部のライブラリに所属している
  ダミーのオブジェクトや関数を偽装できる機能 テストスパイ ある関数に引き渡された引数が何であるかを 取り出せる機能 必要なテストの数:256 オールペア法と直行表 現実的に全パターンテストするのは無理 全パターンのテストをやらなくても、少しだけ品質を落とすだけでかなりの部分をいい感じにテストできる組合せを作れる その理由は理系だと分かるっぽい