ソフトウェアテスト自動化の教科書 〜現場の失敗から学ぶ設計プロセス

「ソフトウェアテスト自動化の教科書」のカバー画像
著者
林尚平はやししょうへい 著
定価
2,728円(本体2,480円+税10%)
発売日
2020.11.27
判型
A5
頁数
200ページ
ISBN
978-4-297-11736-8 978-4-297-11737-5

概要

「開発側は効率化されてきたのに、テストはいつも炎上ばかり」
「テストの数は増える一方なのに、コストを減らせと言われる」
「やっと自動テストを導入できたけど、逆に工数が増えている気がする」

開発技術の進化とともにテスト技術も着実に進化しているなか、テスト現場ではなぜこんな問題が絶えないのでしょうか? それは、自動テストに関する知識と設計方法を正しく知らないからだと言えるでしょう。
本書は、自動テストの基礎知識、設計・プロセスに焦点を当て、どのように進めればリスクを抑えながらコスト削減を実現できるかまとめた自動テストの教科書です。テスト会社のエンジニアとして数々の現場で自動テストを成功させてきた著者が、現場のさまざまな失敗例を交えながら、成功する設計ノウハウを伝授します。
テストに関わるすべてのエンジニア必携の1冊です。

こんな方にオススメ

  • ソフトウェア開発の現場でテストを担当するエンジニア
  • ITベンダーのテスト部門を担うSE
  • 自動テストに失敗した経験がある方

著者の一言

システム開発の技術は進化しつづけ、現場の効率化や開発の品質向上が進んでいます。一方、テストの現場は昔と変わらず炎上しがちで、昔ながらの根性論で乗り切っていることが多くみられます。テストの現場が炎上している原因は、テスト技術が進化していないからなのでしょうか。
じつは、テスト技術は確実に進化し向上しています。それでもテスト現場が落ち着きを見せないのは、なぜでしょうか。
テスト技術とは以下の2種類に集約されます。

  • 品質を上げる技術
  • テスト工数を削減する技術

テスト現場が落ち着きを見せないのは、不具合検出に焦点を合わせた「品質を上げる技術」のみを高めていることが多いからです。品質を上げる技術だけを高めても、実施する試験が次から次へと積み上がるだけで、テストの工数が膨れ上がってしまいます。今、テスト現場に必要なのは「テスト工数を削減する技術」です。自動テストとは、「テスト工数を削減する技術」に着目した技術です。
現在、テストの現場には多くの問題があります。システムの複雑化・大規模化が進む中、高い品質や開発スピードの短縮を求められ、テストに関する予算削減圧力は高まっています。また、昨今の新型コロナウイルス感染症拡大により、出社が制限され成果が出せない状況下で、省人化・効率化が求められています。さらに、働き方改革による作業時間の制限などもあり、これまでと同じやり方では通用しなくなっています。システムの品質は製品にとってもちろん重要ですが、テストにかける工数を削減することも同じく重要な問題となっています。
そんな状況を脱却するために、自動テストを試したことのある現場は多いでしょう。しかし、うまく自動化できないまま品質は上がらず、逆に工数が増えてしまっているのではないでしょうか。さらに、自分では自動化に成功していると思っていても、工数の削減について着眼せず、自動で動いていることに満足しているだけというケースも多くあります。
自動テストの失敗のほとんどは、自動テストに関する知識が足りず、自動テストをどのように設計すればよいかわからないまま作業を進めてしまったことが原因です。しかし、自動テストについて調べても、「自動化ツール○○を用いた自動テスト」といったツール限定の内容が多く、現場に合わないツールを無理に導入して失敗してしまうことが多いと思います。
本書では、自動テストの設計・プロセスに焦点を当て、どのように進めればリスクを抑え、工数を削減できるか説明します。また、自動テストの現場の失敗例を挙げ、その問題点を通して、より自動化プロセスの理解を深めてもらえるようにしています。
自動テストは、特別なスキルが必要なものではありません。自動テストに関する知識を少し押さえておけば、誰でも成功するテスト技術です。テストを自動化し、テストを管理できる状態にし、効率の良いテストプロセスの構築を目指しましょう。
(本書「はじめに」より)

