OS X Mountain Lionで外部ディスプレイを使っている時のpositionを変更する
Thunderbolt Displayとかプロジェクタとかの外部ディスプレイを繋いだ場合に、外部ディスプレイの方をPrimary(menu barが表示される方)に変更する方法
[System Preferences]-[Displays]-[Arrangement]でディスプレイ上部の白いバーをドラッグすれば良い
Androidテスト勉強会 9月8日(土) #atest_hack に行ってきた
Androidテスト勉強会 9月8日(土) #atest_hack on Zusaar
に行って来たのでその時のメモなど。
全体的にAndroidだからこうテスト書こう、よりもテストは何のためにやるのか、テストの種類とは、みたいな一般化したお話が多かった印象。
あとGroovy使いが多かった。Gradle興味あるので触ってみようかなぁ
スライド内でも紹介されていたけど、Androidのテストについては
連載インデックス「Androidアプリ開発テスト入門」 - @IT
こちらを見るといいと思う。
以下会場で取ったメモ。後半あんまり取れてない…。
ソフトウェアテストな人同士で合わせておきたい5つの概念
@snskさん(しんすくさん(Androidテスト部))
品質とは 品質それ単体では何もいってないよね 品質モデル PQM Lite 機能実装度合い セキュリティ、プライバシー 信頼性 覚えやすさと気持ちよさ 時間と資源のパフォーマンス 変更のしやすさ ←これがデベロッパテストで担保すべき場所 スケーラビリティ テスト技術とプロセス品質技術 テスト技術→成果物を知るための技術 プロセス品質技術→プロセス自体の成熟度を知る技術 プロセス自体です。設計レビューの時間とか テストレベル Vモデル 要求 : 受け入れテスト 基本設計 : シナリオテスト 詳細設計 : 結合テスト 実装 : コンポーネントテスト NativeDriverいちおし 自動化ツール 受け入れ、シナリオテストの話! 自動化で削減出来るもの →実行工数のみ 初期の投資コストは手動より高くつくよね メンテコストは手動とほぼ同様だよね コスト的に手動<自動となるのは、3回以上実行するもの コンポーネントテストは自動化普通だよね? 誰がためのテストか 仕事として? 顧客のため? 自分(将来)のため? 将来作っていくことを考える場合 変更のしやすさが超重要!! →分厚いドキュメントをかく() →Unittestをかく テストは知る技術 →技術がいる 既知のものを調べるのはチェック
Sue445 Style TDD
@sue445 さん (AZusaar!の中の人。TDDクラスタ(他多数)代表)
Junit実践入門にAndroidのテストもかかれてるよ! テストの種類 QA testing セキュリティ、バグとか Developer testing 開発促進(TDD)はここ customer testing 使いやすさとか? //todo あとでみる TDDは設計だよ! 1.テストファースト 2.Redにする 3.実装する 4.Greenにする 5.テストが動くままでリファクタリング 黄金の回転! Clean Codeの Martinいわく TDD三原則 テストファースト 失敗するテストを書くまでは次のテストは書かない 失敗するテストがある限り次のプロダクトコードは書かない テストファーストの重要性 テストを書くには何が必要なのか 入力 出力 クラス、メソッドの責務。パターンわけなど →これって設計だよね 作りたいものを明確にしてからじゃないといけない あやふやな仕様を明確にする→テストファーストによって 赤→緑になるときもちいいよね! TDDのための一般的な理由 和田さんのスライドをみましょう 健康のため 素早くフィードバックをえる テストコードのリファクタリングは? 同じテストコードが複数出てきたらし始める感じ
ソフトウェアテスト入門
@sassy_watson さん (Androidテスト部)
テスト初心者Androiderのためのソフトウェアテスト入門
テーマ テストの種類について テスト技法について 何をテストしたいかを把握するためのテストの種類を明確にする V字モデルに基づいて 要件定義 やりたいことを明確にする 基本設計 画面などの基本的な設計 詳細設計 実装のための設計(シーケンス図とかクラス図とか) 実装 実装 ざっくり分類 プログラムで確認するテスト ・単体テスト JUnitとかで確認するよ 細かい単位でテスト 直流の電球回路で1個ずつテストしたらつなげてもつくことがわかるよね 他のモジュールに依存するユニットテストをするには 他モジュールが何を返すのかわからん→Mockを使いましょう! android.test.mockパッケージのクラスを使ってテストできる overrideしないと基本的にExceptionをはく android-mockというフレームワークもある ・結合テスト androidだとユニットテストと結合テストの境界が曖昧 他のActivityに依存したりが多いから Androidだとユニットテストしづらいから結合テストでがんばるのもアリ 実機で確認するテスト システムテスト 仕様通りに動くかどうかのテスト 仕様書からテストケースを抽出する必要があり 機能だけでなくて、Performance、Securityとかの非機能要件も考慮する必要があるよ 受け入れテスト 主にお客様が自分たちの要求を満たしているかを確認するテスト テスト技法について テストを効率的にするにはどうすればいいのか →テスト技法を用いてテストしよう! よりよりテストとは 多くのバグを発見 少ない時間で発見 代表的なもの 同値分割 類似値をグルーピングしてそれらが同じ値がかえるか →1とか3とか5とかの値を入れても同じ値が返ってくる →グループの代表値のみ入れてテストの数を減らす 境界値分析 同値分割(グルーピング)した境界値に注目 境界値はバグが出やすい 255文字入力出来るEditTextの場合: →0とか−1とか1とか255とか256とか デシジョンテーブルテスト 入力と出力の関係表を元にしたテスト 他のテスト技法 状態遷移テスト 原因結果テストなど… テスト技法ポジションマップ テスト技法について、これはどのへんに効果的だよとかの図。よさそう マインドマップからはじめるソフトウェアテスト 上層の話になるかも テスト設計の勉強に ソフトウェアテスト技法ドリル テスト技法をドリル形式で テスト設計の勉強に Androidならテスト部の記事を! テストはあくまでもバグを出すための手段であり、 テスト=目的となってはいけない 品質/コスト/納期とかのバランスを考えよう
GroovyなAndroidテスト
@alterakey さん (埼玉支部・デ部 「炎のAndroid開発道場」の著者の一人 android-runner開発者)
標準のAndroid testing frameworkは遅い そこでGroovy! privateメソッド呼べるし Androidだと簡単に使えない Discobotとか実績あり? JVMのテストならOK! JVMでテストとは Robolectric AndroidアプリをJVMでテストするためのフレームワーク Android ant runner antのみ現在は EclipseとかIDEとかは・・・ Unix限定 そもそもテストとは テストとは設計手段である Robolectricはパラメタライズドテストが使えない Robolectricを使わなければパラメタライズドテストできるけど //詳しくはスライドを見る。内容濃い
実務に近いテストコードを書いてみる
@kimukou2628 さん (Androidテスト部)
Try_to_writecode_practicaltest #atest_hack
テストってググり駆動できないよね 昔はWebページの広告枠をかう→いまはアプリの枠を買う Mediationが注目 端末ごとのハマりポイントなど //スライドにまとまっている。いい内容。あとGalaxy Nexus安定
iPhoneでのunit test
Twitter4jとテスト (タイトル変更された模様)
@yusuke さん (Twitter4J開発者。「Twitter APIポケットリファレンス」著者)
Twitte4jの開発、テスト環境について 環境 IDEA/maven/jenkins/jira/github/sonatype Android環境の自動テスト Android Emulator Plugin Twitter4jとテスト まずAPIとの疎通確認 アナウンス無しに仕様変更になる場合がある →テストが必要(CI) Twitte4jを使うアプリケーションでは Twitter4jがやってくれることはテストしないよ パラメータ、レスポンスの型 APIコール失敗時のリトライ ビジネスロジックは必要 正常系はあまり問題ない 異常系 ↓が同じ状況を作り出すのが面倒 twitterが落ちてるとか レートリミットに到達した場合のテスト メトリクス分析から見るソフトウェア品質の本 データ指向のソフトウェア品質マネジメント テストは動的な品質向上・担保の手段 静的な手段としては コンパイラ 静的解析 コードメトリクス 外部APIとかと接続する箇所は仕様に頼り過ぎない →Twitter API1.1で廃止予定のメソッドが今は呼べたり、OAuth無しでいけたり →ドキュメントが追いついていないとか テストケースの失敗について たまたま失敗しているのか→そのままでいいよね 継続的に失敗しているのか→対策しないとやばい jenkinsでテストしている場合はテストごとのageで何回連続でテスト失敗しているかが分かる jenkinsのテスト結果を待って次の作業は効率悪いので、テスト中に別のことをやり始める 異常系テストはMockを使う
logcatをコンソールで色分けしたりフィルタしたりする
コンソールでlogcatを見るときに色分けしたり開発中のアプリだけフィルタしたりする方法
- 色付け
いい感じに色付けしてくれるスクリプトがあるのでそれを使いましょう。
Jeff Sharkey » Modifying the Android logcat stream for full-color debugging
使い方はこんな感じです。logcat -v でのフォーマット指定は対応していないみたいです。
$ adb logcat | coloredlogcat.py
- フィルタ
locat単体ではpidや特定文字列でフィルタ出来ないのでawk使ったりするのがいいんじゃないかなと思います。
例えばアプリ名sampleとpidの192でフィルタして色分けする場合は以下になります。
$ adb logcat | awk '/\(.*192)\/ || /sample/' | coloredlogcat.py
この他、logcatのオプションでtagとpriorityでフィルタもできます。
タグhogeだけ表示する場合はタグ指定して、残りは'*:s'で落とす感じになります。
$ adb logcat 'hoge:v' '*:s'
これでログだけ見たい時にIDE立ち上げなくてもいいので便利。
Android + ScalaでProGuardの設定をする
Androidでtwitter4jなどの外部ライブラリを使うと、ProGuardがご丁寧にクラスを除外してくれてClassNotFoundExceptionなどが出たりして困ります。
その場合はProGuardにオプションを与える必要があります。
sbt android pluginではbuild.scalaあたりに以下のようにproguardOptionを追加してやればOKです。
設定したオプションはsbtの以下コマンドで確認出来ます。
> android:proguard-option [info] -dontnote ** [info] -keep class twitter4j.** {*;}
ちなみにproguardOptionはパラメータ毎に改行で区切る必要があるので複数行リテラル使っていますが、\nを入れてやれば普通の文字列でも大丈夫です。
全然関係ないけどgist記法簡単ですげー便利だね。
第2回 Androidテスト祭りにいってきた。 #atecfes2
第2回 Androidテスト祭り : ATND
に行ってきたのでメモ書きや感想などを書いておきます。
まとめ記事、Togetterはこちら
第2回 Androidテスト祭り に参加してきた #atecfes2 - Shinya’s Daily Report
2012/04/28 第2回 Androidテスト祭り #atecfes2 - Togetter
招待講演「Androidのセキュリティと品質保証の問題について」
- 谷口 岳 様 (タオソフトウェア株式会社 代表取締役)
Androidセキュリティ本のタオソフトウェアさんのお話。
Android Security 安全なアプリケーションを作成するために
- 作者: タオソフトウェア株式会社
- 出版社/メーカー: インプレスジャパン
- 発売日: 2011/12/29
- メディア: 大型本
- 購入: 5人 クリック: 124回
- この商品を含むブログ (20件) を見る
資料は以下URLの2012/4/27 第2回テスト祭りからダウンロード可能。
Android Security - 安全なアプリケーションを作成するために
- アプリ内の著作権データについて
- データはすべて簡単に抜き取れる
- PCと接続してAPK抽出
- APKは実はzipファイルなので、拡張子を変えると構成ファイルを取り出せる
- Android上でアプリによるリソース吸出し
- 参考アプリ: tPackageExplorer
- アプリケーションのリソース情報を認識可能
- PCと接続してAPK抽出
- データはすべて簡単に抜き取れる
-
- まとめ
- データの抜き取りは簡単に出来る
- アプリ内にセキュアなファイルはおいておかない
- サーバからデータを取得など
- データの抜き取りは簡単に出来る
- まとめ
- Androidのセキュリティ構造
- 署名
- 自己署名で、アプリが同一作者のものかどうかの判断に使用
- ファイルパーミッション
- Linuxのそれと同じ
- ファイルの場所によって必要な権限が異なる
- アプリケーションデータディレクトリのものはroot取らない限り見れない
- SDカード内のデータは権限なしで読み取り可能
- Intent使用時の注意
- ActivityManagerログにActivityに送られたインテントの内容が出てくる
- ID, パスワードなど書いていた場合は出てくるので注意
- Android 2.3で隠蔽されるようになった
- インテントのデータは他アプリで取得可能なもの
- 他の方法でデータは渡そう
- インテントデータの暗号化(ただし、あまり良くない方法)
- ActivityManagerログにActivityに送られたインテントの内容が出てくる
- 署名
ユーザとベンダで生討論!みんなでつくる「受入れテストガイドライン」
- ユーザサイド : 株式会社電通プラットフォームビジネス局開発部 様
- ベンダサイド : 生路 茂太 松木 晋祐(Androidテスト部)
- こういう勉強会ってユーザサイドの話があまり出てこないよね
- 無茶をいってユーザサイドの方々に来てもらいました
- エンジニアとのパートナーシップ構築の一例
- カヤックブログ
- ブログがあると技術力やアプリの動作イメージなどが分かりやすい→依頼しやすい
- アプリの魅力性について
- こんな感じのが欲しいんだけど→言語化しづらい
- ふわっとした部分の話って実はアプリが面白くなるかどうかでとても重要なのでは
- 魅力性を定義
- ゆか体操の技と点数のようなイメージ
- 発注側と開発側での意識の齟齬も少なくなる
- フランスで芸術が優れているのは批評家が多くいるため
- 批評という形で芸術の魅力が定義されている
CI導入ライブ-jenkins ci server
- h.suehiro(Androidテスト部)
- Android Hacks 著者の1人
- Jenkins のコミッター
Android Hacks ―プロが教えるテクニック & ツール
- 作者: 株式会社ブリリアントサービス
- 出版社/メーカー: オライリージャパン
- 発売日: 2010/09/04
- メディア: 単行本(ソフトカバー)
- 購入: 31人 クリック: 761回
- この商品を含むブログ (39件) を見る
-
- Antがないプロジェクトを実行するには
- コマンドで生成できる
- Antがないプロジェクトを実行するには
>| android update project
Android Bazaar and Conference 2012 Spring に行って来ました
ABC2012で参加したセッションのメモや感想をつらつらと
イベントの内容や講演資料は公式に上がってたりします
http://www.android-group.jp/conference/abc2012s/
-
- 情報の共有について
- Facebook上場時のLetter From Mark Zuckerbergが的確に示している
- http://www.sec.gov/Archives/edgar/data/1326801/000119312512034517/d287954ds1.htm
- 情報の共有について
総務省の基調講演は途中で抜けてあまり聴いてないので割愛
- スマートフォン時代における新たな広告収益戦略(グーグル株式会社 オンラインパートナーシップグループ/坂本達夫)
-
- DLされているアプリについて
- DLしたことある人→無料:96%, 有料:48%
- DLしたアプリの数→無料:27.7本, 有料:4.8本
- 有料アプリのみをターゲットにした時点で半数以上のユーザには触ってもらえない
- DLされているアプリについて
-
- 収益モデルについて
- 有料アプリ(DL時)、アプリ内課金、広告
- 有料、無料+広告といったアプローチもよくある
- 収益モデルについて
-
- 広告モデルのポイント
- 広告を入れる前提のUI設計
- ユーザの操作を阻害しない
- アプリ作ってから広告を後付けすると評価下がるし大変
- 広告モデルのポイント
-
- Permissionについて
- Permission自体はJavaの機能
- Permissionだけでは同意したことにならない
- Permissionについて
-
- 同意確認について
- 個別的選択オプトイン
- アプリ使用中に該当機能を使用するときに同意確認
- 同意確認について
-
- 端末IDについて
- 端末IDは不要、収集するべきではない
- 端末IDは偽装可能
- アプリ内でローカルなIDを使用して識別する
- 端末IDについて
- 「ADB(Android Debug Bridge) そのしくみから応用まで」(京都マイクロコンピュータ株式会社/小林哲之)
-
- adbの構成について
- adb client: adbコマンド
- adbd: target device側のdaemon
- adb server: clientとadbdを中継するproxy的な役割
- adbの構成について
-
- adb serverについて
- clientとadbd間にコネクションをはる
- USB/TCPどちらも可能 → clientでは通信経路を考える必要なし
- adb serverについて
- 検証、SEAndroid(Android セキュリティ部/矢倉大夢)
-
- SEAndroidについて
- ベースはSELinux
- アプリによる権限昇格防止、データ漏洩の防止
- コンテキストによってデータを保護
- /system/bin以下はどのユーザも書き込めない
- root取られても大丈夫、そもそも脆弱性つきにくいからroot取りづらい
- アプリから他アプリへの干渉を避けれる
- ただしコンテキストはきちんと設定する必要あり(デフォルトでも堅牢)
- SEAndroidについて
初めてABCに参加したけど技術的なセッションの他にマネタイズなどの
ビジネス系なセッションが多かったのが印象的だった。
もちろんコアなセッションもあって人気なものは5分前満席って状態も。
実は一番聴きたかったセッションが満席で入れなかったりしてアレだった。
別件があったので最後まで居れなかったのだけど知識不足を感じるにはとても満足で良かった。
もし次があればもっと技術寄りなやつとかUIなんかを中心に回ってみたい。