概要
- テスト駆動開発@いろんな言語
- これわかりやすい
C++
- cppunit
- testlib.h
- Yosupoさんのプログラムをみて
- ヘッダ系の良いテストプログラムがあるっぽい
テストの分類
単体テスト
機能ブロックをテスト→単体テスト Unit test, 関数とクラスのみのテスト JUnit
結合テスト
機能ブロックとの結合をしたときのテスト→結合テスト
総合テスト
PhantomJSという画面病がをしないブラウザがあって、Celeniumと一緒に使うと高速にテストができて嬉しいねというものがある Seleniumはめっちゃすごい。 driver.get() driver.findElement().sendKeys... みたいな感じで、実際に画面繊維を実現することができる https://www.youtube.com/watch?v=-dZ2PLHwLI8&feature=youtu.be オープンソース、どんなブラウザでも良い、どんなOSからでも使える。モバイルからもクロス。マルチプログラミング言語。ブラウザ操作からのスクリプトを生成するというリバース・エンジニアリングもできる。 2014年誕生
テストの必要性
- 不要のケース
- コメントを削除しただけの場合
- 必要なケース
- includeの順番入れ替えなど
- この確認のためには「抽象構文木 (AST: Abstract Syntax Tree) が変化しない変更であればテスト不要」という基準が使える
カバレッジ(網羅率)分析
- カバレッジは、所定の網羅条件がテストによってどれだけ実行されたかを割合で表したものです。網羅条件が命令であれば、命令網羅と呼ばれ(またはステートメントカバレッジ、C0とも呼ばれます)、すべての実行可能な命令のうち、テストで実行された命令の割合を意味します。そのほかに、すべての判定条件(if文による分岐など)のうち、テストで実行された判定条件を意味する判定条件網羅(ブランチカバレッジ、C1とも呼ばれます)などがあります。
- テストを実施するにあたって、カバレッジ (網羅率)を測定/分析することは、ソフトウェアの品質向上に非常に大きな意味を持ちます。なぜなら、カバレッジ情報からテストそのもの品質を定量的に測ることができるからです。テストのカバレッジを測定する方法は、コードや仕様、要件、設計など、さまざまな側面から計測する方法がありますが、単体テストの段階では、コードベースのカバレッジでテストの品質を測ることが一般的です。コードカバレッジを測定し、テストが実施されていないコードを確認することにより、テストの妥当性を向上させることができます。
用語
モック
- データベースではなく、データベースをもしたインメモリのデータベースでテストすること
- Databaseの実装のときに、簡単なものとかだとインメモリで当然実装できるので、そういうものを作っておくとローカルのテストが楽になるので便利
ドライバ・スタブ
- テスト用に用意した、まだ完成していない機能の代わりとなる部品
- テストすべきプログラムの前段につけるのがドライバ、後段につけるのがスタブ
テスト環境
ステージング=テスト環境 Development:開発 省略可能です。これは、個々の開発者や小規模なチームの作業環境です。他の層と分離した環境で、開発者はチームの他のメンバーに悪影響を与えずに、コードに大胆な修正を試すことができます。 Integration:統合環境 すべての開発者がコードの修正をコミットする共通の環境です。 この環境の目標は、ステージング環境に昇格される前に、プロジェクトチーム全体の作業を結合し検証することです。 開発環境と統合環境は統合が可能です(開発者がソースコードのローカルコピーを使用しない場合→つまり構成管理ツールとマメに同期を取っているのなら要らないということかな)。 Staging:ステージング環境 ステージング環境は、可能な限り本番環境と同一にした環境です。 ステージング環境の目的は、可能な限り本番環境のシミュレートをすることです。 ステージング環境は、デモ/トレーニング環境としての役目を兼ねることができます。 Production:本番環境 本番環境は、単一のマシンまたは多くのマシンを含む巨大なクラスタを含めることができます。
「本番環境」は英語で「Production environment」です。 「検証環境」は「Testing (Test) environment」です。「テスト」自体は、「Verification(検証)」や、「Quality Assurance(品質保証)」 「開発環境」は「Development Environment」です。 「ステージング環境」の英語表現「ステージング」とすでにカタカナですが英語ですので、こちらの疑問は少ないでしょう。「Staging Environment」でOKです。