Met de bovenstaande code ontvangen we de HTML-paginabron van ‘http://www.google.com’ en kunnen we controleren of de string htmlDocument een bepaald woord of zin bevat. We kunnen gegevens downloaden met de DownloadString-methode (GET) en gegevens uploaden met verschillende uploadmethoden (POST). Dit werkt leuk voor simpele webpagina’s maar zodra we praten over sessies werkt dit niet meer. De WebClient class bevat geen manier om cookies bij te houden en is daarom niet sessiebewust. We moeten de GetWebRequest-methode overschrijven door een aangepaste WebClient-klasse WebSession te maken:
In de bovenstaande code voorzien we onze WebSession class sessie van een CookieContainer die ervoor zorgt dat de informatie over de sessie wordt vastgehouden. Met deze CookieContainer kunnen we een POST-opdracht uitvoeren met onze inloggegevens:
Nu we een relevante sessie hebben naar ons systeem kunnen we controleren of gegevens correct worden geretourneerd. Om dit te bewijzen heb ik verschillende methoden gecreëerd:
IsPageAvailable om te checken of een Uri beschikbaar is en een HTTP OK (200) status code retourneert:
IsUriReturningValidJSON om te checken of een Uri geldige JSON terugstuurt. Ik gebruik de NewtonSoft JSON NuGet package om de string value naar een JSON-token te parsen:
Nu kunnen we onze smoke testen opstellen:
Met deze code hebben we snelle, betrouwbare smoke testen gecreëerd die meteen de sweet spot raken. De ms-test assembly kunnen we vervolgens opnemen in de VSTS release pipelines door de ‘Visual Studio test’ task toe te voegen. Door middel van testcategories zijn de testen te sturen en door runsettings is de configuratie aanpasbaar.
Happy smoke testing!