Twitter4Jとテスト

  • 5,800 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
5,800
On Slideshare
0
From Embeds
0
Number of Embeds
9

Actions

Shares
Downloads
10
Comments
0
Likes
12

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Twitter4Jとテスト @yusuke#atest_hack Yusuke Yamamoto
  • 2. ↑を開発しています Java用Twitter APIライブラリ サポートプラットフォーム • JDK1.4.2∼ • Google App Engine • Android#atest_hack Yusuke Yamamoto
  • 3. Twitter4Jとテスト• Twitter4Jの開発・テスト環境• Twitter API1.1対応• (時間があまれば)Androidの本当にあった怖い話#atest_hack Yusuke Yamamoto
  • 4. Twitter4Jの開発で利用しているツール IntelliJ IDEA: github / Jiraに対応 JUnit: テストツール Maven: ビルドツール Jira: issue管理ツール スライドに登場するロゴ、製品名は各社、各コミュニティの登録商標です#atest_hack Yusuke Yamamoto
  • 5. Twitter4Jの開発で利用しているツール Maven Central Repository 2008年6月∼ Hudson / Jenkins: CIツール 2009年3月∼ 2011年2月∼ github: ソーシャルコーディングハブ 2009年4月∼ Sonatype Nexus: Mavenプロジェクト管理 2010年1月∼ スライドに登場するロゴ、製品名は各社、各コミュニティの登録商標です#atest_hack Yusuke Yamamoto
  • 6. Twitter4Jの開発環境 release:perform git push origin master oss.sonatype.org service hook promote開発マシン CIサーバ github.com repo1.maven.org#atest_hack Yusuke Yamamoto
  • 7. Android環境のテスト#atest_hack Yusuke Yamamoto
  • 8. Android環境のテスト• AndroidはJavaじゃない• DalvikはJVMじゃない 参考: Androidの本当にあった怖い話 http://www.slideshare.net/yusukey/android-6595931#atest_hack Yusuke Yamamoto
  • 9. Android環境のテスト• Twitter4JのAndroid環境のテストの現状 ‣ 報告があれば直す ‣ リグレッションテストはしていない• Android環境のテストも自動化すべき ‣ Android Emulator Plugin エミュレータのインストール/実行、 OSバージョン、スクリーンサイズ別のテストなどが簡単#atest_hack Yusuke Yamamoto
  • 10. Twitter4Jとテスト#atest_hack Yusuke Yamamoto
  • 11. Twitter4Jとテスト• Twitter4Jのテスト • APIの疎通確認 • ドキュメント通りの挙動をしているか確認 • 仕様変更(アナウンスなしに変更になることも)に対応#atest_hack Yusuke Yamamoto
  • 12. Twitter4Jとテスト• Twitter4Jを使うアプリケーション • テスト不要 - 非ビジネスロジック ‣ パラメータ、レスポンスの型 ‣ APIコール失敗時のリトライ • 要テスト - ビジネスロジック ‣ 正常系 ‣ 異常系 • レートリミット到達#atest_hack • API呼び出し失敗時の挙動 Yusuke Yamamoto
  • 13. テストの目的• ソフトウェア品質の向上、担保• 品質を保つために他に出来ること・・ • コンパイラにチェックさせる • メトリクス分析#atest_hack Yusuke Yamamoto
  • 14. • 来週本が出ます データ指向のソフトウェア品質マネジメント メトリクス分析による「事実にもとづく管理」の実績#atest_hack Yusuke Yamamoto
  • 15. Twitter4JをTwitter API1.1 に対応させてみた @yusuke#atest_hack Yusuke Yamamoto
  • 16. Twitter API 1.1の主な変更点 • レートリミット方式の更新 • いくつか新しいAPIの導入 • エンドポイントのベースURLの変更http://api.twitter.com/1.1/users/show.json?screen_name=yusuke • 全APIが要OAuth認可に • いくつかのAPIが廃止 • いくつかのAPIが追加 #atest_hack Yusuke Yamamoto
  • 17. 今回のフォーカス • レートリミット方式の更新 • いくつか新しいAPIの導入 • エンドポイントのベースURLの変更http://api.twitter.com/1.1/users/show.json?screen_name=yusuke • 全APIが要OAuth認可に • いくつかのAPIが廃止 • いくつかのAPIが追加 #atest_hack Yusuke Yamamoto
  • 18. JUnitに期待すること• テストケースでAPI1.1非互換部分を洗い出せる OAuth認可せず呼び出している箇所 廃止されたAPIを呼び出している箇所#atest_hack Yusuke Yamamoto
  • 19. 変更したコード#atest_hack Yusuke Yamamoto
  • 20. 実際• テストケースひとつしか失敗しない#atest_hack Yusuke Yamamoto
  • 21. わかったこと• Twitter API1.1でも依然OAuth認可なしに呼び出 せる(いまのところ)• Twitter API1.1で廃止されたメソッドもまだ呼び 出せる(いまのところ)#atest_hack Yusuke Yamamoto
  • 22. わかったこと• Twitter API1.1でも依然OAuth認可なしに呼び出 せる(いまのところ)• Twitter API1.1で廃止されたメソッドもまだ呼び 出せる(いまのところ) ドキュメント通りの挙動になることに Twitter4Jが備えておく必要がある#atest_hack Yusuke Yamamoto
  • 23. 現状できる対策(1)• 認可をを確認するコードを追加・テスト実行#atest_hack Yusuke Yamamoto
  • 24. 現状できる対策(2)• 認可無しで呼び出すためのフィールドを削除• コンパイル#atest_hack Yusuke Yamamoto
  • 25. 現状できる対策(3)• 廃止されたAPIを目チェック ・・・・・・・・・・・・#atest_hack Yusuke Yamamoto
  • 26. まとめ• テストは品質向上・担保の「動的な」手段• 静的な手段も検討 • コンパイラにチェックさせる • 静的解析 • コードメトリクスで分析• 外部と接続する箇所は仕様に頼りすぎない#atest_hack Yusuke Yamamoto