Stefan Lieser . Wer erstellt regelmäßig Unit Tests?
-
Upload
jacob-kohl -
Category
Documents
-
view
224 -
download
0
Transcript of Stefan Lieser . Wer erstellt regelmäßig Unit Tests?
![Page 1: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/1.jpg)
Stefan Lieserhttp://lieser-online.de
TestdrivenDevelopment -BDD - Style
![Page 2: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/2.jpg)
Wer erstelltregelmäßig Unit
Tests?
![Page 3: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/3.jpg)
Wer kennt seineTestabdeckung?
![Page 4: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/4.jpg)
Wer erstellt Testsum Bugs zu
reproduzieren?
![Page 5: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/5.jpg)
Wer erstellt Testsvor der
Implementierung?
![Page 6: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/6.jpg)
TDD
![Page 7: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/7.jpg)
TestDrivenDevelopment
![Page 8: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/8.jpg)
TestFirst
![Page 9: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/9.jpg)
Revolution!
![Page 10: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/10.jpg)
![Page 11: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/11.jpg)
![Page 12: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/12.jpg)
Zeit
Test Code
![Page 13: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/13.jpg)
Test= hinterher
![Page 14: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/14.jpg)
Spracheformtdas Denken
![Page 15: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/15.jpg)
Sapir-WhorfHypothese
![Page 16: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/16.jpg)
?
![Page 17: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/17.jpg)
BDD
![Page 18: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/18.jpg)
BehaviorDrivenDevelopment
![Page 19: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/19.jpg)
Evolution
![Page 20: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/20.jpg)
SpecificationFirst
![Page 21: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/21.jpg)
![Page 22: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/22.jpg)
TestSpecification
![Page 23: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/23.jpg)
Testen?
![Page 24: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/24.jpg)
Das machen die Tester!
![Page 25: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/25.jpg)
Das kostet zu viel Zeit!
![Page 26: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/26.jpg)
Mein Code ist fehlerfrei!
![Page 27: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/27.jpg)
Dafür sind wir da!
![Page 28: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/28.jpg)
Sollen wir arbeitslos werden?
![Page 29: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/29.jpg)
Ihr habt keine Ahnung!
![Page 30: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/30.jpg)
![Page 31: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/31.jpg)
TDD Entwicklung
![Page 32: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/32.jpg)
Tests für vorhandenen Code
![Page 33: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/33.jpg)
Vertrauen
![Page 34: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/34.jpg)
Reduktion
![Page 35: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/35.jpg)
Dokumentation
![Page 36: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/36.jpg)
Offenbarung
![Page 37: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/37.jpg)
Verhalten
![Page 38: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/38.jpg)
Mockups
![Page 39: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/39.jpg)
![Page 40: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/40.jpg)
UserStories
![Page 41: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/41.jpg)
![Page 42: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/42.jpg)
Als Shopbenutzer
möchte ich Bücherin meinen Warenkorb legen
um meine Bestellung besserüberblicken zu können.
![Page 43: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/43.jpg)
WhoWhatWhy
![Page 44: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/44.jpg)
RoleGole
Motivation
![Page 45: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/45.jpg)
Technologie
![Page 46: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/46.jpg)
Business Domain
![Page 47: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/47.jpg)
Sprache derDomain
verwenden
![Page 48: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/48.jpg)
Business und Technikverwenden die selbe
Sprache!
It‘s all behavior
![Page 49: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/49.jpg)
Gegeben ein MessageBoardController
Wenn die Index Action aufgerufen wird und wenn 10 Nachrichten vorhanden sind
Dann sollen die 5 neusten Nachrichten aus dem Repository ermittelt werden
![Page 50: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/50.jpg)
Gegeben ein MessageBoardController
Wenn die Index Action aufgerufen wird und wenn 10 Nachrichten vorhanden sind
Dann sollen die 5 neusten Nachrichten aus dem Repository ermittelt werden
![Page 51: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/51.jpg)
Gegeben ein Nachrichten SystemWenn es dargestellt wirdDann zeigt es die 5 neusten Nachrichten
![Page 52: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/52.jpg)
Als Benutzer desNachrichten Systems
möchte ich die 5 neustenNachrichten sehen
damit die Nachrichtenauf meinen Bildschirm passen
![Page 53: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/53.jpg)
BDD =AutomatisierteAkzeptanztests
![Page 54: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/54.jpg)
Unit Tests:Der Code ist richtig.
Akzeptanztests:Es ist der richtige Code.
![Page 55: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/55.jpg)
Syntax
![Page 56: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/56.jpg)
Assert.AreEqual(5, x);
Assert.That(x, Is.EqualTo(5));
x.ShouldBeEqualTo(5);
x.should_be_equal_to(5);
![Page 57: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/57.jpg)
Arrange/Act/Assert
![Page 58: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/58.jpg)
Setup/Exercise/Verify
![Page 59: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/59.jpg)
[TestFixture]public class ClassicalTDD{ private IEmailService emailService; private AuftragsAbwicklung auftragsAbwicklung; private IAuftrag auftrag; [Test] public void AuftragsAbwicklung_sendet_Email_wenn_der_Auftrag_ausgeliefert_wird() { // Arrange emailService = MockRepository.GenerateMock<IEmailService>(); auftrag = MockRepository.GenerateStub<IAuftrag>(); auftragsAbwicklung = new AuftragsAbwicklung(emailService); // Act auftragsAbwicklung.Liefern(auftrag); // Assert emailService.AssertWasCalled(x => x.Send()); auftrag.AssertWasCalled(x => x.Ausgeliefert()); }}
![Page 60: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/60.jpg)
Context/Specification
![Page 61: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/61.jpg)
[Concern(typeof(AuftragsAbwicklung))]public class Wenn_ein_Auftrag_ausgeliefert_wird : InstanceContextSpecification<AuftragsAbwicklung>{ private IEmailService emailService; private IAuftrag auftrag; protected override void establish_context() { emailService = dependency<IEmailService>(); auftrag = dependency<IAuftrag>(); } protected override AuftragsAbwicklung create_sut() { return new AuftragsAbwicklung(emailService); } protected override void because() { sut.Liefern(auftrag); } [Observation] public void wird_eine_Email_gesendet() { emailService.was_told_to(x => x.Send()); } [Observation] public void wird_der_Auftrag_in_den_Status_Ausgeliefert_versetzt() { auftrag.was_told_to(x => x.Ausgeliefert()); }}
![Page 62: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/62.jpg)
BDD Frameworks
![Page 63: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/63.jpg)
JP Boodhoo http://blog.jpboodhoo.com
xunit.bddextensions (Björn Rochel) http://code.google.com/p/xunitbddextensions
SpecUnit (Scott Bellware) http://code.google.com/p/specunit-net/
![Page 64: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/64.jpg)
NBehave (Dan North)enthält Behave# und NSpec http://nbehave.org/ http://code.google.com/p/nbehave/
MSpec (Aaron Jensen) http://codebetter.com/blogs/aaron.jensen/archive/2008/09/02/mspec-v0-2.aspx
![Page 65: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/65.jpg)
Bildnachweishttp://flickr.com/photos/hurleygurley/4338767/sizes/o/http://flickr.com/photos/nitram75/2532252156/sizes/l/http://flickr.com/photos/igelchen/228253414/sizes/o/http://flickr.com/photos/lincolnblues/1413187481/sizes/l/http://flickr.com/photos/c-o-d/553155111/sizes/l/http://flickr.com/photos/thesteinbergs/165513589/sizes/l/in/photostream/http://flickr.com/photos/julianbleecker/426323201/sizes/l/http://flickr.com/photos/peterpanter/2381811041/sizes/o/http://flickr.com/photos/mail2pete/3146580621/sizes/l/http://www.erdgasfahren.ch/fileadmin/user_upload/01_News/Pressebereich/Pressedownloads/Sonstige/Zafira_Crash_Test.jpghttp://flickr.com/photos/moe/8322628/sizes/l/http://flickr.com/photos/wklemp/2210135334/sizes/l/http://www.jetbrains.com/resharper/features/unit_testing.html#Unit_Test_Sessionshttp://flickr.com/photos/dalmet/496531540/sizes/l/http://flickr.com/photos/alfreddiem/231306790/sizes/o/http://a.abcnews.com/images/Health/apg_crash_test_070517_ms.jpghttp://flickr.com/photos/hisebuse/2148222331/sizes/l/http://flickr.com/photos/londonannie/2231592618/sizes/l/in/set-72157603821699832/http://flickr.com/photos/kid_schoko/2542422970/sizes/l/http://flickr.com/photos/prettydaisies/2369449704/sizes/l/http://flickr.com/photos/alphachimpstudio/43818104/sizes/l/
![Page 66: Stefan Lieser . Wer erstellt regelmäßig Unit Tests?](https://reader036.fdocuments.net/reader036/viewer/2022062818/570491c51a28ab14218dab8c/html5/thumbnails/66.jpg)