*概要 [#a204f750] -テスト駆動開発@いろんな言語 -[[これわかりやすい>https://qiita.com/ktarow/items/8c3d94d6c21a0c86b799]] *C++ [#c4d0e1c4] -[[cppunit>https://github.com/hamko/sample/tree/master/cppunit]] -testlib.h --Yosupoさんのプログラムをみて --ヘッダ系の良いテストプログラムがあるっぽい *テストの分類 [#u9fc78fb] **単体テスト [#f2c6a8a3] 機能ブロックをテスト→単体テスト Unit test, 関数とクラスのみのテスト JUnit **結合テスト [#n0211b27] 機能ブロックとの結合をしたときのテスト→結合テスト **総合テスト [#r849baed] PhantomJSという画面病がをしないブラウザがあって、Celeniumと一緒に使うと高速にテストができて嬉しいねというものがある Seleniumはめっちゃすごい。 driver.get() driver.findElement().sendKeys... みたいな感じで、実際に画面繊維を実現することができる https://www.youtube.com/watch?v=-dZ2PLHwLI8&feature=youtu.be オープンソース、どんなブラウザでも良い、どんなOSからでも使える。モバイルからもクロス。マルチプログラミング言語。ブラウザ操作からのスクリプトを生成するというリバース・エンジニアリングもできる。 2014年誕生 *テストの必要性 [#o05ce8eb] -不要のケース --コメントを削除しただけの場合 -必要なケース --includeの順番入れ替えなど -この確認のためには「抽象構文木 (AST: Abstract Syntax Tree) が変化しない変更であればテスト不要」という基準が使える *カバレッジ(網羅率)分析 [#lca78e9b] -カバレッジは、所定の網羅条件がテストによってどれだけ実行されたかを割合で表したものです。網羅条件が命令であれば、命令網羅と呼ばれ(またはステートメントカバレッジ、C0とも呼ばれます)、すべての実行可能な命令のうち、テストで実行された命令の割合を意味します。そのほかに、すべての判定条件(if文による分岐など)のうち、テストで実行された判定条件を意味する判定条件網羅(ブランチカバレッジ、C1とも呼ばれます)などがあります。 -テストを実施するにあたって、カバレッジ (網羅率)を測定/分析することは、ソフトウェアの品質向上に非常に大きな意味を持ちます。なぜなら、カバレッジ情報からテストそのもの品質を定量的に測ることができるからです。テストのカバレッジを測定する方法は、コードや仕様、要件、設計など、さまざまな側面から計測する方法がありますが、単体テストの段階では、コードベースのカバレッジでテストの品質を測ることが一般的です。コードカバレッジを測定し、テストが実施されていないコードを確認することにより、テストの妥当性を向上させることができます。 *モック [#c8d1d197] -データベースではなく、データベースをもしたインメモリのデータベースでテストすること -Databaseの実装のときに、簡単なものとかだとインメモリで当然実装できるので、そういうものを作っておくとローカルのテストが楽になるので便利 |