[課題] カバレッジを計測したい!! 基本、アプリ作成する時は、ユニットテスト(JUnitとか)を書きながら、コードを書いていきます。 動作確認しながらコードが書けるので作業がはかどります。 しかし、自分が書いたユニットテストが想定した通りのできか?うまくテストできているか? を確認するすべはありません。 どの程度テストできているかを定量的に客観的に数値化する方法があれば、 それらを確認するすべになります。※テスト作成のど忘れとした時に、気がつくことができます!! KyoroTextでしようとしている方法について解説します。 客観的なデータがあれば、うまく想定したとおりにテストできていることが保障できます。 保障できないにしても心の安心を得ることはできるでしょう。 [カバレッジ] どの程度テストができているかを計る方法として、カバレッジという表現があります。 まずは、AndroidでCoverageをとる方法について解説します。 #カバレッジとは何か? Coverageは、テストした時にどの程度の網羅性があるかを数値化します。 具体的には、「テストできたクラスはのどのくらい?」「テストできたメソッドはどのくらい?」 「テストできた行はどのくらい?」といった事を計測するのです。 例えば、以下のようなコードがあったとして public void test(int a) { if(a>10) { --A-- } else { --B-- } } aが、11の時だけテストしたとすると、50%のテストができたといえます。 aが、11の時と、aが10の時をテストした場合、100%のテストができたといえます。 このように、自分が書いたコードがテストとできているかを、客観的にあらわす事ができるのです。 これがCoverageです。 [EMMA] EMMAというツールを使うことで簡単にカバレッジをとる事ができます。 EMMAはJavaのクラスファイルを書き換えます。 すべてのif文の前後、メソッドの先頭等に、Coverageを測定するためのコードを埋め込みます。 EMMAは単純に、埋め込んだコード上で通過した部分を記録しておき。アプリが終了するタイミングで、そのデータをストレージ上に記録します。 [EMMA Android] Androidには、EMMAがすでにSDKに含まれています。 今回はそのまま、Androidに含まれている機能を使用することにしました。 ※ 実現方法とかは機会があれば解説したいです。今回はしません。 1. antからビルドできるようにする。 ---> cd {ターゲットのprojectがある場所} ---> android.bat update project --path . 2. テストプロジェクトともantからビルドできるようにす。 ---> cd {ターゲットの test projectがある場所} ---> android update test-project -m <ターゲットのprojectの絶対パス> -p . 3. emma用にAPKをビルドする。 ---> cd {ターゲットのprojectがある場所} ---> ant emma debug install 4 . テストプロジェクトもビルドする。 ---> cd {ターゲットの test projectがある場所} ---> ant emma debug install test 後は結果がでます。 [成果物] #サンプルのコードを書きました。 https://github.com/kyorohiro/KyoroSamples/tree/master/EmmaSample - runtest.sh テスト実施します。 - createbuildxml.sh ビルド環境を作ります。 #以下のような、Coverageの結果が出力されます。 https://github.com/kyorohiro/KyoroSamples/tree/master/EmmaSample/tests/bin [参考] http://d.hatena.ne.jp/halts/20120201/p1 http://blog.pboos.ch/post/35269158339/android-coverage-report-for-unit-tests [次回] Google Playで、KyoroStressが1000ダウンロードを超えました。KyoroStressについて解説します。 Androidで、アプリが殺されるタイミングは何?殺された時、殺された後のアプリの動作は何? といった事を解説します。
2013年2月11日月曜日
KyoroText で使用されている技術 その12 AndroidでCoverageを計測したい
2012年12月26日水曜日
KyoroText で使用されている技術 その7
[課題] SurfaceViewでEditorを作る。 このページにアクセスする人を増やすため、 特定のAndroid APIをネタに記事を書くことにしました。 kyorohiroが良く知っているけど、ググッても得られない情報がありました。 SurfaceView上にEditorを実現する方法です。 これを読めば、OpenGlで書かれたEditor!!なんかも簡単に作れるようになるかも知れまもせん。 [構成] KyoroTextから、IME関連のエッセンスを抜き取って単体アプリ化しました。 これをサンプルとして、APIの解説をします。「KyoroSampleSurfaceViewEditor」といいます。5-6回に分割してAPIを解説する予定です。 これによりにより、以下のような効能があります。 - InputConnection の使い方が理解できます。 - InputMethodServiceを理解して、android用のソフトウェアキーボードを作成できるようになります。 - また、上記の機能のテストを作成したりする際に必要な知識が手に入ります。 ※ 一部だけですが..。 [サンプルコード] https://github.com/kyorohiro/KyoroSamples の、KyoroSampleSurfaceViewEditorです。 ソースをコピーした後で、「Eclipse->File->Import->Existing Projects into WorlSpace」 よりプロジェクトをインポートしてご利用ください。 [次回] 今回は内容の紹介だけです。 次回から、APIの解説します。
2012年5月20日日曜日
登録:
投稿 (Atom)
mbedtls dart の 開発を始めた web wasm ffi io flutter
C言語 で開発した機能を、Dart をターゲットとして、Web でも サーバーでも、そして Flutter でも使えるようにしたい。 そこで、mbedtls の 暗号化の部分を Dart 向けのPackageを作りながら、 実現方法を試行錯誤する事にした。 dart...
-
[課題] Low Memory Killer を意図的に発生させたい Androidには、ヒープが涸渇すると使われていないアプリをKillする機能があります。 この記事では、意図的にヒープを枯渇させて、この状態をつくる方法について説明します。 単純にヒープを大...
-
Dart の Native Extensions を利用して、 SDL を用いたマルチプラットフォームのゲーム開発環境を作れるか検証してみた。 結論からいくと、 「Mac 上で動作する SDL x Dart の アプリは動作させることが難しいよ」 と言うことです。 Wind...
-
Emscripten と OpenGLを使ってゲームを作ろうと思いたって、 まずは、SDL2の基本的な使い方を試していた。 しかし、今の所は、SDL 1系 の方が、良いと思いました。 SDL2があるのに、SDL1 を選ぶのはなぜか? # 201...