TechEd Europe 2012, Woensdag

20120627-093241.jpg

Deze dag begon met een rustige start. We hadden een goed plekje gevonden bij de keynote welke voornamelijk in het teken van Windows 8 stond.

Windows 8 is voorbereik op een veranderende wereld. Onze wereld gaat draaien rond mobility, connectivity, content, people en touch. En de scheiding tussen thuis en op kantoor verdwijnt. Microsoft speelt hier op in.

Windows 8 pakt dit op door een nieuwe, vloeiende UI en apps. Volgens Microsoft is het zelfs beter dan Windows 7!

Het lockscreen geeft bv. al wat informatie over ongelezen mail of batterijstatus. En het picturepassword is een aardige feature, log niet in met een nummer maar met bepaalde gestures op een plaatje.

Win8 is ook ontdaan van chroom. MS heeft geprobeert alles weer functioneel te maken en de tierelantijntjes zijn weggelaten. De New Belgium Brewery app was een leuk voorbeeld van een simpele intuitieve applicatie met bing maps integratie en een kalender (leek net html zonder CSS).

Navigatie gaat ook zonder touch, de muis en keyboard worden ook nog ondersteund. Maar je moet wel beseffen welk gedrag gekoppeld is aan bepaalde lokaties op het scherm. Een klik links is iets anders dan linksboven.

En Semantic zoom is bv. via CTRL+ en CTRL- opgelost.

De bekende Windows 7 desktop is er natuurlijk ook nog steeds maar het ontging mij hoe ik er snel naar toe kon springen. Er was wel een tile voor. Dat de tiles als eerste getoond worden vind ik niet relevant. Als ik mijn pc opstart, dan wil ik meestal eerst even mail etc. controleren en dan zijn die apps snel beschikbaar.

De systeem search of all je apps is ook interessant. Je kunt nu direct detail info benaderen zonder eerst die apps op te starten.

De store is ook aardig. Alle navigatie die je verwacht, zit er in. Ik zag gelukkig ook “Top Free”.

Daarna kwam Virtualisatie aan bod. Win8 bezit een HyperV manager. Er werd ook direct vanuit Win8 een map uit een virtual harddisk benaderd door deze te openen vanuit de Win8 filemanager. Dat is erg handig en bespaart veel tijd.

Windows 8 kan ook vanaf een stick gestart worden, onder Windows 7! Je bedrijfs pc neem je dus op USB mee. De Win8 is dan volledig van je eigen Win7 gescheiden. En als je de stick er per ongeluk uit trekt, heb je 60 seconden om de stick weer terug te plaatsen. Win8 bevriest even maar crasht niet!

Hierna ben ik samen met Frankwin Faber naar de sessie Introducing the new Visual Studio 2012 Unit Testing Experience gegaan. Deze sessie werd gegeven door Peter Provost.

Deze sessie gaat over testen van je code terwijl je de code schrijft. Hij geeft ook een sessie op vrijdag over testen van ontestbare code.

MSUnit heeft een belabberde start gemaakt. Het was traag, ondersteunde geen C++ en het miste de nieuwste features. Het leek ook meer voor testers gemaakt te zijn en daardoor was het niet geschikt voor TDD.

Maar nu hebben we Vs2012…

Het testproject was er nog steeds. Maar de demo’s draaiden om XUnit. Het zit in Nuget en ik vond het wel verfrissend om eens geen MSUnit te zien. Als het maar door TFS Build ondersteund wordt…

Er wordt ook NUnit, QUnit en al enkele anderen ondersteund. En er is ook unittesting beschikbaar voor bv. javascript.

Er is nu een Test Explorer waardoor we ons niet meer door alle losse schermen hoeven te slepen. Let wel even op de te download VS2012 extension voor XUnit integratie (buiten Nuget om).

TFS build ondersteunt ook de 3de partij unittests en ook code coverage en ook de fakes. En het werkt ook allemaal in de Hosted Cloud build.

20120627-111540.jpg

Microsoft draait voor VS2012 wel 65000 tests binnen 8 minuten.

MSTest is wel verbeterd: snelheid, Je kunt direct ASync (await) testen, er is ondersteuning voor 64bit en .Net multitargetting. En MSTest zit in de Visual Studio Express edities!

