Appresso Engineer Blog

アプレッソのエンジニアが書く技術ブログです。

JUnitを試してみる

アプレッソ品質マネジメント部の磯です。最近メインDAWをableton Live8 から Live9 へバージョンアップしようか悩んでいます(ニッチな話)。

ちょこちょことアプレッソ技術ブログにエントリを書かせていただいてますが、今回はAdventCalendarにも進出してまいりました。 5日目の記事になります。

qiita.com

ではまず自分語りから始めさせていただきましょう!!

自分語り

私はずっとQA領域でお仕事してきたわけなのですが、一口にQAといいましても現場により呼ばれかたは様々です。

  • QA
  • テスト
  • 検証

しかし、実態は同じだったり異なったり・・・。

一般的にはQAというとプロセスについて着目した活動が多い印象があります。 一方テストというとシステムテストなどのフェーズ、GUIを伴った対象を動かして得た結果から品質を確認していくといったところでしょうか。

f:id:yoiso:20161204174810p:plain

このあたりも現場によっては統合テストよりになることもあるかと思います。

ちなみにアプレッソにおける品質マネジメント部の業務としては、上記の一般的なQA/テストで行われる業務のハイブリッドとなっています。

テストの自動化

さて、今回はテストの自動化に絡んだお話をしたいと思っています。

以前より、わたしの生息するQA/テスト界隈でも自動化の波が押し寄せてきています。

Selenium Selenium - Web Browser Automation

Appnium Appium: Mobile App Automation Made Awesome.

かつては高価なプロプライエタリのソフトが主流だった中で、OSSも洗練され大きく利用されるようになってきました。

こういったものを利用することで、基本的なテストは自動化を行って、よりクリエイティブなテストは手動で行っていくということが実現できます。

また、これらはプログラマブルである以外にも、実際の操作を記録して再現するといった機能を有しています。

以前にこういったエントリを書きました。

appresso.hatenablog.com

単体テストの自動化がアジャイルな体制においての品質保証の土台として大きく貢献する、ということでした。

また、アプレッソではスクラムによる開発を行っていますが、野口からのエントリにもありましたとおり、機能横断的なチームという点では課題があります。

appresso.hatenablog.com

現状において、GUI上からのテストについては自動化を進めていますが、さらなるスピード感をもって臨機応変にQAしていくためにはさらに必要なのはなにか・・・。

そうだ! プログラミングを学んで単体テストにも手を広げていねば!と思い至りました。

(そもそも「コード書けんのかい!」というツッコミもありそうですが、職能的に書けることが必須ではないため、往々にしてそんな状態の人が多いのではないかと思われます。)

というわけで、私はそこそこおじさんなのですが、新卒社員の様にこつこつとJavaを学んでいるところなのであります。

JUnit はじめの一歩

前置きが長くなりましたが、JUnitを試してみましょう!

導入

Eclipse, IntelliJ IDEAなどメジャーなIDEにはあらかじめJUnitが付属しているため、あらためてインストールする必要はありません。

今回はEclipseを使っています。

新規メニューから「その他...」を選択するとウィザードが起動します。

f:id:yoiso:20161205012347p:plain

たしかにJUnitテストケースが作成できますね!

つかってみる

今回は以下のような(かわいらしい)コードを使って単体テストを書いてみました。

入力値が偶数/奇数をチェックするクラス(hogehoge)およびテストケース(hogehogeTest)です。

入力値が2で割りきれる場合に「偶数です」、2で割り切れない場合に「奇数です」と文字列が返されます。

(なぜかはてなのスーパーpre記法がうまく働かなかったので、gistから貼り付けています。)

これを実行してみると、Eclipseの左ペインに結果が表示されます。

f:id:yoiso:20161205013320p:plain

緑になりました!

さて・・・現状ではここまでですw

おわり

はじめの一歩というよりも、下駄箱から靴を取り出そうとしたくらいではありますが、俺たちの本当の戦いはこれからだ!マインドで日々精進していきたいと思っております!

(追記12/6: JUnitをJunitと記載していたのを修正・・むむ!)