目次

  • はじめに

第1章 ソフトウェアテストとテストの課題を知る

1-1 ソフトウェアテストの現状と課題

  • ソフトウェアに求められるもの

1-2 テストの種類を押さえる

  • ソフトウェアテスト工程での分類
  • アジャイル開発と自動テスト

1-3 ソフトウェアテストの4つの工程を押さえる

  • 1. テスト計画
  • 2. テスト設計
  • 3. テスト実施
  • 4. 振り返り

1-4 自動テストに必要な6つのテスト技術

  • 同値分割
  • 境界値分析
  • ディシジョンテーブル
  • 組合せ技法
  • 状態遷移テスト
  • 回帰試験

1-5 テストツールの種類

  • テストツールとは
  • テストとテストウェアのマネジメント支援ツール
  • 静的テストの支援ツール
  • テスト設計とテスト実装の支援ツール
  • テスト実行と結果記録の支援ツール
  • 性能計測と動的解析の支援ツール
  • 特定のテストに対する支援ツール

第2章 自動テストの正しい知識を身につける

2-1 自動テストとは

  • 自動テストの目的と役割を押さえる
  • 【現場の失敗例】自動化する目的を誤ってしまった
  • 【現場の失敗例】自動テストの役割を誤ってしまった
  • 現場ではなぜ自動テストが根付かないのか
  • 工数削減の先にある自動テストの効果
  • 【現場の失敗例】工数削減を自動化担当者以外考えない

2-2 自動テストに必要な3つの技術

  • 開発技術
  • テスト技術
  • 【現場の失敗例】テストケースの手順、条件、期待結果が明確に記載されていない
  • 自動化の技術
  • 【現場の失敗例】テストの技術がない開発担当者が自動化する
  • 【現場の失敗例】自動テストの運用経験がない

2-3 現場で自動テストが失敗する理由を考える

  • 自動テストで誤りがちな2つの認識
  • 【現場の失敗例】自動テストをおこなうための何度も実施する試験が無い
  • 【現場の失敗例】時間が無いから自動テストを導入できない
  • 自動テストが失敗する5つの要因を押さえる

2-4 失敗しないために押さえておくべきポイント

  • 自動化に向くテスト
  • 自動化に向かないテスト
  • 自動テストと手動テストのメリット/デメリットを押さえる
  • ツール選定の方針
  • 【現場の失敗例】使えると考えた自動化ツールを全体に展開する
  • 自動化ツールを自作する
  • 【現場の失敗例】自動テストを理解せずツールを作成してしまった
  • 【現場の失敗例】作成した自動化ツールに結果確認を自動でおこなう機能が無い
  • 決めるべき自動化の方針と2つの自動化手法
  • ツールの選定基準を押さえる
  • 【現場の失敗例】キーワード駆動型の自動化ツールを導入してしまった
  • 【現場の失敗例】キャプチャー&リプレイツールを導入してしまった
  • 【現場の失敗例】自動テストで自動化ツールが主役になってしまう

第3章 自動化を成功させるための4つのプロセス

3-1 プロセス1:計画

  • 自動化の方針を決める
  • 【現場の失敗例】不具合を出す試験を自動化してしまった
  • 【現場の失敗例】自動化できるからといって広範囲の試験を自動化する
  • 【現場の失敗例】自動化のゴールを決めない
  • 試験項目の内容を分析する
  • 【現場の失敗例】自動化担当者がテストを理解していなかった
  • 自動化ツールの品質・仕様や評価対象のシステムを分析する
  • 【現場の失敗例】評価対象の仕様を知り尽くしていなかった
  • 自動化設計手法を決め、テストツールを選定する
  • テスト計画を作成する
  • 自動化のリスク
  • 【現場の失敗例】自動テストのリスクを考えずに進めてしまった
  • 【現場の失敗例】実行する回数を考えていなかった
  • 【現場の失敗例】上層部/お客様に自動テストとは何かを説明できていない

