Calabash-AndroidによるBDDの実践とJenkinsによる「Living documentation」:スマホ向け無料システムテスト自動化ツール(6)(2/4 ページ)
本連載では、AndroidおよびiOSアプリ開発における、システムテストを自動化するツールを紹介していきます。今回は、Calabash-AndroidによるBDD実践のポイント、表形式の活用による仕様の発見、「Living documentation」で「見せる化」を実現する方法などについて解説します。
表形式の活用による仕様の発見
ここでは、CustomerPreviewActivity画面の「区分」欄(マーケティング区分)の仕様を、「SpecifyByExampleTable.feature」の表形式を活用した対話から引き出していく例を紹介します。
なお、B)はビジネスステークホルダーを、D)は開発者、テスターを指すこととします。
D)まず女性の場合、どのような区分がありますか?
B)成人女性の場合、「F1層」「F2層」「F3層」の3つの区分があります。
D)これらの区分は、何によって決まるのでしょうか?
B)年齢で決まります。「F1層」は20〜34歳、「F2層」は35〜49歳、「F3層」は50歳以上の女性です。
D)ということは、このようなイメージで合っていますでしょうか?
|name |email |gender|age|previewGender|division| |暁美 ほむら|homura.akemi@example.com |female|20 |女性 |F1層 | |鹿目 まどか|madoka.kaname@example.com|female|34 |女性 |F1層 | |美樹 さやか|sayaka.miki@example.com |female|35 |女性 |F2層 | |佐倉 杏子 |anko.sakura@example.com |female|49 |女性 |F2層 | |百江 なぎさ|charlotte@example.com |female|50 |女性 |F3層 |
B)はい、合っています。
D)ちなみに、この場合20歳未満だと、どうなるのでしょうか?
B)あぁ、その場合ですと、「T層」になりますね。
D)「T層」ですか! なるほど、このような感じですかね。
|name |email |gender|age|previewGender|division| |巴 マミ |mamiru@example.com |female|19 |女性 |T層 |
B)なお「T層」は、13〜19歳の男女が該当します。……あっそうそう、4〜12歳の男女を「C層」と呼んでいました。
D)それは重要な情報ですね! 書き足しておきましょう。
|name |email |gender|age|previewGender|division| |牧瀬 紅莉栖|christina@example.com |female|12 |女性 |C層 | |桐生 萌郁 |shiningfinger@example.com|female|4 |女性 |C層 |
※男性もデータ例として追加してみたところ見づらくなったため、今回の例では女性だけに絞っています。以下同様。
D)ちなみに、これですと4歳未満の場合は、どうなりますか?
B)4歳未満については、考えなくていいです。画面で入力できる年齢は4歳以上とします。
D)なるほど、画面で入力できるのは4歳以上と……。なお年齢が未指定だった場合は、どうしますか?
B)その場合は「分類外」としましょう。
|name |email |gender|age|previewGender|division| |漆原 るか |rukako@example.com |female| |女性 |分類外 |
D)まとめますと、次のイメージで合っていますでしょうか?(※注)
When I enter customer information and preview it as follows: |name |email |gender|age|previewGender|division| |暁美 ほむら|homura.akemi@example.com |female|20 |女性 |F1層 | |鹿目 まどか|madoka.kaname@example.com|female|34 |女性 |F1層 | |美樹 さやか|sayaka.miki@example.com |female|35 |女性 |F2層 | |佐倉 杏子 |anko.sakura@example.com |female|49 |女性 |F2層 | |百江 なぎさ|charlotte@example.com |female|50 |女性 |F3層 | |巴 マミ |mamiru@example.com |female|19 |女性 |T層 | |椎名 まゆり|mayucy@example.com |female|13 |女性 |T層 | |牧瀬 紅莉栖|christina@example.com |female|12 |女性 |C層 | |桐生 萌郁 |shiningfinger@example.com|female|4 |女性 |C層 | |漆原 るか |rukako@example.com |female| |女性 |分類外 |
B)はい! まさにこれです!
このように、実際に例を書いて一緒に見ながら対話を繰り返すことで、どのような仕様なのかを明確にしていくことができます。また、この対話で漏れを極力なくす形で例を埋めていくことで、漏れのないテストケースを作り上げることもできます。
さらに表形式は、ビジネスステークホルダーら非技術系ステークホルダーにとっても読みやすいものなので、協力を得やすく、また対話もしやすいです。
※注:年齢が未入力のケースを最初にテストする理由
ちなみにサンプルプログラムで実際に公開している「SpecifyByExampleTable.feature」では、年齢が未入力のケースを最初にテストするようにしています。
これは、以下の理由によります。
- 現状、CustomerPreviewActivity画面からCustomer Detail画面へ戻る処理を、(「press_back_button」メソッドで)端末/エミュレーターの「戻る」ボタンを押して実現している
- 上記の方法だと、「NumberPicker」に先に入力した値が残ってしまう
- 現時点では、「NumberPicker」に先に入力した値をクリアする方法がない
本来であれば、テスト結果はテストの実行順序によって変わらないようにすべきです。しかし本稿の執筆に際しては、前回の「NumberPicker」の課題を締め切りまでに解決できなかったため、応急処置としてこの方法を採用しました。
これこそ、まさに、「技術的負債」が生まれた瞬間です。「技術的負債」は、プロダクトの成長に反比例してプロダクト開発全体の効率を下げるため、できるだけ早い段階で解決するようにしましょう。
なお今回のサンプルプログラムについては、「com.nowsprinting.hellotesting.app.models.Division」に「マーケティング区分」の仕様がまとめられています。
public enum Division { DivisionM1, //M1層(男性20〜34歳) DivisionM2, //M2層(男性35〜49歳) DivisionM3, //M3層(男性50歳以上) DivisionF1, //F1層(女性20〜34歳) DivisionF2, //F2層(女性35〜49歳) DivisionF3, //F3層(女性50歳以上) DivisionC, //C層(男女4〜12歳) DivisionT, //T層(男女13〜19歳) DivisionNone //分類外
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- テスト自動化の歴史と今後、良い/悪い事例〜システムテスト自動化カンファレンス2013レポート
テスト自動化を開発の“武器”にするための3つのポイントや、“自動化”の良い事例、悪い事例など、テストの現場を「進化させる」知見が多数紹介されたカンファンレンスの模様をレポートする。 - ビジネス目標を見据えたテスト設計が肝!「DevOps時代のテスト自動化カンファレンス 冬の陣」開催
DevOpsの実践で肝となるソフトウェアテストの自動化。しかし@ITの読者調査でも50%以上が「テスト環境に課題あり」と回答した。これにどう対応すれは良いのだろうか? カンファレンス登壇者の言葉にヒントを探る。 - Kiwi+CocoaPodsで始めるiOSアプリの振る舞いテスト入門
現代の開発現場において欠かせないCI/継続的デリバリを、iOSアプリ開発に適用するためのツールやノウハウを解説する連載。今回は、iOSアプリの機能の振る舞いをテストするテスティングフレームワークの特長とインストールの仕方、主な使い方を解説します。 - Android SDKでビジネスロジックのテストを自動化するには
- 第2回Androidテスト祭りレポート:Android開発の上層テストで失敗しないためのポイントとは
セキュリティ設計や受け入れテストガイドライン、CIツールJenkins+コードレビューGeritt、テスト効率化ノウハウ、リモートテストサービスなど