Twitter4Jとテスト
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • 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
6,910
On Slideshare
5,123
From Embeds
1,787
Number of Embeds
11

Actions

Shares
Downloads
9
Comments
0
Likes
12

Embeds 1,787

http://samuraism.jp 908
http://d.hatena.ne.jp 811
https://twitter.com 37
http://freerss.net 9
http://webcache.googleusercontent.com 9
http://s.deeeki.com 5
http://pinterest.com 2
http://tweetedtimes.com 2
http://sakura-bird1.hatenablog.com 2
http://131.253.14.98 1
http://translate.googleusercontent.com 1

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