他にない、上質なITを

Column

単体テストや結合テスト等のシナリオ作りのヒント


Pocket

品質の高いテストを行うためには、何をテストするかという「テストシナリオ」をどう書くのかが重要になります。テストがいやすいシナリオ=判断条件がシンプルであること。そう言って過言はないでしょう。

その為、当方が単体テストや結合テストを行うにあたって気をつけている点についてポイントをまとめてみました。

分岐の条件は少なくしよう

分岐が複雑になればなるほど、網羅しなければならない条件が増えます。だるいですね。

これだけでも、分岐が2箇所(a or b)あります。また、aかbの条件が各々True/Falseの4パターンがあるので、全部の分岐を網羅して条件もチェックすると4パターン増えます。4パターンの内容は以下のとおりです。

  1. a = True, b = True
  2. a = True, b = False
  3. a = False, b = True
  4. a = False, b = False

当方が最も好むif文は以下のような書き方です。

aであるか否かだけを判断すれば良くなります。複合条件はなるべく排除すべきです。入れ子構造にすれば今までのロジックに手を入れないで済むかもしれませんが、闇の深さは確実に深くなります。

早期return

すべての分岐を通してからreturnさせるみたいなコードは、テストケースを書くのが大変です。データを返してよい分岐が存在するなら、それを速く返すようにしましょう。テストケースが書きやすくなります。

このように書き直しても同じことです。例外的な状況を先に検知してバリデーションをする。バリデーションに通ったら初めて処理が行われるという書き方を好んでいます。

引数の型チェックは原則不要

引数チェックは、ユーザーが自由に入力されるデータが対象になる場合は必要になります。Pythonだとinput関数の戻り値とか、Webアプリのようにブラウザから自由に入力される項目等は、バリデーションとしての型チェックは必須です。

しかし、プログラム内部でフィルターされた値しか代入されないことがわかっている単体テストにおいては、そういったチェックは書かなくても良いでしょう。実行できないデータ型が代入されてしまうケースがある関数なら、例外を投げて終わりで良いと思っています。

ビジネスロジックをテストしよう

ライブラリに依存しているコードのテストは要らないです。JSONのパースがちゃんと出来てるか、ライブラリのテストコードを書いて確認するみたいなことは時間の無駄です。テストをしなくてはならないのは、ビジネスロジックです。特にModel部分ですね。

SQLを伴うビジネスロジックのテスト

以下のようなまとめ方をしています。

データ登録
登録時
正常系 入力値がそのまま正しく保存されているか
異常系 PURERITY
登録時
正常系 入力値がそのまま正しく保存されているか
異常系 PURERITY
登録時
正常系 入力値がそのまま正しく保存されているか
異常系 PURERITY
登録時
正常系 入力値がそのまま正しく保存されているか
異常系 PURERITY

多少足りないことはあると思いますが、概ね網羅できているはずです。特にDBアクセスが伴うようなテストケースを洗い出す時に活用します。

状態によって振る舞いが変わる

見過ごしがちなのがこれです。権限やロールによってできる・できない、見せる/見せないがある場合。また、在庫のあるなしによって処理動作が違う場合等。同じデータでも状態によってすべきことが違うのであれば、ちゃんとテストケースを書きましょう。

何かしらお役に立てば幸いです。


おすすめ記事

最後までお読みいただきありがとうございました。
こちらの記事にご興味を持っていただいた方には、こちらの記事もおすすめです。

執筆者について

著者

(株) クオリティスタート 代表取締役

湯本堅隆(YUMOTO Michitaka)

略歴

1979年生まれ。ISPの電話サポートのアルバイトをきっかけにIT技術に興味を持ち、2003年にアイ・ティ・フロンティア(現タタ・コンサルタンシー・サービシズ)に新卒で入社。

SIer在籍期間からブログ「GoTheDistance」でSIerを巡るIT業界のあり方・エンジニアのキャリアについて記事を書き、累計はてなブックマーク数40,000を超えるブログになりました。

「ITを使いこなしたいなら、ユーザー企業は内製すべき」と主張しているうちに、2009年から雑貨卸の有限会社 エフ・ケーコーポレーションで内製化を1人で担当するはめに。メーカー送料ロットのない雑貨卸というビジネスモデルをITシステムを実装することで確立し、経済産業省が主催するIT経営実践認定企業に選ばれました。

「システムを作る人材や会社」はあっても「何が正しいITシステムなのか」を事業会社の立場で考え、デザインできる人材が枯渇している。

この課題を解決したいという思いから、会社を創業しました。

重度の野球好きで、東京ヤクルトスワローズのファンです。



IT企画の進め方

ITプロジェクトの進め方、公開中

事業を運営するために必要なITや業務システムの企画の作り方、プロジェクト担ってからの進め方をワークフローという形で完全無料公開しています。10000文字超えの力作です。是非御覧ください。

ITプロジェクトの進め方

IT戦略・IT企画の無料相談承ります。

ITプランナーが御社にお伺いして、御社のシステム企画のディスカッション・パートナーをさせて頂くサービスです。60分時間限定ですが、IT企画のモヤっとスッキリさせるお手伝いをさせて頂けたら。

ITプランナーへの無料相談

お問い合わせはこちらから