紹介

単体テストとは

単体テストは、ソフトウェアの個々のユニットまたはコンポーネントをテストするソフトウェア テストの一種です。単位は、個々の関数、メソッド、プロシージャー、モジュール、またはオブジェクトです。

単体テストは、開発プロセス中にソフトウェア開発者と時にはQAスタッフによって行われます。これは、ソフトウェア コードの各単位が期待どおりに動作することを検証するのに役立ちます。これは、統合テストの前に行われるテストの第 1 レベルです。

単体テスト管理が必要な理由

テスト管理ツールは、テストプロセスを改善し、より良い製品をより迅速に提供するのに役立ちます。しかし、一般的なテスト管理ツールはすべて、過度に複雑で、コストがかかり、時間がかかり、単体テストに焦点を当てていません。さらに、単体テストの出力は通常ファイルであるため、特にテストケースの数と人数が将来増加すると、テストケースを更新し、バージョン間の変更を追跡することが難しくなります。

当社のソリューション

このページでは、GitHub を使った簡単な単体テスト管理ツールを紹介します。このソリューションは、Markdown ファイルを使用して単体テスト (デザイン と結果を含む) を GitHub リポジトリに格納します。テスト設計を管理、表示、編集し、テスト結果をブラウザだけでどこにでもアップロードできます。その後、GitHub アクションは、テストに更新があると自動的に実行され、テストの再移植 (Excel、HTML、およびマークダウン) を生成します。

当社のソリューションの詳細

1.   機能

このページでは、次の機能を提供する GitHub を使用して、無料でシンプルな単体テスト管理ソリューションを提供します。

  • Markdownテスト仕様のfiles(GitHubリポジトリに保存)をブラウザで直接作成および編集するか、テキストエディタを使用します。
  • GitHub の機能を使用したテストの管理。ユーザーは、バージョンの管理、変更と履歴の追跡、マージ、復帰、プル要求の作成などを行うことができます。
  • テストファイルに更新があるときにGitHubアクションを自動的に使用するレポートを生成します。レポートには、マークダウン、エクセル、HTML の 3 種類があります  。
  • HTML レポートページ (パブリック GitHub リポジトリまたは商用アカウントを持つプライベート GitHub リポジトリ) の公開。

2.   テスト ケース マークダウン ファイル

Eachテスト(仕様と結果を含む)は、Excelファイルではなく別のMarkdownファイルに格納されます。この Markdown ファイルはテンプレートに従う必要があり、ツールが認識できるように "Tests" フォルダーまたは "Tests" のサブフォルダーに配置する必要があります。 「テスト」フォルダに「Template.MD」ファイルがあります。ユーザーは、その内容をコピーすることで、テスト ケースをすばやく記述できます。

テストケースファイルには "key"と "value"があります。 ユーザーは、Markdown テスト ファイルの "キー" フィールドを変更してはなりません。意味のある値から "" フィールドを変更するか、変更しないでおきます。「キー」値は、図1の赤いテキストで、ユーザーが変更しないようにしておくべき値です。「価値」には2つのタイプがあります。最初の "value" 型には 、テスト ケースの設計に関する情報が含まれており、図 1 では次のような青色の rectangle で示されています。

  • テスト ケース ID: テスト ケースの ID
  • テストスクリプトの場所:テストケースを実行するテストスクリプトの場所
  • テスト ケース名: テスト ケースの名前
  • テスト ケースの説明: テスト ケースの説明
  • 前提条件: テスト ケースを実行する前に実行する必要がある条件
  • 事後条件: テスト・ケースの実行後に実行する必要がある条件
  • 「テストステップ」の詳細:テストステップの詳細情報
  • 「テストステップ」のデータ:テストステップを実行するためのデータが必要
  • 「テストステップ」の期待結果:テストステップの期待結果

2 番目の "value" 型には、テスト結果に関する情報が含まれており、図 1 では次のような黄色の四角形になっています。

  • テストされた日付:テストを実行している日付は、mm/dd/yy hh:mm:ssの形式でなければなりません
  • テストケースの結果:テストケースの結果は、合格、不合格、未実行、または中断でなければなりません
  • 「テストステップ」の実績:テストステップ実行の実結果
  • 「テストステップ」の最終結果:テストステップの結果は、合格、不合格、未実行、  または中断でなければなりません
図 1: マークダウン テスト ケース ファイル

3.   Git ディレクトリ構造

