Ranorexでのcode moduleによるテストデータの管理
自動化されたテストツールを作成する際には、テスト環境を清潔に保つことが重要です.つまり、テストデータを自動的に作成し、テストが完了した後、テストデータを削除すると、多くのゴミデータが発生せず、テスト環境に影響を与えません.そこで、テストデータのメンテナンスが話題になります.
このプロジェクトでは、ユーザーの作成という機能をテストするなど、プログラムでテストデータを自動的に維持します.以下のテストデータがあります.
loginname, userlastname
test_user1, TestUser1
これらのフィールドには、タグとして数値が追加されています.テスト例は、次のように設計されています.
1.これらのテストデータでユーザーを作成する
2.作成に成功したら、このユーザーを削除してテスト環境を清潔にします.
3.自己開発の関数を呼び出し、テストデータを修正し、デジタルタグに1を付ける.
すると、このテスト例が走り終わると、外部のテストデータは次のようになります.
loginname, userlastname
test_user2, TestUser2
これは考え方で、第1点と第2点について、Ranorexにrecording moduleを書くとできます.3点目について説明します.
この機能を実現するには、まずRenorexでcode module、例えばIncreaseTestDataを作成します.cs、それから方法を書きます.このmoduleのコードは以下の通りです.
次にtest caseでこのクラスのオブジェクトを宣言し(各code moduleはRanorexでクラスとみなされる)、このメソッドを呼び出します.
例えば、test caseにrecording modul、「Increase」を追加し、Increase.usercode.csには、次のコードが書かれています.
本文は“ソフトウェアテストの自動化テストの道”のブログから出て、転載をお断りします!
このプロジェクトでは、ユーザーの作成という機能をテストするなど、プログラムでテストデータを自動的に維持します.以下のテストデータがあります.
loginname, userlastname
test_user1, TestUser1
これらのフィールドには、タグとして数値が追加されています.テスト例は、次のように設計されています.
1.これらのテストデータでユーザーを作成する
2.作成に成功したら、このユーザーを削除してテスト環境を清潔にします.
3.自己開発の関数を呼び出し、テストデータを修正し、デジタルタグに1を付ける.
すると、このテスト例が走り終わると、外部のテストデータは次のようになります.
loginname, userlastname
test_user2, TestUser2
これは考え方で、第1点と第2点について、Ranorexにrecording moduleを書くとできます.3点目について説明します.
この機能を実現するには、まずRenorexでcode module、例えばIncreaseTestDataを作成します.cs、それから方法を書きます.このmoduleのコードは以下の通りです.
public void increAttribute(string attribute, string testdatapath)
{
// Load test data
CsvDataConnector csvConnector = new Ranorex.Core.Data.CsvDataConnector("CSVConnector",testdatapath,true);
csvConnector.SeparatorChar = ',';
ColumnCollection outColCollection;
RowCollection outRowCollection;
RowCollection resultRowCollection;
csvConnector.LoadData(out outColCollection, out outRowCollection);
string[] values = null;
string thetarget = null;
resultRowCollection.Clear();
// Find the target
foreach(Ranorex.Core.Data.Row dataRow in outRowCollection)
{
values = dataRow.Values;
thetarget = dataRow[attribute].ToString();
// Loop over strings
int i;
for (i = 0; i < values.Length; i++)
{
if (values[i].Contains(thetarget) || values[i].Equals(thetarget))
{
if (!Regex.IsMatch(values[i], ".*[0-9]+$", RegexOptions.Compiled))
{
values[i] = values[i] + "0";
break;
}
break;
}
}
string theincrement = Regex.Match(values[i], @"(\d+)$").Value;
long incrementvalue = Convert.ToInt64(theincrement);
incrementvalue++;
char[] charsToTrim = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ' '};
thetarget = thetarget.TrimEnd(charsToTrim);
string newvalue = thetarget + incrementvalue.ToString();
values[i] = newvalue;
resultRowCollection.Add(values);
}
csvConnector.StoreData(outColCollection, resultRowCollection);
}
次にtest caseでこのクラスのオブジェクトを宣言し(各code moduleはRanorexでクラスとみなされる)、このメソッドを呼び出します.
例えば、test caseにrecording modul、「Increase」を追加し、Increase.usercode.csには、次のコードが書かれています.
IncreaseTestData incre=new IncreaseTestData();
incre.increAttribute("loginname","TC1_CreateUser\\TC1_CreateUser.csv");
incre.increAttribute("userlastname","TC1_CreateUser\\TC1_CreateUser.csv");
本文は“ソフトウェアテストの自動化テストの道”のブログから出て、転載をお断りします!