3-2 プロセス2:設計

  • 自動化の処理概要をまとめる
  • 自動化のスクリプト構成を考える
  • 【現場の失敗例】スクリプトの構成を考えていなかった
  • 【現場の失敗例】スクリプト作成のルールが無い

3-3 プロセス3:テストの実施

  • スクリプトを作成する
  • 作成したスクリプトを実行する

3-4 プロセス4:振り返り

  • 計画に対しての実績の検証
  • 【現場の失敗例】1回の失敗であきらめる
  • 【現場の失敗例】自動テストの振り返りをおこなわない

第4章 データ駆動型テストの自動化を実践する

4-1 データ駆動型テストの自動化の全体像

  • データ駆動型テストとは
  • 自動化するメリット
  • 【現場の失敗例】スクリプト作成段階で自動化できないことがわかった
  • 自動化プロセスの流れを押さえる

4-2 テストを計画する

  • 自動化する試験を決定する
  • ツール選定
  • 【現場の失敗例】自動化したい処理内容が実際に自動化できるツールがなかった
  • 【現場の失敗例】ツールを選ぶときにコストを考えていなかった
  • 作業内容と工数を比較する
  • 電卓アプリで自動テストを実践する

4-3 テストを設計し実行する

  • テストを設計する
  • データを作成する
  • PictMasterを用いて電卓アプリのデータを作成する
  • スクリプトの事前条件を設定する
  • スクリプトを作成する
  • 【現場の失敗例】確認するデータパターンをソースコードに記載する
  • スクリプトを実行する
  • コラム PictMasterの使い方

4-4 テストを振り返る

  • 計画に対する実績を検証する
  • 電卓アプリのテスト振り返り
  • コラム おすすめツール「Autoit」

第5章 順次実行型テストの自動化を実践する

5-1 順次実行型テストの自動化の全体像

  • 順次実行型テストの自動化とは
  • 自動化するとどんなメリットがあるのか
  • テスト計画前に整理する内容を押さえる
  • 自動化プロセスの流れを押さえる

5-2 テストを計画する

  • 自動化の方針を明確にする
  • 【現場の失敗例】自動化比率を100%にしてしまった
  • 自動化の進め方を決める
  • 【現場の失敗例】1度にすべての試験を自動化する
  • 自動化する箇所を明確にする
  • ツールを選定する
  • 【現場の失敗例】コストを抑制だけを考えて無償ツールを選んだ
  • 【現場の失敗例】使用している自動化ツールがサービス停止に
  • 工数を見積もり手動と自動化の工数比較をする
  • 【現場の失敗例】手動テストとの工数比較をおこなわない
  • Webサイトの評価で自動テストを実践する

5-3 テストを設計する

  • 決めた優先順位で試験項目を抽出する
  • 命名規約を設定する
  • 共通関数を設計する
  • Webサイトテストの共通関数を洗い出す
  • 【現場の失敗例】結果の判定は自動で実施したログを見て確認する
  • スクリプトを作成する
  • 試験を実施する

5-4 テストを振り返る

  • 計画に対しての実績の検証
  • Webサイトのテストを振り返る
  • 【現場の失敗例】順次実行型テストの自動化で振り返りをおこなわない
  • 【現場の失敗例】振り返りの内容を思い出せない
  • コラム その他の自動化ツール適用例
  • コラム RPAと自動テスト技術
  • おわりに
  • 著者プロフィール

プロフィール

林尚平はやししょうへい

1979年生まれ、兵庫県出身、41歳。大学院卒業後、システムエンジニアとして業務系システムの開発に従事し、その後にテストエンジニアに転向し自動テストに出会う。自動テストを始めた当初は何もわからない状況だったが、試行錯誤をくり返し、現在の自動テストのプロセスを作り上げた。10を超える自動化ツールを使いこなし、現場に最適な自動化内容や自動化ツールの提案、業務系/組み込み系問わず自動テストの導入提案をおこなうなど、テスト工数削減に悩む数々の現場で自動テストの導入、運用、支援などをおこなう。現在もテストエンジニアとして自動テストを担当。

facebook:https://www.facebook.com/hayashi1979