ユーザーがこのソリューションを使用するには、GitHub アカウントが必要です。https://github.com で無料で登録できます。テスト管理テンプレートリポジトリをフォークまたはインポートした後、独自のリポジトリには次のファイルとフォルダが含まれます。

  • ".github/workflows" フォルダには、GitHub アクションを実行するための設定が含まれています。現在、リポジトリに更新がある場合に実行するように構成されています。ユーザーは変更しないでおく必要があります。
  • "docs" フォルダには、すべての HTML テストレポートが含まれています。ユーザーはダウンロードしてブラウザで開いたり、GitHub Pagesで公開したりしてオンラインでアクセスすることができます。
  • 「ライブラリ」フォルダには、GitHubアクションと設定ファイルを使用したテストレポートの生成に役立つJavaライブラリが含まれています。構成ファイルは、生成されるレポートの種類、分析するテストフォルダー、およびレポートの名前を決定します。このファイルの詳細については、次のトピックで説明します。
  • 「レポート」フォルダには、すべてのマークダウンおよびExcelテストレポートが含まれています。GitHub アクションは、テストに更新があるときにレポートを自動的に生成および更新します。
  • Test" フォルダには、プロジェクトのすべての Markdown テスト ファイルが含まれています。ユーザーは 、すべての テストをこのフォルダーまたはサブフォルダーに配置する必要があります。GitHub アクションは、このフォルダ内のテストのみをチェックおよび分析します。
  • 「README.md」にはクイックスタートのガイドラインが含まれています。

4.   設定ファイル

「ライブラリ」フォルダには、テストレポートの生成方法を設定するためのconfig.propertiesファイルがあります。次のパラメータがあります。

  • tm.generate_excel_test_specification: ユーザーが各 Markdown テスト ファイルに対応する Excel テスト ファイルを生成する場合は、"true" を設定します。
  • tm.generate_excel_test_report: ユーザーが Excel テスト レポートを生成する場合は "true" を設定します
  • tm.generate_html_test_report: ユーザーが HTML テスト レポートを生成する場合は "true" を設定します
  • tm.report_dir:テストフォルダのリストがカンマで区切られて分析されます(,)
  • tm.report_names: レポート名のリストがコンマ (,) で区切って作成されます。

クイックスタート

このセクションでは、ソリューションをすばやく開始する方法について説明します。GitHub アカウントがあり、GitHub の使用方法を知っていることを前提としています。以下の簡単な手順に従って、  単体テスト管理ソリューションを作成します。

手順 1: 独自の単体テスト管理リポジトリを準備する

  • Github アカウントにログオンします (GitHub アカウント  をお持ちでない場合は、こちらから無料で登録してください)。
  • Github  リポジトリテンプレートをGithubアカウントにフォークまたはインポートする
    • フォーク:
      •  ブラウザでGithubリポジトリテンプレートを開く
      • Githubページの右上にある「フォーク」ボタンをクリックし、「OK」をクリックしてforkプロセスが完了するのを待ちます
  • Githubアクションを有効にするには、Githubページの上部にある[アクション]タブをクリックし、[ワークフローを理解し、先に進んで有効にする]をクリックします。
  • 輸入
    • Githubページの右上にある  ボタン「+」をクリックし、「リポジトリのインポート」を選択します。
  • 作成したリポジトリを開きます。次に、Githubページの上部にある[設定]タブに移動します。左側の[アクション>全般]タブを選択します。「すべてのアクションを許可する」ラジオボタンを選択し、「保存」ボタンをクリックしてください

手順 2: テスト ケース仕様の Markdown ファイルを作成します。

  • 作成したリポジトリで、上部の[コード]タブに移動し、[テスト]フォルダをクリックします
  • 独自のテストケース仕様Markdownファイルを作成し、Markdownテンプレートをコピーして簡単に編集することができます。
    • 「Template.MD」ファイルをクリックして開きます
    • 右側のペン記号をクリックして編集モードを開きます。すべてのファイルの内容を選択し、コピーして「Cancel changes」を押して戻ります
    • もう一度「テスト」フォルダに移動します
    • 「ファイルの追加」ボタンを押し、「新しいファイルを作成」を選択します。
    • テストケース仕様Markdownファイル名と場所を入力します(すべてのテストファイルは「テスト」フォルダまたはそのサブフォルダに配置する必要があります)
    • 上記の手順でコピーしたコンテンツをこの新しいファイルに貼り付けます。
    • このファイルにテスト・ケース仕様データを入力する
      • 「##テストケースID」ヘッダーの下の順序なしリストにテストケースIDを入力し、 "N / A"値を置き換えます
      • テストケースのスクリプトの場所を "## Test Script Location" ヘッダーの下の順序なしリストに入力します - 意味のある有益な情報を入力し、それ以外の場合は N/A のままにします。
      • "## テスト ケース名" ヘッダーの下の順序なしリストにテスト ケース名を入力し、"N/A" 値を置き換えます。
      • ## テストケースの説明」ヘッダーの下の順序なしリストにテストケースの説明を入力します - 意味のある情報を入力し、それ以外の場合はN / Aのままにします
      • 「## 前提条件」ヘッダーの下の順序なしリストにテストケースの前提条件を入力します - 意味のある情報を入力し、それ以外の場合はN / Aのままにします
      • テストケースの事後条件を "## 事後条件" ヘッダーの下の順序なしリストに入力します - 意味のある有益な情報を入力し、それ以外の場合は N/A のままにします。
      • 「*ステップの詳細」の順序なしリストの下の順序なしリストにテストステップの詳細を入力します - 意味のある情報を入力します(例:有効な資格情報でログイン)、それ以外の場合はN / Aのままにします
      • 「*テストデータ」の順序なしリストの下の順序なしリストにテストステップデータを入力します - 意味のある 情報(例:username=test、password=123456)を入力し、それ以外の場合は N / Aのままにします
      • テストステップの期待される結果を「*期待される結果」の順序なしリストの下の順序なしリストに入力します - 意味のある情報(例:ログイン成功)を入力し、それ以外の場合はN / Aのままにします
      • 複数のステップがある場合は、「ステップ1」の順序付きリストをコピーし、テストステップの詳細、テストステップデータ、およびテストステップの期待結果を再度入力します。
  • 新しいファイルをコミット」ボタンをクリックしてこのファイルを保存します