XUnit ondersteunt ASync, NUnit wellicht snel.

Dezelfde bestaande MSunittests zijn onderling uitwisselbaar tussen VS2010 en VS2012.

Fakes zijn er nu voor isoleren van je code. De Stubs lijken het meeste op mocking. Maar Shims werkt met runtime interception en kan daardoor leuke dingen doen.

Shims werd gedemonstreerd door een DateTime.Now na te bootsen. De System.4.0.0.0 DLL werd daarvoor geshimt naar System.4.0.0.0.Fakes, er werd een lege schil voor aangemaakt. De System.Fakes.ShimDateTime nam de aanroep van de Now over met een lambda aanroep naar NowGet. Hierbij moest wel een ‘tijd’ scope opgegeven worden. De shim mag niet vor eeuwig blijven werken.

Dit is voor een gedeelte overgenomen van Pex en Moles. Maar er is geen directe overlap en migratie is nog niet mogelijk.

Stubs werd niet echt gedemonstreerd maar het lijkt er op dat we geen interfaces hoeven te genereren voor stubs. Ze kunnen ook van reguliere klassen gegenereerd worden. Even testen dus 🙂

Maar Shims is een code smell. Is het echt nodig of kan je terugvallen op de nette Stubs.

Codecoverage is ook bijgewerkt en is nu veel eenvoudiger geintegreerd (een eenvoudige rechterklik). En de colour coding van wat wel en niet geraakt wordt, is ook netjes. Het is helaas niet voor alle VS versies beschikbaar 😦

TFS build ondersteunt ook de 3de partij unittests en ook code coverage en ook de fakes. En het werkt ook allemaal in de Hosted Cloud build.

Helaas moet nog steeds VS2012 op de TFS server uitgerold worden. Microsoft wilt hier graag feedback over ontvangen.

Compiling wordt pas builden als je overstapt op continious building. Dit geldt ook voor continuous unit testing. Er is nu een knop: Run tests after build, binnen VS2012. De (succesvolle) build en de test draait nu echt helemaal op de achtergrond dus je kunt bouwen en testen tegelijkertijd. Hou die testen op groen! De build is nu echt snel geworden; Frankwin constateerde droog dat we nu minder koffie kunnen gaan halen.

Er komt binnenkort ook een Test emulatie voor SharePoint.

Daarna stond de volgende sessie op het programma. Helaas waren er twee sessies over TFS automation tegelijkertijd. Ik ben naar de sessie van Neno Loje gegaan. De andere sessie kijk ik wel op Channel 9.

Delivery is erg lastig en kost veel tijd. Zelfs in een Scrum sprint van twee of drie weken kost een dag uitrollen veel te veel. We moeten dus automatiseren. En dat geldt ook voor kwaliteit. We moeten de tijd om de kwaliteit te controleren beperken.

Dus bepaal eerst, wanneer is je code klaar?Dit is de Definition of Done DoD. En kwaliteit is onderhevig van wanneer het getest is. Streef naar een constante kwaliteit. Aleen dan kun je ook estimaten want je weet wat je opgeleverd hebt en wat je nog mist.

Daarna volgde een demo met een build. Builds kunnen nu ook gepauseerd worden voor een latere uitvoering. In de Build, controleer altijd even de workspace. Hierin wordt vastgesteld wat naar de buildserver verstuurd moet worden. Dit kan meestal een stuk efficienter.

TeamExplorer is ook wat handiger, deze toont altijd de buildstatus van je favoriete builds.

Continuous build is prima voor kleine teams. Grotere teams kunnen Gated Checkin gebruiken. Hele grote teams kunnen zelfs buildopdrachten laten samenvoegen met een maximum.

Ook werd even een unittestproject gedemonstreerd. Unittesten werd automatisch een onderdeel van de build omdat de projectnaam de tekst TEST bevatte. Dit werkt ook voor andere merken tests zoals XUnit. Maar neem de extra testrunner adapter en specifieke dll’s op voor de buildserver in een mapje met dependencies.

Codecoverage werd getoond. Dit is nu heel eenvoudig aan te zetten. Helaas is dit alleen voor VS2012 Premium gebruikers beschikbaar. En je hebt een extra licentie nodig voor de build server.

