Tag Archives: VSALM
Benvenuto BugGuardian
Può essere ovviamente usata anche con delle invocazioni manuali nei blocchi di try/catch per tenere traccia delle eccezioni gestite.
- Asp.net
- Asp.net MVC
- WPF
- Windows 8 / 8.1 Apps
- Windows Phone 8 / 8.1 Apps
- Universal App
- Universal Windows Platform Apps (Windows 10)
- ecc
Install-Package DBTek.BugGuardian
Ad ogni modo, solo per fare un esempio di quanto sia semplice utilizzarla, questo è il codice di cui avrete bisogno per gestire un’eccezione e creare il relativo Bug su VSO / TFS:
using (var creator = new DBTek.BugGuardian.Creator())
{
creator.AddBug(myException);
}
Voglio ringraziare il mio amico e “collega” Marco Minerva (@marcominerva) per il supporto, la pazienza e la Code Review.
Benvenuto BugGuardian
Può essere ovviamente usata anche con delle invocazioni manuali nei blocchi di try/catch per tenere traccia delle eccezioni gestite.
- Asp.net
- Asp.net MVC
- WPF
- Windows 8 / 8.1 Apps
- Windows Phone 8 / 8.1 Apps
- Universal App
- Universal Windows Platform Apps (Windows 10)
- ecc
Install-Package DBTek.BugGuardian
Ad ogni modo, solo per fare un esempio di quanto sia semplice utilizzarla, questo è il codice di cui avrete bisogno per gestire un’eccezione e creare il relativo Bug su VSO / TFS:
using (var creator = new DBTek.BugGuardian.Creator())
{
creator.AddBug(myException);
}
Voglio ringraziare il mio amico e “collega” Marco Minerva (@marcominerva) per il supporto, la pazienza e la Code Review.
Deployare una Web App su Azure con la nuova Build di Visual Studio Online
- Se inseriamo un nome di una web app che non esiste nella nostra sottoscrizione e che non esiste nella region selezioanta, verrà creata su Azure nella region selezionata
- Se inseriamo un nome di una web app che non esiste nella nostra sottoscrizione ma che esiste già in quella region, verrà restituito un errore in fase di deploy
- Se inseriamo un nome di una web app che esiste già nella nostra sottoscrizione ma che è in una region diversa, verrà restituito un errore in fase di deploy
- Se inseriamo un nome di una web app che esiste già nella nostra sottoscrizione e che si trova nella region selezionata, il deploy utilizzerà quella web app e la aggiornerà
Deployare una Web App su Azure con la nuova Build di Visual Studio Online
- Se inseriamo un nome di una web app che non esiste nella nostra sottoscrizione e che non esiste nella region selezioanta, verrà creata su Azure nella region selezionata
- Se inseriamo un nome di una web app che non esiste nella nostra sottoscrizione ma che esiste già in quella region, verrà restituito un errore in fase di deploy
- Se inseriamo un nome di una web app che esiste già nella nostra sottoscrizione ma che è in una region diversa, verrà restituito un errore in fase di deploy
- Se inseriamo un nome di una web app che esiste già nella nostra sottoscrizione e che si trova nella region selezionata, il deploy utilizzerà quella web app e la aggiornerà
Cloud Load Test con Visual Studio Online – parte 2: Visual Studio
Remainder
- Per poter utilizzare la funzionalità di Cloud Load Test è necessario avere una sottoscrizione MSDN Ultimate
- L’applicazione da testare deve essere esposta sul web (visto che i test agent sono nel cloud e devono poter raggiungere l’applicazione)
- Gratuitamente si possono utilizzare fino a 20.000 minuti al mese. Si tratta di “virtual user minutes”, quindi ad esempio eseguendo 1 test da 2 minuti con un carico costante di 200 virtual user si consumeranno 400 virtual user minutes.
Introduzione
Iniziamo
Il progetto di Load Test
Esecuzione del test
È da notare comunque che se abbiamo effettuato il login in Visual Studio con un account che ha una sottoscrizione a VSO questo step non sarà necessario in quanto VS seleziona direttamente questo valore per noi.
Risultati
Conclusioni
Cloud Load Test con Visual Studio Online – parte 2: Visual Studio
Remainder
- Per poter utilizzare la funzionalità di Cloud Load Test è necessario avere una sottoscrizione MSDN Ultimate
- L’applicazione da testare deve essere esposta sul web (visto che i test agent sono nel cloud e devono poter raggiungere l’applicazione)
- Gratuitamente si possono utilizzare fino a 20.000 minuti al mese. Si tratta di “virtual user minutes”, quindi ad esempio eseguendo 1 test da 2 minuti con un carico costante di 200 virtual user si consumeranno 400 virtual user minutes.
Introduzione
Iniziamo
Il progetto di Load Test
Esecuzione del test
È da notare comunque che se abbiamo effettuato il login in Visual Studio con un account che ha una sottoscrizione a VSO questo step non sarà necessario in quanto VS seleziona direttamente questo valore per noi.
Risultati
Conclusioni
Cloud Load Test con Visual Studio Online – parte 1: Web panel
- Per poter utilizzare la funzionalità di Cloud Load Test è necessario avere una sottoscrizione MSDN Ultimate
- L’applicazione da testare deve essere esposta sul web (al tool va indicato l’url da testare)
- Gratuitamente si possono utilizzare fino a 15.000 minuti al mese. Si tratta di “virtual user minutes”, quindi ad esempio eseguendo 1 test da 2 minuto con un carico costante di 200 virtual user si consumeranno 400 virtual user minutes.
- User Load: permette di definire il numero di utenti virtuali che contemporaneamente si collegheranno all’url fornito. I valori possibili sono 25, 50, 100 e 200
- Run duration: è la durata complessiva del test. I valori selezionabili sono da 1 a 5 minuti
- Think-time: si tratta del tempo di attesa tra una richiesta e l’altra. Serve per evitare che i sistemi di anti-hammering e anti DoS entrino in funzione. È possibile indicare tempi di attesa di 1 secondo (default) o 5 secondi
- Browser distribution: questa impostazione indica la percentuale di utilizzo di browser che si vuole simulare. Scegliendo ad esempio “IE 80%, Chrome 20%” il test verrà eseguito con agenti useranno gli engine di Internet Explorer e di Chrome nelle percentuali selezionate
Edit dei file di codice sorgente da Web con Visual Studio Online
- La toolbar cambierà visualizzazione
- Nel menu ad albero il file selezionato verrà “marcato” con un * ad indicare che è in modifica
- Nella schermata sarà possibile apportare modifiche al codice sorgente
Oltre a modificare direttamente i sorgenti, è possibile anche rinominare, cancellare e creare file e cartelle e fare l’upload di nuovi file.
Si aprirà un popup in cui si può scegliere se creare un file nuovo o se scegliere dei file già esistenti da caricare.
Aggiungere Azure Application Insights ad un Web Site
-
Creare un nuovo servizio “Application Insights” usando il nuovo Azure portal (preview)
-
Copiare lo snippet di codice JavaScript che viene proposto dal portale ed aggiungerlo a tutte le pagine che si vogliono monitorare (oppure alla master page, se ce n’è una)
-
In Visual Studio 2013.3, creare una nuova web application vuota ed aggiungere ad essa Application Insights usando il menu contestuale
-
Copiare i seguenti file dalla cartella “bin” della Web App alla cartella “bin” del Web Site:
Microsoft.ApplicationInsights.dll
Microsoft.ApplicationInsights.Extensibility.RuntimeTelemetry.dll
Microsoft.ApplicationInsights.Extensibility.Web.dll
Microsoft.Diagnostics.Tracing.EventSource.dll
(volendo è possibile anche copiare i relativi file .xml e .pdb) -
Tornare nell’Azure portal (preview), andare nella sezione dell’Application Insights creato precedentemente, cliccare sul bottone “Properties” e copiare il valore della texbox “Instrumentation Key”
-
Copiare il file ApplicationInsights.config dalla root della Web App alla root folder del Web Site
-
In questo file, sostituire il valore della chiave “InstrumentationKey” con quello copiato al punto 5
-
Cambiare il file web.config del website aggiungendo le seguenti righe:
<system.web>
[...]
<httpModules>
[...]
<add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Extensibility.Web.RequestTracking.WebRequestTrackingModule, Microsoft.ApplicationInsights.Extensibility.Web" />
[...]
</httpModules>
[...]
</system.web>
<system.webServer>
[...]
<validation validateIntegratedModeConfiguration="false" />
[...]
<modules runAllManagedModulesForAllRequests="true">
[...]
<remove name="ApplicationInsightsWebTracking" />
<add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Extensibility.Web.RequestTracking.WebRequestTrackingModule, Microsoft.ApplicationInsights.Extensibility.Web" preCondition="managedHandler" />
[...]
</modules>
[...]
</system.webServer>
Gestire i Cloud Load Test con le REST API
- Creare / Lanciare / Stoppare un Load Test Run
- Recuperare i Load Test Results – un set di gruppi di KPI – Performance, Throughput, Application
- Recuperare i Messages del servizio durante l’esecuzione
- Recuperare le Exceptions, se ci sono
- Recuperare le Counter instances di un Load Test run
- Recuperare gli Application Counters delle App configurate nel load test
- Recuperare una lista di tutti i Load test Runs eseguiti – con filtri per requester, date, status ecc..
-
Per usare le REST API, è necessario abilitare le alternate credentials su Visual Studio Online e quindi utilizzarle per l’autenticazione
-
Aggiungere”vsclt” al nome dell’account VSO per essere rediretti al “Cloud-based Load Test (CLT) service” di visualstudio.com. Ade sempio, se l’account è https://abc.visualstudio.com/, quando si utilizzano le API indicare https://abc.vsclt.visualstudio.com/
- Per i “Test Runs”: testruns
- Per le “Test Drops” (i container dove vengono salvati i dati): testdrops
- Per le “Counter Instances”: testruns/{testrunid}/counterinstances
- Per i “Counter Samples”: testruns/{testrunid}/countersamples
- Per i “APM Plugins”: apm/plugins
- Per le “APM Applications “: apm/applications
- Per i “APM Counters “: apm/counters
Creare un Test Run
Request Url:
POST https://dbtek.vsclt.visualstudio.com/_apis/clt/testruns
Request Body:
{
"name": "MyAppToTest.loadtest",
"description": "nightly loadtest",
"testSettings": {
"cleanupCommand": "",
"hostProcessPlatform": "x86",
"setupCommand": ""
},
"testDrop": {
"id": "fe35ed32-eaab-4178-ba7e-ad2577ee187f"
}
}
Response:
{
"id": "a5e0d4b9-d387-4b3e-9566-163da9c39b67",
"name": "MyAppToTest.loadtest",
"createdDate": "2014-11-1T08:51:27.0965365Z",
"state": "pending",
"subState": "none",
"testSettings": {
"cleanupCommand": "",
"hostProcessPlatform": "x86",
"setupCommand": ""
},
"testDrop": {
"id": "fe35ed32-eaab-4178-ba7e-ad2577ee187f",
"url": "https://dbtek.vsclt.visualstudio.com/_apis/clt/TestDrops/fe35ed32-eaab-4178-ba7e-ad2577ee187f"
},
"runSpecificDetails": {
"duration": 180,
"virtualUserCount": 250,
"samplingInterval": 15
},
"createdBy": {
"id": "76cabfe4-0e20-4f5b-862e-9693a68232f1",
"displayName": "iamtheuser@dbtek.it"
},
"url": "https://dbtek.vsclt.visualstudio.com/_apis/clt/testruns/a5e0d4b9-d387-4b3e-9566-163da9c39b67"
}
Avviare un Test Run
Request Url:
PATCH https://dbtek.vsclt.visualstudio.com/_apis/clt/testruns/a5e0d4b9-d387-4b3e-9566-163da9c39b67
Request Body:
{
"state": "queued"
}
Response:
Status code: 202
Recuperare i Test results
Infine, quando il test è finito, possiamo recuperare i risultati con una call in GET.
Request Url:
GET https://dbtek.vsclt.visualstudio.com/_apis/clt/testruns/a5e0d4b9-d387-4b3e-9566-163da9c39b67/results
Response:
{
"resultsUrl": "http://127.0.0.1:10000/devstoreaccount1/ets-containerfor-aeee0697-d734-43d7-956e-e662252c265c/2150fbd4-e71c-42fd-8b90-95222a556d87/TestResult/LoadTest.ltrar.zip?sv=2012-02-12&se=2014-06-03T05%3A05%3A39Z&sr=b&si=sas_tenant_policyaeee0697-d734-43d7-956e-e662252c265c&sig=n1Tj%2BsCtiOqQu9UtcXsl%2Bn3ixP%2FVebHCKDJvfD5Tr%2FE%3D",
"counterGroups": {
"count": 3,
"value": [
{
"groupName": "Performance",
"url": "https://dbtek.vsclt.visualstudio.com/_apis/clt/testruns/a5e0d4b9-d387-4b3e-9566-163da9c39b67/CounterInstances?groupNames=Performance"
},
{
"groupName": "Throughput",
"url": "https://dbtek.vsclt.visualstudio.com/_apis/clt/testruns/a5e0d4b9-d387-4b3e-9566-163da9c39b67/CounterInstances?groupNames=Throughput"
},
{
"groupName": "Application",
"url": "https://dbtek.vsclt.visualstudio.com/_apis/clt/testruns/a5e0d4b9-d387-4b3e-9566-163da9c39b67/CounterInstances?groupNames=Application"
}
]
}
}
Recuperare i Test errors
Request Url:
GET https://dbtek.vsclt.visualstudio.com/_apis/clt/testRuns/47be20f0-ac4a-40cd-acb7-d9f8c44d0404/Errors
Response:
{
"count": 2,
"value": [
{
"type": "Exception",
"subType": "UriFormatException",
"occurrences": 50,
"testCaseName": "ErrorsAndExceptionsWebTest",
"scenarioName": "LoadTestingScenarioWarmupDuration",
"request": "http://www.bing:123.com/----{GET}",
"stackTrace": " at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind)\n at System.Uri..ctor(String uriString, Boolean dontEscape)\n at Microsoft.VisualStudio.TestTools.WebStress.WebTestTransaction..ctor(String requestUrl)\n at Microsoft.VisualStudio.TestTools.WebStress.WebTestInstrumentedTransaction.CreateTransaction()\n at Microsoft.VisualStudio.TestTools.WebStress.WebTestInstrumentedTransaction.Execute(WebTestCaseContext testCaseContext, AsyncCallback completionCallback, Object callerState)",
"messageText": "Invalid URI: Invalid port specified.",
"lastErrorDate": "2014-11-11T09:14:20.363Z"
},
{
"type": "ExtractionRuleError",
"subType": "ExtractText",
"occurrences": 50,
"testCaseName": "ErrorsAndExceptionsWebTest",
"scenarioName": "LoadTestingScenarioWarmupDuration",
"request": "http://www.bing.com/----{GET}",
"stackTrace": "",
"messageText": "StartsWith text was not found in the response",
"lastErrorDate": "2014-11-11T09:14:23.663Z"
}
]
}
Login