手順 3: テスト結果をアップロードする

単体テストを実行した後、単体テストの結果を次のように "Tests" フォルダー内の Markdown テスト ファイルにアップロードする必要があります。

  • 対応するテストケース仕様Markdownファイルを「Tests」フォルダに開きます
  • 右側のペンアイコンをクリックして編集モードに入ります
  • このファイルにテスト結果を入力します。
    • "## テスト済み日 (mm/dd/yy hh:mm:ss)" ヘッダーの下の順序なしリストにテスト日を入力します - "N/A" 値を置き換えます (例: 8/18/21 18:20:59)。
    • "## テストケース結果 (成功/失敗/未実行/中断)" ヘッダーの順序なしリストにテスト結果を入力します - "未実行" 値を PassFailNot Execution、または Suspended に置き換えます。
    • テストステップの実際の結果を「*実際の結果」の順序なしリストの下の順序なしリストに入力します - 意味のある情報を入力します(例:ログインに成功しました)、それ以外の場合はN / Aのままにします
    • テストステップの結果を「*合格/失敗/未実行/中断」の順序なしリストの下の順序なしリストに入力します - 「未実行」値を合格、失敗、未実行、または中断に置き換えます
  • 変更をコミット」ボタンをクリックしてテスト結果をアップロードします

ステップ 4: テスト レポートを表示す

テストレポートはGithubアクションによって自動的に生成されます。

  • マークダウンレポートとExcelレポートは、「レポート」フォルダに配置されます。
  • HTML レポートは "docs" フォルダに配置されます。それらをコンピュータにダウンロードして開くか(Github  はテキストファイルとしてレンダリングするため)、次のようにGithubページとして公開することができます。
    • Githubの「設定」タブに移動します
    • 左側の「ページ」を選択します
    • 公開する "docs"フォルダを分岐する
  • 今、あなたのサイトが公開され、あなたはHTMLページとしてオンラインでそれにアクセスすることができます
  • パブリックリポジトリまたはプライベートリポジトリを持つページは「エンタープライズ」アカウントでのみ公開できることに注意してください(Githubは認証と認証を自動的にサポートしています)

デモ

このデモでは、ソリューションを適用して、単純な Android アプリケーションの単体テスト管理を行います。アプリケーションには、下の図のように個人情報の保存に役立つ設定ページが含まれています。 EmailValidator クラスと SharedPreferencesHelper  クラスの  9 つの関数を検証するための 9 つの単体テストがあります。単体テストは EmailValidatorTest クラスSharedPreferencesHelperTest クラスに実装されています。

まず、ソリューションリポジトリテンプレートをフォークします。GitHubアクションはリポジトリをフォークするときに自動的には有効にならないため、リポジトリの「設定」に移動して有効にする必要があります。次に、新しいリポジトリができました。

次に、9つのテスト仕様ファイルを作成し、「テスト」フォルダに配置します。Mavenで単体テストを実行し、結果を「テスト」フォルダにアップロードすると、テストレポートは「レポート」フォルダと「ドキュメント」フォルダに自動的に生成されます。  最後に、マークダウン レポートまたは Excel レポートを開いて表示します。また、GitHub ページを使用して HTML レポートを公開しています

改善

現在、単体テストの実行後に単体テストの結果を手動でアップロードしています。プロジェクトが大規模で複雑になると時間がかかります。この場合、ライブラリを実装し、 GitHub アクションまたは CI/CD プロセスに追加する必要があります。このライブラリは、単体テストが完了すると自動的に実行されます。JUnitテスト結果(HTML形式)を解析し、結果を編集し、Markdownテストファイルをリポジトリにアップロードするのに役立ちます。