我有一個桌面應用程序中,我有200個測試用例與不同的輸入參數編碼的UI測試的情況下生成代碼
現在的問題是,每當我記錄每個測試用例與不同的輸入參數
有沒有什麼辦法讓我可以將代碼複製並更改參數,使我的代碼保持相同的所有測試情況下,只有輸入參數的變化
我有一個桌面應用程序中,我有200個測試用例與不同的輸入參數編碼的UI測試的情況下生成代碼
現在的問題是,每當我記錄每個測試用例與不同的輸入參數
有沒有什麼辦法讓我可以將代碼複製並更改參數,使我的代碼保持相同的所有測試情況下,只有輸入參數的變化
有幾件事情需要解決在這裏。首先,您可以使用數據驅動方法運行測試,如the link above中所述。
更重要的是,無論如何,在我看來,你是如何編寫測試的,這樣他們可以被數據驅動,你究竟測試了什麼,你需要這麼多的組合?
在編寫測試時,重要的是要有可重用的代碼來測試。我會建議看看像Code First Scaffolding或Coded UI Page Modeling(我寫的頁面建模的東西)。通過這些方法,您的測試代碼更具可維護性和靈活性(易於手動更改)。這將允許極其簡單的數據驅動測試。
public void WhenPerformingCalculation_ThenResultIsCorrect() {
// imagine calculator with two numbers and a sign
var testResult =
modelUnderTest.LeftSideNumber.SetValue(3) // set first number
.Operator.SetValue("*") // set sign
.RightSideNumber.SetValue(10) // set right number
.Evaluate.Click() // press evaluate button
.Result; // get the result
Assert.AreEqual(testResult, 30);
}
成爲
public class CalculationParameters
{
public double LeftNumber {get;set;}
public string Operator {get;set;}
public double RightNumber {get;set;}
public double Result {get;set;}
public override string ToString(){ return $"{LeftNumber} {Operator} {RightNumber} = {Result}"; }
}
public void WhenPerformingCalculation_ThenResultIsCorrect() {
ICollection<CalculationParameters> parameters = getParameters();
List<Exception> exceptions = new List<Exception>();
foreach(CalculationParameters parameter in parameters)
{
try
{
var testResult =
modelUnderTest.LeftSideNumber.SetValue(parameter.LeftNumber) // set first number
.Operator.SetValue(parameter.Operator) // set sign
.RightSideNumber.SetValue(parameter.RightNumber) // set right number
.Evaluate.Click() // press evaluate button
.Result; // get the result
Assert.AreEqual(testResult, parameter.Result);
}
catch (Exception e)
{
exceptions.Add(new Exception($"Failed for parameters: {parameter}", e));
}
}
if(exceptions.Any()){
throw new AggregateException(exceptions);
}
}
其次,爲什麼你需要在給定的測試,測試輸入/輸出如此多的組合?如果您正在測試諸如「給定登錄頁面,提供無效憑證時,則向用戶提供警告」。你真的需要測試多少無效輸入?對於有效憑證將會有第二次測試,並且不需要數據驅動。
我會提醒你小心,你沒有測試應該是你的UI中的單元測試的東西。這聽起來像是在測試不同的輸入組合,以查看UI是否生成正確的輸出,這應該可能是您的基礎系統的單元測試。在測試用戶界面時,通常足以測試對視圖模型的綁定是否正確,而不是測試計算或其他服務器邏輯是否準確執行。
我提供的例子顯示了我不會測試客戶端,除非該計算器只存在客戶端(沒有服務器端驗證或關於計算的邏輯)。即使在這種情況下,我可能會得到一個javascript測試運行器來測試爲我的計算器供電的視圖模型,而不是使用編碼的ui來執行此測試。
你能提供一些你正在測試的輸入/輸出組合的例子嗎?
可以通過命令行中使用事件參數的應用與一個批處理腳本,或者你可以創建一個函數來傳遞請求的參數。 在主標題中,您可以使用 main(string eventargs []);
在字符串變量將在命令行事件參數
我想知道誰會回答投票編碼的UI問題,而不會留下任何評論,爲什麼... – MPavlak