Unit testing + software development + ASP.NET MVCdlucanu/cursuri/css/resurse/... · 2010-06-02 ·...

Preview:

Citation preview

Unit testing + software development + ASP.NET MVC

Gabriel Enea Senior Software Developer – Maxcode.ro

Co-founder: joobs.ro – primul portal de joburi IT

26 mai 2010, Facultatea de Informatică, Iași

enea.gabriel@gmail.com

Twitter: @dotnet18

Blog: http://gabrielenea.blogspot.com

Cât de important e…?

Buna ziua,

Avem placerea sa va anuntam ca ati fost promovat la

statutul de client Distributie - discount 0.

Achizitiile dvs. la PC Garage au depasit o valoare de 0,00

RON, cumuland un numar de peste 0 de comenzi.

Toate cele bune,

Echipa PC Garage

http://www.pcgarage.ro

Cât de important e testarea?

Inca un mail de la Garaj, de data asta cu scuze :)

Salut Gabriel,

Ne cerem scuze pentru email-ul primit de la noi mai devreme in care erai anuntat ca faci parte dintr-un grup de clienti inexistent.

A fost evident o eroare din partea noastra si s-a intamplat din cauza testarii insuficiente a unei facilitati.

Am corectat eroarea si promitem sa nu se mai intample.

Daca nu ai primit mail-ul, inseamna ca a ajuns prin folderele de Trash sau Junk si bine a facut.

Te rugam din nou sa ne ierti pentru orice inconvenienta si iti oferim un voucher de 10 lei pe care-l poti folosi la cumpararea oricarui produs: 3YEBC3I9

Un weekend placut,

Echipa PC Garage

Cu toții ne dorim … ?

Clienți fericiți!

Dar, majoritatea sunt …

Clienți nefericiți!

Ce facem? Ce ar trebui? Ce schimbăm? De unde pornim? Unde ajungem?

Cum testezi un avion?

Testare componente

Cât de important e arhitectura software în testarea automată?

Important: cerințele aplicației, domeniul de execuție, …

Domain Driven Design

Decuplare + Interfețe!

DDD și MVC

Core of TDD

TDD

Test Driven Development is not about testing!

TDD = tehnică de dezvoltare software

Pași în TDD:

Scrie un test care eșuează

Scrie suficient cod astfel încât testul să treacă

Rearanjează codul sursă (refactoring)

Repetă procesul pentru părți mici de cod

ASP.NET MVC

Separare clară între logica UI, business și intrările utilizatorului

Extensibil Arhitectură bazată pe interfeţe

Puţine clase nemoştenibile

User/SEO Friendly URLs

ASP.NET MVC și TDD

Testabil 100%

Regulă: Niciodată să nu testezi codul care nu e scris de tine! (de ex. cel impus de framework/librarie)

Testare Model/Domeniu

Validează implementarea corectă a domeniului aplicației

Independent de factori externi (baze de date, view-uri, platformă, …)

Testare reguli de validare

Testarea rutelor

Pași: Se utilizează un framework de mocking (MoQ)

Se simulează o cerere HTTP

Se verifică valoarea parametrilor din colecția RouteData

Demo 1 – Testare rute

Testarea controller-elor

De să le testezi?

Controllere-le conțin logică care ține de comunicarea dintre aplicație și utilizator (flow).

Demo 2 – Testare controller

Testare View-uri?

Nu are sens dacă UI-ul se modifică des!

Are sens dacă testele nu țin de poziționarea elementelor în cadrul interfeței utilizator

Unelte de test:

Selenium (addon Firefox), Visual Studio for Testers

Testare Html Helpers

Validează răspunsul (cod HTML, …) unui Html Helper (ex. Html.TextBox, Html.CheckBox, ..)

Presupune mocking peste View-uri (ViewContext)

Demo 3 – Testare Html Helpers

Testare metodă Html.TextBox

De reținut

Context

Domeniu

Cerințe

Arhitectură + Testare

Dezvoltare + Testare

Testare

Testare …

Client fericit!

Unit testing + software development + ASP.NET MVC

Întrebări?

Unit testing + software development + ASP.NET MVC

Gabriel Enea Senior Software Developer – Maxcode.ro

Co-founder: joobs.ro – primul portal de joburi IT

enea.gabriel@gmail.com

Twitter: @dotnet18

Blog: http://gabrielenea.blogspot.com

Mulțumesc!

Recommended