バグを生まないためのソフトウェアテストとは?目的や機能をテストをエンジニアが解説|東京のWEB制作会社・ホームページ制作会社|株式会社GIG

バグを生まないためのソフトウェアテストとは?目的や機能をテストをエンジニアが解説

2022-01-11 勉強会

こんにちは! 広報の山口真央(やまお)です。

GIGでは毎月さまざまなテーマで勉強会を開催しており、現在はコロナウイルス感染拡大防止のためオンラインにて実施しています。

今回は、Workship開発チームの石倉彰悟さんから「バグを生まないためのソフトウェアテスト」というテーマでお話いただきました。エンジニアだけではなく、ディレクターやデザイナーなど、制作に携わるすべての担当者に向けて「テストの考え方」を教えてくれました!

■登壇者プロフィール

石倉 彰悟(いしくら しょうご)

Workship開発チーム・カスタマーサポートチームのマネージャー。ソーシャルゲーム開発を行うSAPでカスタマーサポートとして従事した後にエンジニアに転身し、大規模決済システムやEC系Webサービス等の構築を経験。2018年にGIGにジョイン。


そもそも、「ソフトウェアテスト」の目的って?

石倉:
さっそくですが、「ソフトウェアテスト」ってどんなイメージを持っていますか? 仕様書通りに作られているかをチェックする、バグをなくすなどの役割が真っ先に浮かんでくるかと思うのですが、じつはテストの役割はそれだけではありません。大切なのは「品質を保証すること」です。

品質を保障するには、

  • 要件をすべて満たせていること
  • バグがないこと
  • ユーザビリティが高く使いやすいこと
  • 動作が素早く快適であること
  • セキュリティ面で安心であること

など、さまざまなポイントをクリアしている必要があります。

これらのポイントにはそれぞれ対応するテストがあり、主に「機能テスト」と「非機能テスト」に分けられます。

「マイヤーズの三角形問題」を考えてみよう!

石倉:
「テストに触れるのも初めてだよ」という人もいると思うので、まずは触れてみましょう!こちらのワークに挑戦してみてください!

いかがですか? 答えは以下の通りです。システムが正常に作動する「正常系」と、エラーが出る「異常系」の2種類がありますよ!

「正常系」は考えていたけど、「異常系」を考えていなかった……という方も多いのではないでしょうか。ここから学べることはテストの回答は「機能仕様書から単純に抽出できるものではない」ということ。「何を、何のために、どんなテストを行うのか」を考えることが重要で、そのためには用意周到に計画・設計する必要があるんです。

【機能テスト】-テスト体制

石倉:
今回は時間の都合上、機能テストを中心に話を進めていきます。テストって、開発の最後に行うものと思っていませんか? ほぼ完成系のLPやサービスが出来上がってから、テストを行うのももちろん大切なのですが、制作の過程はそれだけではありません。要求分析や要件定義、基本設計、詳細設計……といったところで、必ずミスや漏れは出てきます。だからこそ、実装に対するテストだけで充分とは決して言えないのです!

この課題を解決するためには、都度テストをしていくことが重要です。V字モデルという考え方があるのですが、段階を踏むうえで都度テストを重ねることで、漏れなく品質を保証することにつながります。後から想定していなかったパターンに気づくことも多いので、チーム内やテスター同士、お客様とのコミュニケーションも大切にしていきたいですね。

【機能テスト】-テストケースを作るうえでの技法

石倉:
ここからは実際に、テストケースを作るうえでどんな技法があるのかをご紹介します!


1.ブラックボックステスト

論理的にテストするための技法として、ソースコードを意識しないブラックボックステストという技法があります。

主に

  • 同値分割法
  • 境界値分析
  • デシジョンテーブル
  • 状態遷移テスト

といったものがあります。代表例として「境界値分析」を紹介しますね。

たとえば、「0歳未満はありえないので入力できないようにする」「100歳以上も入力できないようにする」という要件を組み込んだ年齢を入力するテキストボックスをテストするとき。正常系の「50」、異常系の「-5」「105」のチェックしたら、テスト終了……なんて思っていませんか?

じつはこれ、大間違い。「境界値分析」は、境界となる値もチェックする必要があるんです。


2.ホワイトボックステスト

もうひとつ、論理的にテストするための技法として、ソースコードレベルで行うホワイトボックステストという技法もご紹介します。

これはカバレッジテストと呼ばれるもので、

  • 命令網羅
  • 分岐網羅
  • 条件網羅

といったものがあります。

「命令網羅」は、すべての処理が1回でも動くことを確認すること。「分岐網羅」は条件式のすべての組み合わせをテストすること。「条件網羅」は条件分岐内の条件も組み合わせてテストをすることです。

これらをすべて完璧にこなすことって、じつは難しいですよね。でも、品質を保証するためには避けては通れない道。ケースに対するOK、NG判断だけではなく、改善案があれば提案したり、テストケースを論理的に起こす技法を学んだりと、すぐに着手できることも多いはずです。

品質への強い信念を持って、「GIG」というブランドをこれからももっともっと高めていきましょう!

まとめ

今回は、「バグを生まないためのソフトウェアテスト」のレポートをお送りいたしました。

GIGにはエンジニア以外にも、ディレクターやデザイナー、編集者とさまざまな「制作」に関わるポジションがあります。GIGの看板を背負って制作をするメンバーひとりひとりに品質の考え方が根付いたら、きっとさらに「より良いセカイ」を作れるはずです。

毎回勉強会後に行っているアンケートでは「GIGの作ったものだから品質はいいよね、と言ってもらえるよう、私も強い気持ちを持って業務をしたい!」という力強いコメント寄せられていました!

これからもGIGはメンバー一同学びを続け、お客様に満足いただけるモノづくりを目指します!

GIGではGood is goodなチームを築ける仲間を募集しています!

現在、GIGでは「一緒に学びながら成長していきたい!」と意欲のある仲間を募集しています。詳しく話を聞いてみたい方はコチラからどうぞ!

話を聞いてみたい方も歓迎です。お気軽にご連絡ください!

山口 真央(やまお)

1995年生まれのフリーランス編集/ライター。GIGの広報をお手伝いしています。 お酒と野球と深夜ラジオとドライブと…と好きなことがありすぎて、結局お酒にもどってくるを繰り返し中。