読書会(JUnit実践入門)第5回議事録
[ 戻る ]
============================================
Java読書会BOF 「JUnit実践入門」を読む会 第5回
============================================
.. csv-table:: 開催概要
"日時", "2013年7月13日 10:00 - 17:00"
"場所", "川崎市教育文化会館 第3会議室"
"出席者(敬称略)", "遠藤、門脇、高久、高橋(徹)、高橋(智)、田辺、中澤、中島、根本、松永、村山、山田、吉本(書記)"
議事
====
13 Androidのテスト
------------------
13.1 GUIアプリケーションの設計
------------------------------
* 最近の若いエンジニアはコマンドを知らない。
* Windowsしか使ったことがないから?
* ビューがモデルを参照していいのか?
* ビューがデータ型を判断するのにモデルを見ないとならない。
* これが本来のMVCじゃないの?
* WebアプリケーションのMVCの場合、コントローラが肥大しやすい。
* MMVCの考え方もある。
* MVPというものもある。
* モデルとはどこまでの範囲を指すのか?
* データだけじゃないはず。
* ビジネスロジックの行き場所はいろいろある。別レイヤにしたり。
* MacのGUIもシングルスレッドなのか?
* Macもシングルスレッドのはず。
* Windowsと変わらない。
* OpenGLなどを使えばマルチスレッドに出来るかもしれない。
* GUIのマルチスレッドは止めておいた方がいい。
* GUIの設計が破綻する。
* WindowsもMacもイベントにはキューを使っているので、そもそもマルチスレッドは無理だろう。
13.2 MVCパターンによるAndroidアプリケーションの作成
---------------------------------------------------
13.3 モデルのテスト
-------------------
* リスト13.7の15行目 3項演算子のtrue時の処理とfalse時の処理が逆。
* 2刷では修正済
* モデルを独立したプロジェクトで作るというのは、どのようにやっているのか?
* モデルが増えるとコストが高くなる。
* 増える前に環境を作るしかない。
* そうしないとCI(継続的インテグレーション)ができない。
* 失敗したプロジェクトと成功したプロジェクトがある。
* 失敗したプロジェクトがあることが分からない。
* 失敗したプロジェクトは作ったモデルをコントロールできなくなったため。
* モデルのテストをしなかったのがよくなかっただけでは?
* モデルが他のプロジェクトで使えるのか?というのは、もう1歩先の問題。
* モデルを独立させるメリットは、モデルからビューを参照出来ないようにすること。
* モデルにAndroidのGUIに関連するものが入ってきたらどうするのか?
* ここでのMVCでは「入れるな」とういうこと。
* POJOで作るということか。
* runtimeに依存しないもので作る。
* リスト13.10 httpClientをパッケージプライベートでnullをセットしているのは、テストを意識しているのだろう。
* リスト13.11 下2つのモックのreturn値がJSONの形式に合っていない。
* 文字列はダブルクォーテーションで囲まないとならない。
* シングルクォーテーションも使えない。
* resultとsuccessを両方囲う必要がある。
13.4 ビューとコントローラのテスト
---------------------------------
* リスト13.14 assertEqualsの引数の順番が逆。
* 「気をつけろ」と書いていながら本人がやっちゃった。
* Androidエミュレータは遅くて使いものにならない。
* 遅いのはわかっているが、使える部分では1つの選択肢としたい。
* CIに組み込む際、実行速度が要求されない使い方は出来る。
* 朝来て結果が出ているくらいでもいいものはある。
* 一部が出来ないからといって全てを否定するのはどうかと思う。
* 利用出来る部分だけでも使いたい。
* リスト13.15 sendKeysとassertEqualsで、文字が大文字と小文字で違うがいいのか?
* sendKeysでは、文字列ではなく、スペース区切りでキー入力された文字として送っているのでは?
* 小文字はどうすればいいのか?
* キー入力として文字を送るだけなので、小文字が送られると思う。
* 逆に、大文字の方が難しい。
13.5 GUIアプリケーションのテストにおける注意点
----------------------------------------------
* なぜいきなりSeleniumが出てくるのか。
* 機能テスト繋がりだからだろう。
* そもそもSeleniumはAndroidで動くのか?
* ブラウザの種類に依存するので、分からない。
* ChromeにはSeleniumは対応しているが・・・。
14 コードカバレッジ
-------------------
14.1 コードカバレッジとは?
---------------------------
* 3項演算子の場合、カバレッジはどうなるのか?
* 1文だけど、C1になるのか?
* C0だろう
* 3項演算子だとバイナリベースでカバレッジを取らないと意味が無い。
* カバレッジが100%になったからといって、品質が上がるとは思えない。
* ソースの書き方によって、どうとでもなる。
* カバレッジの数字が上がっても、品質は逆に悪くなることもある。
* catch文でExceptionだけを記述するとカバレッジ率は上がるが、テストしない例外が出てくる。
* C2カバレッジを測定出来るツールはほとんど無いとされているが?
* C++ではある。テクマトリクスのツールが有名。
* EclEMMAではやってそう。
* あることはあるが・・・。
* カバレッジはあくまでもソース上の話で、仕様上のカバレッジではない。
* ソースから抜けているものは分からない。
14.2 カバレッジツールの利用
---------------------------
14.3 EclEMMAによるカバレッジ測定
--------------------------------
* メソッドカウンタと型カウンタの違いは?
* 型カウンタは、少なくとも1つのメソッドが実行されればカウントされる。
* その型(クラス)が使われたかどうかだけ。
* メソッド単位かクラス単位かの違いだと思われる。
14.4 カバレッジに関するよくある疑問
-----------------------------------
* カバレッジが80〜90%というのは本当?
* 数字的には妥当。
* 普通は100%を目指さないの?
* 数字に正解はないので、説明するのは難しい。
* 100%にすることを目的にするのは本末転倒。
* 100%という数字に意味は無い。
15 継続的テスト
---------------
15.1 継続的テスト
-----------------
15.2 Mavenによるビルドプロセスの自動化
--------------------------------------
* JaCoCoは、バイナリに手を入れるタイプのツールか?
* そうだと思う。
* Androidでは動かない?
* だと思う。
15.3 バージョン管理システムによる継続的テストの運用
---------------------------------------------------
.. note:: 次回は、p.296「バージョン管理システムへのコミット」から。
[ 戻る ]