We kunnen nu eenvoudig de output uit meerdere solution in aparte mappen laten droppen. Dit was niet beschikbaar in de vorige versie van TFS.

20120627-055901.jpg

Shimes en fakes werd ook hier gedemonstreerd maar helaas met dezelfde demo als in het vorige uur. Pech, ik had gehoopt dat er afwisseling zou zijn. Is het zo moeilijk om verschilende voorbeelden te bedenken voor zo een belangrijke technologie?

Ook static code analysis is gedemonstreerd. Dit is een standaard onderdeel van de TFS Build. Je kunt eventueel je eigen rulesset samenstellen. Gewoon toepassen dus, een must have. Je kunt zelfs definieren dat warnings hieruit als builderrors worden beschouwd.

De layer diagram was ook heel aardig. Dit zit alleen in de Ultimate versie van VS2012. Even laagjes tekenen en de klassen er in plaatsen. Op de buildserver moet je de diagram checkbox aanzetten voor een layer check.

Labmanagement ondersteunt nu ook een eenvoudige testserver. Dit heet de standaard environment. Er is dan alleen geen snapshot mogelijkheid.

Op naar de volgende sessie. Vandaag is het echt een TFS dagje. Deze sessie gaat over het toepassen van scrum in VS2012.

Eerst wordt de Agile manifesto nog even aangehaald. En het sprint plaatje komt voorbij. Priotiseren van de backlog is belangrijk. De klant moet zich bewust zijn van wat er eerst gebouwd moet worden. De acceptatie criteria zijn bij de userstories ook van belang, pas dan mag je de items opnemen.

De nieuwe TFS backlog kan makkelijk priotiseren door drag en drop. En aan een backlog item kan een storyboard via Powerpoint aangemaakt en gekoppeld worden. Ook is er ruimte voor een acceptatie criterium. Items kunnen trouwens ook genest worden.

Het viel me op dat ik eigenlijk geen verschil heb gezien tussen TFS op premise en TFS in Azure. Erg mooi dus.

Van een productbacklog kunnen de items voorzien worden van Effort. dit gebeurt via planning poker (niet meegeleverd).

Dat kunnen de items aan sprints gekoppeld worden, afhankelijk van de velocity en de somatie van effort. En natuurlijk de hoogste prioriteit eerst.

In de sprint wordt iedere story van echte taken voorzien. En taken worden aan collega’s toegewezen. TFS toont al snel of collega’s te zwaar belast worden, lees: te veel uren aan taken moet spenderen.

Pas dan kan de sprint gaan beginnen.

De burn down chart kwam helaas maar heel even ter spraken en ik zag er geen TFS voorbeeld van. Het zal toch wel tussen de rapportages zitten?

Wel kwam het sprintbord in beeld. Ah, rechtsboven zie ik een BDC 🙂 Weer drag en drop van items. Prima, dit wordt een mooi aanraakscherm op kantoor voor de standup!

Dit scherm werkt samen met de MyWork explorer. daar zie ik de aan mij toegekende taken en ik kan ze ook op hold zetten of als Klaar markeren. Dit zou ik graag in actie willen zien! Het lijkt wel redelijk aan te sluiten op mijn manier (wens) van werken.

Er was nog een unittest demo maar die is de afgelopen sessie al vaker beschreven (zie boven).

20120627-083530.jpg

Ook de Code Clone demo was wel interessant. Dit legt een vinger op de copy/paste wond.

Gaaf, als ik een taak aan het uitvoeren ben, dan kan ik onder die taak alle wijzigingen shelven. Dan kan ik netjes een andere bug of taak uitvoeren en later weer verder gaan met de ‘suspended’ taak. En later zal er een merge plaatsvinden vanwege de bugfix of andere taak.

Nu krijgen we dus vat op de velocity in TFS. Nu kan ik de forecast aanzetten in TFS en dan krijg ik een overzicht van hoeveel sprints ik nog moet uitvoeren. Dit is de waarheid, er is niks van gelogen. Komt het de klant niet uit? Dan moet er geschoven worden met resources. Helaas houdt de forecast geen rekening met vakantieperiodes en afwezigheid van collega’s. Er moet dus een correctie met de kalender in de hand gedaan worden.

De take aways:

20120627-085101.jpg

Advertenties