以前、直交表とオールペア法、allpairspy でのテストケースの生成 | Monotalk で、allpairspy でオールペア法でのテストケース生成を実施してみました。

Python で動くので、Colaboratory へようこそ - Colaboratory実行できますが、これでも敷居は高い雰囲気があり、Google スプレッドシートでオールペア法でのテストケースを生成するツールを作ってみました。
作成したツールの使い方と、作成時に起こったことなどを記載します。


作ったモノ

以下、リポジトリにアップしました。

kemsakurai/gas-CombinationTestCaseGenerator: Google スプレッドシート で、組合せテストケースを生成するためのコンテナバインドスクリプト

REMADE.md使い方は記載しています。


作成した動機

作成した動機は以下になります。
オールペア法のテストケースの生成が目的でしたが、実際それ以外にも使え、実務だとそちらで重宝しています。

  • 組合せのテストケースを作成することがあるが、全網羅テストを書くのが面倒
    テスト因子と、水準の抽出はExcel,Google スプレッドシート 等で実施していました。
    因子と水準の抽出後は、一度全網羅のための組合せを作るのですが、この作業にそれなりに時間を使っていて、さっくり全網羅の組合せ生成できないかなとは思っていました。

  • オールペア法でのテストケース作生の経験がなく、どんなものか試してみたかった
    全網羅テストの作成に時間がかかっていて、オールペア法でのテストケースを考えるという時間がありませんでした。

  • PICT のインストールに敷居の高さを感じた
    PICT を使うという選択肢はありますが、インストールが必要であるというのは、個人的に敷居の高さを感じます。 ローカルPCではなく、クラウドのツールや、WEB で生成できないかという気持ちがありました。


導入方法

以下、ツールの導入方法について記載します。

スプレッドシートを使う

gas-CombinationTestCaseGenerator - Google スプレッドシートコピーすると、リポジトリのリソースのビルドは不要でそのまま使うことができます。

distディレクトリ配下の Google Apps Script を使う

gas-CombinationTestCaseGenerator/dist at master · kemsakurai/gas-CombinationTestCaseGenerator bundle.jsappsscript.jsonスプレッドシート のコンテナバインドスクリプトとしてコピーすることでも使えます。

リポジトリを clone してビルド、デプロイする

kemsakurai/gas-CombinationTestCaseGenerator: Google スプレッドシート で、組合せテストケースを生成するためのコンテナバインドスクリプト参考に、ビルド、デプロイしてもらえれば使えるようになります。
エンジニア向けになるかとは思います。


全網羅テスト生成の実装

algorithm - Cartesian product of multiple arrays in JavaScript - Stack Overflow参考に実装しました。


one-wise テスト

thiagodp/one-wise: One-wise combinatorial testing generator for JavaScript拝借し、作成しました。
時間が限られている場合などで、one-wise という考えは持っておくと、良い場合があるのかと思います。
テストケース数は、テスト因子で水準数が最も多い因子の、水準数と一致します。
1つ実施したい観点があったら、その水準に着目したテストケースを生成すると良いのかもしれません。


ペアワイズ テストのライブラリについて

walkframe/covertable: It makes combinations covering pairs for pairwise testing.使用しています。
設定オプションは以下の通りです。

import { default as make, sorters } from '../libs/covertable/index';
export const pairWise = (values): any => {
  return make(values, {
    // optional
    length: 2, // default: 2
    sorter: sorters.greedy, // default: sorters.sequential
    sortArgs: {} // default: {}
  });
};
当初、Google Apps Script では covertable動作しなかったのですが、V8ランタイム サポートにより動作するようになりました。
V8ランタイムだと動作するライブラリはそれなりに多いのかと思います。
機械学習関連のライブラリで動くようになったものも増えたと考えられるので、より様々なことに活用できるのかなと思います。


参考

以下、参考にした記事になります。

コメント