0
Twitter4Jとテスト                 @yusuke#atest_hack                   Yusuke Yamamoto
↑を開発しています              Java用Twitter APIライブラリ              サポートプラットフォーム               • JDK1.4.2∼               • Google Ap...
Twitter4Jとテスト• Twitter4Jの開発・テスト環境• Twitter API1.1対応• (時間があまれば)Androidの本当にあった怖い話#atest_hack                   Yusuke Yamamoto
Twitter4Jの開発で利用しているツール              IntelliJ IDEA: github / Jiraに対応              JUnit: テストツール              Maven: ビルドツール ...
Twitter4Jの開発で利用しているツール              Maven Central Repository                                         2008年6月∼             ...
Twitter4Jの開発環境                                       release:perform              git push origin master                  ...
Android環境のテスト#atest_hack         Yusuke Yamamoto
Android環境のテスト• AndroidはJavaじゃない• DalvikはJVMじゃない   参考: Androidの本当にあった怖い話   http://www.slideshare.net/yusukey/android-659593...
Android環境のテスト• Twitter4JのAndroid環境のテストの現状         ‣ 報告があれば直す         ‣ リグレッションテストはしていない• Android環境のテストも自動化すべき         ‣ An...
Twitter4Jとテスト#atest_hack                   Yusuke Yamamoto
Twitter4Jとテスト• Twitter4Jのテスト    •     APIの疎通確認    •     ドキュメント通りの挙動をしているか確認    •     仕様変更(アナウンスなしに変更になることも)に対応#atest_hack ...
Twitter4Jとテスト• Twitter4Jを使うアプリケーション    •     テスト不要 - 非ビジネスロジック         ‣ パラメータ、レスポンスの型         ‣ APIコール失敗時のリトライ    •     要...
テストの目的• ソフトウェア品質の向上、担保• 品質を保つために他に出来ること・・    •     コンパイラにチェックさせる    •     メトリクス分析#atest_hack               Yusuke Yamamoto
• 来週本が出ます                データ指向のソフトウェア品質マネジメント              メトリクス分析による「事実にもとづく管理」の実績#atest_hack                      Yusuke...
Twitter4JをTwitter API1.1              に対応させてみた                @yusuke#atest_hack               Yusuke Yamamoto
Twitter API 1.1の主な変更点  • レートリミット方式の更新  • いくつか新しいAPIの導入  • エンドポイントのベースURLの変更http://api.twitter.com/1.1/users/show.json?scre...
今回のフォーカス  • レートリミット方式の更新  • いくつか新しいAPIの導入  • エンドポイントのベースURLの変更http://api.twitter.com/1.1/users/show.json?screen_name=yusuk...
JUnitに期待すること• テストケースでAPI1.1非互換部分を洗い出せる   OAuth認可せず呼び出している箇所   廃止されたAPIを呼び出している箇所#atest_hack                  Yusuke Yamamoto
変更したコード#atest_hack             Yusuke Yamamoto
実際• テストケースひとつしか失敗しない#atest_hack          Yusuke Yamamoto
わかったこと• Twitter API1.1でも依然OAuth認可なしに呼び出      せる(いまのところ)• Twitter API1.1で廃止されたメソッドもまだ呼び      出せる(いまのところ)#atest_hack        ...
わかったこと• Twitter API1.1でも依然OAuth認可なしに呼び出      せる(いまのところ)• Twitter API1.1で廃止されたメソッドもまだ呼び      出せる(いまのところ)              ドキュメン...
現状できる対策(1)• 認可をを確認するコードを追加・テスト実行#atest_hack                Yusuke Yamamoto
現状できる対策(2)• 認可無しで呼び出すためのフィールドを削除• コンパイル#atest_hack                Yusuke Yamamoto
現状できる対策(3)• 廃止されたAPIを目チェック               ・・・・・・・・・・・・#atest_hack                   Yusuke Yamamoto
まとめ• テストは品質向上・担保の「動的な」手段• 静的な手段も検討    •     コンパイラにチェックさせる    •     静的解析    •     コードメトリクスで分析• 外部と接続する箇所は仕様に頼りすぎない#atest_ha...
Upcoming SlideShare
Loading in...5
×

Twitter4Jとテスト

5,981

Published on

0 Comments
12 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,981
On Slideshare
0
From Embeds
0
Number of Embeds
10
Actions
Shares
0
Downloads
10
Comments
0
Likes
12
Embeds 0
No embeds

No notes for slide

Transcript of "Twitter4Jとテスト"

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

    Clipping is a handy way to collect important slides you want to go back to later.

×