Upgrade to Pro — share decks privately, control downloads, hide ads and more …

システムテスト自動化標準ガイド-5章発表資料

 システムテスト自動化標準ガイド-5章発表資料

2015年7月4日開催の、システムテスト自動化標準ガイド(ギア本)の読書会での発表資料です。
5章を担当しました。

Masatoshi Itoh

July 03, 2015
Tweet

More Decks by Masatoshi Itoh

Other Decks in Technology

Transcript

  1.  日本メディカルネットコミュニケーションズ(株)勤務  本発表は、所属する企業・団t(ry  サーバー側メインのおおむね何でも屋  JS/PHP/Obj-C/Java ▪ ここ3ヶ月では、Wordpressカスタマイズ職人、Androidアプリ改修職人、

    iOSアプリ改修職人などなど  プライベートでErlang/OTP、Unity(C#)など ▪ UnityからRabbitMQ(AMQP)やMQTTを使うライブラリなどを公開 ▪ https://github.com/masatoshiitoh/unity_mqlib ▪ https://m2mqtt.codeplex.com/SourceControl/network/forks/masatoshiitoh/M2mqtt4Unity
  2.  1990年代 ▪ クライアントサーバー系システム ▪ テスト方法は、手動操作による確認 ▪ テスト項目は、画面とシナリオから作成。お客様側から指定あり。 ▪ GUIテストツールのMicrosoft

    Testの採用を検討するも、社がクライアン ト部分の開発を担当しなかったので推進できず。 ▪ 内部ライブラリはソースコード目視チェック ▪ テストコードは特に作らず、実行ファイルごとに結果を目視確認。
  3.  2000年代前半 ▪ 回線速度測定サービスの企画・開発 ▪ コアプロトコル発案・設計 、v1.0クライアントの開 発を担当。 ▪ テスト方法は、手動操作による確認。

    ▪ テスト項目は特に定めず。 ▪ 回線種別ごとに、このぐらいの速度が出るだろう、 という想定で、そこを大きく逸脱した値が出ると 「不具合」として修正を実施。 →びっくりするほ どアドホック ▪ http://www.itmedia.co.jp/broadband/0307/09/lp17.html
  4.  2000年代後半 ▪ ネットリサーチとポイントサービスの連携システムの開発 ▪ テスト方法は、手動操作による確認。 ▪ テスト実施数、エラー件数、修正件数などのカウントが入った、統一書式の報告Excelが提供された ▪ テスト項目のリストアップや、手順書作成はExcel方眼紙。

     2010年代前半 ▪ ウェブアプリのポイント管理システムの開発 ▪ テスト方法は、テストスクリプトによる一括テスト。 ▪ モックとテストコードを作成。実行は手動。 ▪ スクリプトにはパラメータをハードコード。 ▪ 結合後のテストは手動操作による確認。 ▪ 小規模チームによるゲームアプリの開発 ▪ テスト方法は、手動操作による確認。 ▪ テスト項目は、画面遷移とディレクター指示。 ▪ 開発拠点が遠隔のため、バグ報告はGoogle spreadsheet ▪ 新バージョンがビルドされるたび、手作業でチェック
  5.  5章 テストウェアアーキテクチャ ▪ 5.1 テストウェアアーキテクチャとは何か ▪ 5.2 カギとなる4つの課題 ▪

    規模 ▪ 再利用性 ▪ 複数のバージョン ▪ プラットフォームと環境からの独立 ▪ 5.3 取り組み方 ▪ 序文 ▪ 基本概念 ▪ テストウェアセット ▪ テストスイート ▪ テストウェアライブラリ ▪ 構成管理 ▪ テスト結果 ▪ 物理的構造 ▪ テストツールとのインターフェース ▪ 5.4 これはやりすぎだろうか? ▪ 5.5 まとめ
  6.  テストウェアアーキテクチャで管 理される「テストウェア作成物」は、 以下のものがある。  テスト資料 ▪ 「入力」 「スクリプト」 「データ」

    「ドキュメント」 「期待結果」  テスト結果 ▪ 生成物 ▪ 「実際の出力」 ▪ 二次生成物 ▪ 「ログ」「ステータス」「比較レポート」
  7. ▪ 5.3 取り組み方 ▪ 序文 ▪ 基本概念 ▪ テストウェアセット ▪

    テストスイート ▪ テストウェアライブラリ ▪ 構成管理 ▪ テスト結果 ▪ 物理的構造 ▪ テストツールとのインターフェース
  8.  「テストスイート」は、テストが実行可能な状態のファイル群。 ▪ 「テストスイート」は、テストの目的ごとに下記のものを任意でピックアップした詰め 合わせである。 ▪ テストセット(テスト固有のスクリプト、データ、ユーティリティ、ドキュメント) ▪ スクリプトセット(共用) ▪

    データセット(共用) ▪ ユーティリティセット(共用) ▪ ※上記4種の「セット」の総称がテストウェアセット。  テストウェアライブラリは、全てのテストウェアセットのマスターバージョンを格 納しているリポジトリであり、テスト実行時はここからコピーしてきて実行する。  バージョン管理は適宜行う。
  9.  「テストスイート」は、テストが実行可能な状態のファイル群。 ▪ 「テストスイート」は、テストの目的ごとに下記のものを任意でピックアップした詰め 合わせである。 ▪ テストセット(テスト固有のスクリプト、データ、ユーティリティ、ドキュメント) ▪ スクリプトセット(共用) ▪

    データセット(共用) ▪ ユーティリティセット(共用) ▪ ※上記4種の「セット」の総称がテストウェアセット。  テストウェアライブラリは、全てのテストウェアセットのマスターバージョンを格 納しているリポジトリであり、テスト実行時はここからコピーしてきて実行する。  バージョン管理は適宜行う。 5.3節は長く、しかも8.3形式(MS-DOS時代の スタイル)のファイル名をサンプルで多用す るという、今となっては非常に分かりにくい 構成になっています。 そのまま読み進めるのは大変なので、ここで はざっくり掴んでいくことにします。
  10. テストウェアライブラリ (リポジトリ) テストスイート (実行環境) テストセット スクリプト セット データセット ユーティリティセッ ト

    テストセットt1 スクリプト セットs1 データセットd1 ユーティリティ セットu1 ユーティリティ セットu1 データセットd2 スクリプト セットs1 テストセットt2 テストセットt1 コピー
  11.  テストウェアセットは、テストウェアアーキテクチャを構成する要 素である。  テストウェアセットは、以下の種類がある。 ▪ テストセット ▪ スクリプトセット ▪

    データセット ▪ ユーティリティセット  テストウェアセットとは、テストウェア作成物を、テストスクリプ トやデータファイルといった種類で分けた論理的な集合(セット) である。
  12.  テストセットは1つ以上のテストケースを定義する。  テストセットはテストケース固有のテストウェア作成物を全て含む。内容は ▪ テストスクリプト ▪ 期待結果 ▪ テストデータ

    ▪ テスト入力 ▪ 文書ファイル(テスト仕様書など) ▪ ユーティリティのソースファイル(テスト用ドライバや独自のコンバーターなど) ▪ ユーティリティの実行ファイル(上述のソースファイルからビルドされたもの)  テストセット内のテストウェア作成物はそのテストケースでしか使用されない  異なるテストセットに含まれるスクリプトを再利用したいときは、スクリプトをテ ストセットからスクリプトセットに移動する。
  13.  テストスイートは、テストの実行に必要なものが全て揃った環境をいう。  選択したテストケースは全て、テストスイートから実行される。  例で挙げられているテストスイートは、修正したScribbleアプリケーションの特定 のバージョンに対して実行したいテストケースを含むもの、として、 ▪ Scribbleの全機能をカバーする幅広いテストを含むテストセット ▪

    ログを取る共有スクリプト ▪ 比較ツールの共有ユーティリティ ▪ 文書管理の共有スクリプト ▪ Scribbleをナビゲートする共有スクリプト ▪ 修正した箇所をテストするためのデータセット ▪ 修正した箇所をテストするためのスクリプトセットセット  という構成が示されている。
  14.  もしランダムな名前(Mark, Barbara, Franky, Bobbyなど)をファイルに付けていたら、 個々のスクリプトやデータファイルを探し出すことはかなり困難になるだろう。  本書では、  テストウェアセットは

     スクリプトセット:s  データセット:d  テストセット:t  ユーティリティセット:u  で始まり、アンダースコア、アプリケーション名と続き、テストケースが実行する、 もしくはテストウェアがサポートする機能やアクションを記す。  たとえば「s_ScribbleDocument」であれば、Scribbleに関する、何らかドキュメント に関連するスクリプトセットが含まれている。
  15.  キーワード駆動テストケースでは、テストケースとスクリプトが一意には結びつか ない。期待結果をスクリプトが含んでいる場合、期待結果が独立したファイルで存 在しない。  →構造が一定しない。  実装を知らなければ、たとえばデータ駆動アプローチが使われると分かっていても、 分離されたデータファイルを見つけるのは容易ではない。 

    →探す場所どころか、探すもの(スクリプト、データファイルなど)すら分かって いないかも知れない!!  テストウェアアーキテクチャが十分に構造化され、一貫性を備えているとしても、 テストケース自体が簡単で一貫した方法で識別できない場合には欠陥がある  →テストケース定義ファイルによって、どのようなテストケースがあるのか、どの テストウェアが使用されるのかといったことを識別できるようになる。
  16.  「テストスイート」は、テストが実行可能な状態のファイル群。 ▪ 「テストスイート」は、テストの目的ごとに下記のものを任意でピックアップした詰め 合わせである。 ▪ テストセット(テスト固有のスクリプト、データ、ユーティリティ、ドキュメント) ▪ スクリプトセット(共用) ▪

    データセット(共用) ▪ ユーティリティセット(共用) ▪ ※上記4種の「セット」の総称がテストウェアセット。  テストウェアライブラリは、全てのテストウェアセットのマスターバージョンを格 納しているリポジトリであり、テスト実行時はここからコピーしてきて実行する。  バージョン管理は適宜行う。
  17.  1999年刊行の本なので、そのちょっと前から見てみましょう。  スペック等はコンシューマーPCのものです。  1995年 ▪ Pentium Pro (150MHz

    ~ ▪ メイン4MB ~ 8MB時代 ▪ 1GB HDD ▪ 10BASE2/-T時代 ▪ Windows95 ▪ MacOS 7.5 ▪ Linux 1.0カーネル (Redhat/Suse)
  18.  1999年刊行の本なので、そのちょっと前から見てみましょう。  スペック等はコンシューマーPCのものです。  1995年 ▪ Pentium Pro (150MHz

    ~ ▪ メイン4MB ~ 8MB時代 ▪ 1GB HDD ▪ 10BASE2/-T時代 ▪ Windows95 ▪ MacOS 7.5 ▪ Linux 1.0カーネル (Redhat/Suse) メモリは1/1000 HDDも1/1000 ネットワークは1/100 CPUクロックは1/20
  19.  1997年 ▪ Pentium II (233MHz ~ ▪ 8MB ~

    32MB時代 ▪ 4GB HDD ▪ 100BASE-TX時代 ▪ Windows NT4.0 (1996~ ▪ MacOS 8 ▪ Linux 2.0 カーネル(1996~
  20.  1997年 ▪ Pentium II (233MHz ~ ▪ 8MB ~

    32MB時代 ▪ 4GB HDD ▪ 100BASE-TX時代 ▪ Windows NT4.0 (1996~ ▪ MacOS 8 ▪ Linux 2.0 カーネル(1996~ メモリは1/1000 HDDも1/1000 ネットワークは1/10 CPUクロックは1/10
  21.  1999年 ▪ Pentium III (450MHz~ ▪ 16MB~64MB時代 ▪ 10GB

    HDD ▪ 100BASE-TX時代 ▪ Windows 98SE ▪ MacOS 9 ▪ Linux 2.2 ▪ Samba 2.0
  22.  1999年 ▪ Pentium III (450MHz~ ▪ 16MB~64MB時代 ▪ 10GB

    HDD ▪ 100BASE-TX時代 ▪ Windows 98SE ▪ MacOS 9 ▪ Linux 2.2 ▪ Samba 2.0 メモリは1/1000 HDDも1/1000 ネットワークは1/10 CPUクロックは1/5
  23.  発刊後 ▪ 日本国内のADSLサービスは2000年前後から ▪ USはむしろブロードバンドの普及は遅かった。 ▪ Windows 2000は2000年 ▪

    Windows XPは2001年 ▪ 一般向け1000BASE製品が出回り始めたのは2003年 ▪ Mercurial、 Gitは2005年  原著がこうした状況で1999年に刊行された、ということを意 識してあらためて5章(特に3節)を読むと、著者の危機感が 共有できるのではないかと思います。
  24.  おもに、お客様ありの開発をしている方への質問となりますが・・・  テスト計画書やテスト項目、手順書、バグ報告書など、テスト前後でお客様とやりとりす るファイルが多数あり、しかもバージョン管理が困難な運用スタイル(日付付きファイル 名のExcelシート等)なことが多いのではないでしょうか? ▪ テスト項目の管理はExcel? Google spreadsheet?

    ▪ バグ管理はExcel? BTS? ▪ テストの進捗を、オンラインでBTS等でお客様に見てもらうかたちにできてる方、いますか? ▪ テスト管理ツールの出力でいいよ、とお客様を納得させてるかた、いますか? ▪ Excel職人としての工数が大きくて苦労している方、いますか?  アンケート: ▪ テストの管理(お客様とのテスト項目の共有、進捗、レポート等)のツールは? ▪ そのツールで満足している点、不満な点は?