2013年6月15日土曜日

JUnitとCucumberとSeleniumとGithubとJenkinsとSonarとHerokuと(LS研デモ用)

会社の研究会にLS研究会というのがあって、「アジャイル開発における開発・保守の品質保証」の研究チームのTA(テクニカルアドバイザー)をやらせてもらっている。

TAなんて言えるほど、自分には知見がないのだけれど、少しでもお役に立てればと思って、JUnitとCucumberとGithubとJenkinsとSonarとHerokuをからめたデモを用意してみた。
https://github.com/itagakishintaro/fizzbuzz-web


目的は3つ。

  1. 経験者が少ないので、アジャイル界隈でホットな技術について実際に触れていただきたい。
  2. ドキュメントをテーマにするのであれば、Cucumber、JUnitはドキュメントの代替になり得るので、どんなものかを知っておいていただきたい。
  3. アジャイルを体験したいという気持ちから試行する方向で話しが進んでいるが、きちんと仮説を立てた上でやらないと研究成果が得られないので注意してほしい。

作ったものは、Fizzbuzz問題を答えるWebアプリ。
View(JSP)、Controller(Servlet)、Model(POJO)各1クラスの最小スペック。

以下の順でやってみた。

1.JUnit

テスト名を日本語にするなどの工夫をして、
どこまで仕様書や設計書の代替になるかを議論してほしい。

参考


2.Cucumberで受入テスト

個人的には、お客様がCucumberの書式で仕様を書いてくれるとは思えないので、どうかと思うけど、アジャイルにおけるドキュメントという観点からは外せないと思う

※仕様書や設計書の代替という意味ではCucumberに軍配が上がるけど、個人的には、Groovy+Spockの方が好き。

参考


3.Githubに登録

試行をするときの参考にしてもらいたい。
あと、作ったものをみてもらうために。
eclipse+EGitでやってます。
慣れないうちは、eclipse+EGitで最低限のことだけでいいと思う。

ハマリポイント

  • SSH関連の鍵の設定。
  • 分散型に慣れてないと、ローカルのGitとGithubの関係がわからなくなる。
  • gitを知らないくせに、色々試したくなってしまう。
  • github for windowsのUIが素敵なので、eclipse+EGitとどっちにするか迷ってしまう。

参考

  • webで色々。

4.Jenkinsでビルド

Jenkins実践入門」を参考にした。
試行をするときの参考にしてもらいたい。

ハマリポイント

  • Githubとの連携(SSH関連)。

参考

  • webで色々。何となくできちゃった感じ。次もハマりそう。。。


5.JenkinsからSonarに連携

Jenkins実践入門」を参考にした。
試行をするときの参考にしてもらいたい。

ハマリポイント

  • プラグインと設定の書き方(動いてるけど、今もちゃんと理解できてない。)。
  • pomの書き方(動いてるけど、無駄な記述とかあると思う。)

参考

http://docs.codehaus.org/display/SONAR/Analyzing+with+SonarQube+Runner http://docs.codehaus.org/display/SONAR/Code+Coverage+by+Unit+Tests+for+Java+Project


6.JenkinsからHerokuにデプロイ(が、うまくいってない。)

以下のエラーがでてHerokuでTomcatがうまく動かない。。。
おそらく、lounchのmain.javaのwebappDirLocationがおかしいんだろうけど、よくわからない。

java.lang.IllegalArgumentException: Document base /app/src/main/webapp does not exist or is not a readable directory

ハマリポイント

  • JDKがデフォ6なので7に直さなきゃない(system.propertiesが必要)。
  • Dynosが動いてくれない(Procfileが必要)。
  • Tomcatが動かない(Main.javaが必要、pom.xmlに記述が必要)。

参考

https://devcenter.heroku.com/articles/add-java-version-to-an-existing-maven-app
https://devcenter.heroku.com/articles/procfile
https://devcenter.heroku.com/articles/create-a-java-web-application-using-embedded-tomcat


Herokuはもう少しがんばってみようかな。
あと、Seleniumを入れたいなぁ。
そういえば、SeleniumってCucumberと組み合わせできるのかな。
やっぱり、受入テストが画面操作じゃなきゃって気がするし。
よし、やってみよ。

→2013/6/17
Slenium+Cucumberをやってみた。
できるけど、cucumberでは@Before, @Afterがきかないみたいでちょっと無理矢理感が。。。
正しいやり方ってあるのかな?
2013/6/17
cucumber.annotationとHookを使えばいいのか。
→2013/6/20
Herokuへのアップもできた。
ただ、Jenkinsから実行するときgit publisherでうまくいかないのでwindowsコマンドにしてしまった。。。

1 件のコメント:

  1. こんばんは。

    テストの自動化、早くどこでも当たり前になって欲しいですね!

    返信削除