Visual Studio 2013 Loadtest

Ny version av Visual Studio släpptes den 17 Oktober 2013 och det har kommit några trevliga nyheter för oss prestandatestare. I takt med att jag upptäcker dem, samt mina erfarenheter av installationen, så uppdaterar jag denna artikel.

Först och främst är installationen mycket enkel som vanligt. Jag valde denna gång web installationen istället för att ladda ner hela DVDn från MSDN, eftersom det blir mindre att ladda ner då. Installationen jag gjorde var på en ren Windows 8.1 klient PC.

Första frågan efter installationen var ett välja tema. VS2012 är ju väldigt vitt, och man kan hitta tillägg för att ändra färgerna, men nu finns detta alltså inbyggt från början. Trevligt att nu kunna köra prestandatester med VS2013 BLACK EDITION:

VS 2013 Black Edition Load Test

VS 2013 Black Edition Load Test

SQL Server 2012 Express LocalDB

En av nyheterna i VS2013 installationen är att Microsoft nu skeppar med SQL Server 2012 Express LocalDB out of the box. Detta är en special bantad version just för utvecklare, och installeras automatiskt vid första gången någon försöker koppla upp sig till databasen. Det är därmed enkelt att ha flera privata databaser på maskinen, eller per projekt. Det är dock lite svårare att dela dessa med andra, men man kan fortfarande ladda ner SQL 2012 Express och köra denna istället.

LocalDB installeras som default tillsammans med VS2013 Ultimate. Dock konfigurerades denna inte automatiskt efter installationen med LoadTest2010 databasen (Om man inte installerar Visual Studio Loadtest Controller på samma maskin). Detta behöver göras manuellt först innan det går att köra ett loadtest lokalt i VS med databas för resultaten.

LocalDB instansen skapas per automatik första gången den används, och den skapas då i användarens lokala AppData mapp, och ägs även av användaren. Detta är en stor skillnad jämfört med vanliga Express, varje använde på en dator har alltså sin egna resultatdatabas. Det går även enkelt att bifoga ett filnamn till databasen, dvs vart den ska skapas och sparas, vilket gör det möjligt att enkelt skapa nya load test databaser för ett projekt. Varje gång en sådan skapas behöver man dock först skapa LoadTest2010 databasen i denna. Detta görs enklast med följande kommando:

>cd C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE
>sqlcmd -S (localdb)\v11.0 -i loadtestresultsrepository.sql

Det kan ibland ta en stund att skapa databasen, och ge ett timeout felmeddelande, om detta sker så kör sqlcmd kommandot igen med samma argument. Databasen skapas i användarens hemma mapp, och heter LoadTest2010.mdf.

Man kan så klart även skapa nya instanser per projekt (med SqlLocalDB.exe kommandot, vilket man även använder för att starta och stoppa instanser mm), eller använda den Projects instans som Visual Studio redan skapat, och skapa LoadTest databasen i denna. Gör man detta, kan man även använda den inbyggda SQL Server Explorer för att komma åt databasen, eller SQL Object Explorer för att lägga till nya databaser (som att skapa LoadTest2010 databasen):

VS2013 SQL Object Explorer

VS2013 SQL Object Explorer

Bilden ovan är en screenshot från VS2013 där jag öppnat SQL Object Explorer för Projects instansen, och skapat LoadTest2010 databasen i denna istället, genom att öppna sql filen (samma som användes i exemplet ovan med sqlcmd från kommandotolken istället).

Det sista man brukar behöva göra är att begränsa mängden internminne som SQL Server instansen får använda på maskinen. Precis som tidigare är standard inställningen att använda 2TB (dvs allt som finns) och detta kan göra att Visual Studio får slåss med SQL Servern om att använda minnet på maskinen under lasttester med många VU. Jag brukar dra ner mängden minne för SQL Server instansen till 512MB eller 1GB, så att Visual Studio i alla fall har minst 2GB ledigt minne för de virtuella användarna. Detta behöver göras med ett sql kommando, och kan köras med sqlcmd från kommandotolken, eller så kan vi göra detta direkt i VS2013 genom en Query från SQL Object Explorer:

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'max server memory', 512;
GO
RECONFIGURE;
GO

Var noga med att köra detta i rätt LocalDB instans 😉

För att sedan konfigurera Visual Studio Loadtest att använda denna databas vid lokala tester anger vi bara en Connection string till våran LocalDB instans där vi skapade LoadTest2010 databasen:

VS2013 Manage Test Controller

VS2013 Manage Test Controller

Enkelt och smidigt, vi slipper hålla på bråka med rättigheter och inställningar i SQL Server, vi behöver inte ens vara lokal admin på maskinen, och LocalDB instansen startas automatiskt när vi startar ett test eller analyserar en körning, och stoppas även per automatik när den inte används längre.

Load Test Service in the Cloud

En annan nyhet i Visual Studio 2013 avseende prestandatester är att det nu kommer bli ännu enklare att köra sina tester från molnet, dvs med agenter och controllers baserade hos Microsoft. Tidigare kunde man relativt enkelt skapa Azure instanser som är antingen Controllers eller Agents och sedan ansluta till dessa från VS2012, men nu finns en ny moln tjänst som tillhandahålls av Team Foundation Service online. Den är än så länge helt konstnadsfri, men begränsad till 1 Agent och 1 Core, samt 15000 VU minuter per månad. Detta är dock under beta perioden, efter det kommer man troligen få ett antal agenter och minuter gratis i sitt MSDN abonnemang, och sedan kunna köpa till sig mer precis som i Azure.

Det som krävs för att komma igång idag är ett konto, och sedan är det mycket enkelt att koppla upp sig till sin TFS Cloud Load Test miljö (en per användarkonto). Läs mer om detta här.

Fler förinstallerade plugins

Med 2013 kommer även lite nya funktioner, främst i form av plugins.

VS2013 Web Test Plug-ins

VS2013 Web Test Plug-ins

Ovan en bild av de plugins som följer med, samt våra plugins från Lights In Line. De uppifrån fram till och med Generate SAML Token är de som följer med, samtliga genererar alltså automatiskt data. Datum generator kan utgå från ett fast datum, eller tiden just nu, och även lägga till valfri tid i dagar eller timmar och sekunder.

VS2013 Web Test Request Plug-in

VS2013 Web Test Request Plug-in

Bilden ovan visar de Request plugins som följer med efter installationen. Dessa kan användas för att ändra på eller sätta parametrar för ett specifikt anrop i skriptet. Tex finns här stöd för nästlade parameter konstruktioner (se beskrivningen ovan). Samma datum plugin som för webtests finns även här för specifika anrop.

Load test plugins finns det tyvärr inga out of the box än så länge, dock fungerar fortfarande våra plugins från LIL precis som innan, även om du kör dina loadtest projekt med .NET 4.5 (då vår plugins DLL är byggd med VS2010 och .NET 4.0).

Våra plugins hittar du som tidigare på prestandatest.se. Happy Testing!