Set Test Context Parameters Plugin

Denna sida förklarar Loadtest Pluginet som heter SetTestParameter och dess olika funktioner. Commit 96bbe62e har en ny version av detta plugin där de olika properties har fått nya namn, som förhoppningsvist är lite tydligare.
Tanken med pluginet är att ersätta användandet av en Datasource i ett Webtest, och istället ge en funktion som kan styra testdata i skripten från ett loadtest, och kunna styra detta på samma sätt i både Webtest och ett Unittest (eller för den delen ett Coded UI Test).
Pluginet åstadkommer detta genom att sätta ett antal Context Parametrar precis innan ett nytt test startar sin iteration/exekvering. Om en context parameter redan finns i ett test, kommer det ersättas/skrivas över. På så sätt åstadkommer man även "arv". Varje Test kan ha sina egna värden i själva testet, som används när testet körs för sig. Om det sedan körs i ett Loadtest med SetTestParameter plugin uppsatt, ersätts värdet av dessa parametrar i testet. Context parametrar som inte redan finns i testet kommer skapas. På så sätt kan man även ha logik i skriptet som triggas om en viss parameter finns i skriptet, och därmed kan man även styra logiken i skripten från ett loadtest.

Detta plugin skrevs i sin första version redan 2011. Det har genom åren anpassats och förändrats en hel del, men fortfarande utgår detta plugin ifrån att testdata ska läsas in från en CSV fil. Denna testdata fil kan med fördel läggas in som en item i samma testprojekt, och blir därmed även versionshanterat tillsammans med det loadtest som använder datat. Genom att anväda "Deployment Items" i Test Settings filen kan man även få testdata filen att kopieras till alla agenter per automatik, när testet startas. På så sätt automatiseras även deploy av testdata filer vid tex automatiska prestandatester.

Inställningar (Properties)

Context

Parameter Namn

Detta fält används för att ge ett namn till den context parameter som ska sättas i testet. Har stöd för att ha flera parametrar som ska sättas, genom att använda ett CSV format. Oberserva att testdata filen måste ha samma format och minst lika många kolumner. Tex: "Parameter Ett,Parameter Två" kommer sätta 2 parametrar, där första kolumnen sätts med parameterns namn till "Parameter Ett" och den andra kolumnen i filen, på samma rad, till "Parameter Två".
Om testdata filen har namn på kolumnerna på första raden, kan detta aktiveras (se nedan) och då används istället kolmnunens namn från testdatafilen som parameter namn, och värdet för detta fält kommer ignoreras.

CSV Testdata

Autosplit per agent

Standard: False
Denna funktion möjliggör att köra med unikt testdata för en viss VU (Virtual User) eller en viss iteration av ett test i Loadtestet. Detta genom att fördela alla raderna i testdatafilen mellan de agenter som deltar i testet. Fördelningen görs rad för rad med en modulo funktion, dvs, om det tex finns 3 agenter som deltar i loadtestet, fördelas rad 1 till agent 1, rad 2 till agent 2, rad 3 till agent 3, rad 4 till agent 1, osv, tills filen är slut.
Denna funktion behövs, då agenterna under ett loadtest inte kommunicerar med varandra. De kommunicerar heller inte med controllern på ett sätt som möjliggör kontroll om vilken agent som använder vilket data. Denna funktion fördelar därmed datat både jämnt mellan agenterna, och om alla rader i testdatafilen är unika, ser till att ingen agent använder samma data som en annan agent.

Avbryt med OutOfTestDataException

Standard: False
Vissa funktioner i detta plugin används för att dela ut unikt data till en VU eller en iteration av ett Test. Dvs, målet är att inte återanvända visst data, eller att inte flera samtidiga VU använder samma data (och tex därmed loggar in samtidigt med samma användarnamn och därmed loggar ut den andra VU'n). I ett sådant läge kan det då ske att testdata tar slut, för att fler VU kör samtidigt än vad det finns testdata rader, eller att fler iterationer körs än vad det finns rader i testdatafilen. Om då funktionen som tillåter att pluginet får börja om från början av filen är avstängt, kommer pluginet istället fortsätta med sista raden för alla efterkommande VU eller Iterationer. För att undvika detta, och istället avbryta testet, kan denna funktion aktiveras. Pluginet kommer då att sätta värdet till "OutOfTestdata" samt slänga ett Exception som får VS att avbryta pågående Loadtest. Det görs dock med viss fördröjning, så att alla Agenter hinner leverera sitt data till databasen, innan testet stoppas. Tiden för detta är just nu hårdkodat till 5 minuter och borde i de flesta fall räcka. I meddelandet som skickas med detta Exception, finns även en förklaring till vilken testdata fil det var, hur många rader som agenten läste in från denna fil, samt lite övrig info om inställningar och antalet agenter som deltog i testet.

Filen har kolumner med namn

Standard: False
Denna flagga gör att "Context: Parameter Namn" ovan inte används, utan istället används första raden i testdatafilen som namn istället, för namnet på den parameter som sätts i testets context. Om det finns flera kolmner, skiljda med kommatecken, används varje kolumn som en separat parameter.

Filens sökväg

Här anger du namnet på den fil som ska användas för att läsa in testdata raderna ifrån. Filen behöver vara en vanlig windows text fil (utf-8 eller ascii).
Ange fullständig sökväg om filen inte finns i projektet och skickas med vid deploy som en item. Se Absolute Path Or Deployment Item