標籤:
這周的學習筆記我想寫點自己關於實驗中碰到的問題和感想。
因為這次做的是白盒測試,所以我決定去測試一下上回測試的app的功能函數。
這次我用的是單元測試項目來做的白盒測試:
建立單元測試的步驟:
1.點擊 “檔案”->“添加”->“建立項目”
2.選擇 windows應用程式-> 單元測試項目
3.在方案總管中為單元測試項目下的引用上右擊選擇添加引用
4.選擇解決方案下的項目中的用來測試的win8應用
接下來是單元測試的代碼部分的編寫了:
我要測試的是該項目中的一個字串轉化編碼的函數,函數的功能是把字串從gb2312編碼轉成utf8
public string GB2312ToUTF8(string str)
{
try
{
Encoding uft8 = Encoding.GetEncoding("UTF-8");
Encoding gb2312 = Encoding.GetEncoding("GBK");
byte[] temp = gb2312.GetBytes(str);
byte[] temp1 = Encoding.Convert(gb2312, uft8, temp);
string result = uft8.GetString(temp1,0,temp1.Length);
return result;
}
catch(Exception ex)//(UnsupportedEncodingException ex)
{
return null;
}
}
這是原函數的代碼部分,然後在單元測試UNITTEST1.cs檔案中加入下面這句話引用被測試專案的namespace
using 這是猜燈謎遊戲;
緊接著就是編寫測試函數了,我寫的TestMethod1:
public void TestMethod1()
{
gamePage gp = new gamePage();
string str = "猜燈謎";
Encoding uft8 = Encoding.GetEncoding("UTF-8");
Encoding gb2312 = Encoding.GetEncoding("GBK");
byte[] temp = gb2312.GetBytes(str);
byte[] temp1 = Encoding.Convert(gb2312, uft8, temp);
string result = uft8.GetString(temp1, 0, temp1.Length);
string output = gp.GB2312ToUTF8(str);
Assert.AreEqual(result, output);
}
在這個函數中建立一個測試案例用來測試函數的功能是否如預期所示,然後自己做一遍編碼的轉換存到
字串result中,最後建立一個斷言判斷單元測試中的函數輸出結果和預期結果result是否一致。
然後我就去運行了一下這個單元測試項目,結果是這樣的:
然後我就去尋找原因了,最後我總結了一下出現這個結果的原因:
我覺得這是因為被測試專案本身是一個win8應用,裡面的類檔案都是控制布局的類檔案,也就是說都是UI對象的類,
所以運行之後會提示請使用UI的編碼測試,而不是單元測試,要解決這個問題就只能換一個有自己的功能類的win8應用,
但是大家寫的都是功能嵌入在布局類中的win8應用,所以沒法解決這個問題。
軟體測試第六周學習筆記之“Win8 APP應用程式的白盒測試”