W wytwarzaniu wysokiej jakości oprogramowania kluczową rolę odgrywa testowanie. Nie jest to aktywność oderwana od developmentu — nie testuje się wyłącznie po, ale również przed i w trakcie całego procesu. Stosowanie BDD lub TDD to znakomity pomysł na to, by oprogramowanie i testy były lepsze. Jednak nie jest łatwo te (w teorii dość proste) metodyki skutecznie wcielić w życie. Tomek podzielił się swoimi doświadczeniami z prób implementacji takiego podejścia w kilku projektach. Opowiedział o współpracy na linii developer – QA, a także o tym, dlaczego testy powinny być zawsze na początku oraz o problemach, wyzwaniach i błędach, których należy unikać.
24. ▪ Wyrażający dobrze wymagania biznesowe
▪ Zrozumiały (wystarczająco precyzyjny) dla developera
▪ Pozwalający na przetestowanie (weryfikację)
25.
26.
27.
28.
29. Scenario: address book - successful creation
Given Default group exists
And Default employer exists
When I log in and open "Employer Address Book" page
And I click "add" for "address"
And I fill following fields:
| name | data |
| friendly name | [Address.AddressName] |
| address line1 | [Address.Line1] |
| address line2 | [Address.Line2] |
| address line3 | [Address.Line3] |
| address line4 | [Address.Town] |
| address line5 | [Address.County] |
| postcode | [Address.Postcode] |
And I click "save" for "address"
Then "Address Book" table consists only of the following rows:
| address name | address line 1 | postcode |
| [Address.AddressName] | [Address.Line1] | [Address.Postcode] |
38. public static string[] SplitByComma(this string text, string splitChar = ",")
{
if (string.IsNullOrEmpty(text))
{
return new string[0];
}
using (var reader = new TextFieldParser(new StringReader(text)))
{
reader.TextFieldType = FieldType.Delimited;
reader.SetDelimiters(splitChar);
reader.HasFieldsEnclosedInQuotes = true;
return reader.ReadFields();
}
}
39.
40. ▪ Oznaki zbyt dużych kroków
• rozbudowana sekcja given
• rozbudowana sekcja then
• długi czas jednego cyklu (ponad 10 minut dla TDD)
41. ▪ Oznaki zbyt dużych kroków
• rozbudowana sekcja given
• rozbudowana sekcja then
• długi czas jednego cyklu (ponad 10 minut dla TDD)
Test jednostkowy, który ma ponad 20 linii
jest praktycznie bezużyteczny ;)
42. The most common way that I hear to screw up
TDD is neglecting the third step. Refactoring the
code to keep it clean is a key part of the process,
otherwise you just end up with a messy
aggregation of code fragments.
Martin Fowler
43. ▪SRP – Single Responsibility Principle
▪„Comments Are Always Failures” (Uncle Bob)
▪YAGNI – „You aren't gonna need it”
▪KISS - Keep It Simple, Stupid!
▪DRY – Don’t repeat yourself
44.
45.
46. "Using examples at multiple levels to create a shared
understanding and surface uncertainty to deliver
software that matters"
Dan North