Π‘Π°ΠΌΠΎ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° UI Π»ΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΠΌΠ΅ acceptance ΡΠ΅ΡΡ ?
ΠΠΊΠΎ Π½ΠΈ Π΅ Π²ΡΠ·Π»ΠΎΠΆΠ΅Π½ΠΎ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΠΎΡΠ΄Π΅Π»Π΅Π½ ΠΌΠΎΠ΄ΡΠ», ΠΏΠΎ-ΠΊΠ°ΠΊΡΠ² Π½Π°ΡΠΈΠ½ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π°
Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΠΌΠ΅ public API-ΡΠΎ,
ΡΠ΄Π°ΡΠ½ΠΎ Π»ΠΈ Π΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ·Π²Π°Ρ acceptance test, Π² ΡΠ°ΠΊΡΠ² ΡΠ»ΡΡΠ°ΠΉ ?
Pregladai tova ... http://cukes.info/
Ako imash vuprosi pishi .... tova e po skoro pulna concepcia za
izgrajdane spored zadedeni kriterii ...
Pozdravi,
Hristo Kochev
Π‘Π°ΠΌΠΎ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° UI Π»ΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΠΌΠ΅ acceptance ΡΠ΅ΡΡ ?
ΠΠΊΠΎ Π½ΠΈ Π΅ Π²ΡΠ·Π»ΠΎΠΆΠ΅Π½ΠΎ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΠΎΡΠ΄Π΅Π»Π΅Π½ ΠΌΠΎΠ΄ΡΠ», ΠΏΠΎ-ΠΊΠ°ΠΊΡΠ² Π½Π°ΡΠΈΠ½ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π°
Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΠΌΠ΅ public API-ΡΠΎ,
ΡΠ΄Π°ΡΠ½ΠΎ Π»ΠΈ Π΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ·Π²Π°Ρ acceptance test, Π² ΡΠ°ΠΊΡΠ² ΡΠ»ΡΡΠ°ΠΉ ?
ΠΠ· ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ΅Π± Π½Π΅ΡΠ° ΠΈ ΡΠ°ΠΌ ΠΈΠΌΠ° Π΄ΠΎΡΡΠ° ΠΈΠ½ΡΠΎ ΠΈ ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΊΠ°ΠΊ Π΄Π° Π³ΠΈ
Π½Π°ΠΏΠΈΡΠ΅Ρ, Π΄Π°Π»ΠΈ ΡΠ΅ ΠΌΠΈΠ½Π΅Ρ ΠΏΡΠ΅Π· GUI, Π΄Π°Π»ΠΈ Π½ΡΠΌΠ° Π΄Π° ΠΌΠΈΠ½Π΅Ρ
ΠΈ Ρ.Π½.
ΠΠ΅Π½ ΠΌΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ²Π°, Π΄Π°Π»ΠΈ Π½ΡΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠΆΠ΄Π° ΠΊΡΠΌ Π΄ΡΡΠ³ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ°
ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈ ΠΈ ΡΠ° ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°Π½ΠΈ ΠΊΡΠΌ ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠΊΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ.
ΠΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ
Π²Π°Π½Π°Π» ΡΡΠΌ Π΄Π° ΡΠ΅ΡΠ°Π²Π°ΠΌ ΡΠ°Π·Π½ΠΈ Π·Π°Π΄Π°ΡΠΈ ΠΎΡ puzzlenode.com, ΠΊΠ°ΡΠΎ
ΠΈΠ΄Π΅ΡΡΠ° ΠΌΠΈ Π΅ Π΄Π° ΡΡΠ΅Π½ΠΈΡΠ°ΠΌ TDD ΠΏΠΎΠ΄Ρ
ΠΎΠ΄.
Π‘Π°ΠΌΠΈΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΡΠ° Π΄ΠΎΡΡΠ° ΠΌΠ°Π»ΠΊΠΈ, Π²Π·ΠΈΠΌΠ°Ρ Π½ΡΠΊΠ°ΠΊΡΠ² ΡΠ΅ΠΊΡΡ Π·Π° Π²Ρ
ΠΎΠ΄ ΠΈ Π²ΡΡΡΠ°Ρ
Π΄ΡΡΠ³ ΡΠ΅ΠΊΡΡ Π·Π° ΠΈΠ·Ρ
ΠΎΠ΄. Π ΠΠ’ ΠΊΠΎΠΈΡΠΎ ΠΏΠΈΡΠ° Π·Π° ΡΡΡ
ΡΠ° Π½Π΅ΡΠΎ
ΠΎΡ ΡΠΎΠ΄Π° Π½Π°:
test 'solve simple case' do
fixture = load 'simple_case.input'
expected = load 'simple_case.output'
answer = Solver.new fixture
assert answer, expected
end
test 'solve more complicated case' do
...
end
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°ΠΌ ΠΊΡΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡ TDD ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΠΈ Π·Π½Π°ΠΌ, ΡΠ΅ ΠΊΠ°ΡΠΎ ΠΌΠΈ
ΠΌΠΈΠ½Π°Ρ Π³ΠΎΡΠ½ΠΈΡΠ΅ ΡΠ΅ΡΡΠΎΠ²Π΅ ΠΈΠΌΠ°ΠΌ Π½ΡΠΊΠ°ΠΊΠ²ΠΎ ΡΠ°Π±ΠΎΡΠ΅ΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅.
Π‘ Π΄ΡΡΠ³ΠΈ Π΄ΡΠΌΠΈ ΡΠ΅ΡΡΠ²Π°ΠΌ Π½Π°ΠΉ-Π²ΡΠ½ΡΠ½ΠΈΡ ΡΠ»ΠΎΠΉ, ΠΊΠΎΠΉΡΠΎ ΡΠΌΡΡΠ°ΠΌ ΡΠ΅ ΠΈΠΌΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΡΠ΅ΡΠ° 'Growing object oriented software guided by tests' ΠΈ
ΡΠΎΠ²Π° Π΅ ΠΏΡΡΠ²Π°ΡΠ° ΠΊΠ½ΠΈΠ³Π° Π² ΠΊΠΎΡΡΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈΡΠ΅ ΡΠ΅ΡΡΠΎΠ²Π΅ ΡΠ° ΡΡΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈ ΠΈ
ΠΎΠΏΠΈΡΠ°Π½ΠΈ.
ΠΠ»Π΅Π΄Π°Ρ
ΡΠΎΠ²Π° Π²ΠΈΠ΄Π΅ΠΎ[1] Π½Π° Yehuda Katz, ΠΊΡΠ΄Π΅ΡΠΎ ΠΎΠ±ΡΡΠ½ΡΠ²Π° ΠΊΠ°ΠΊ Π²ΡΠΈΡΠΊΠΈΡΠ΅
ΡΠ΅ΡΡΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ ΡΠ° ΠΈΠΌΠ°Π»ΠΈ Π² merb 0.5 Π½Π΅ ΡΠ° ΠΈΠΌ Π²ΡΡΡΠΈΠ»ΠΈ Π½ΠΈΠΊΠ°ΠΊΠ²Π° ΡΠ°Π±ΠΎΡΠ° Π·Π°
refactoring
ΠΈ Π·Π°ΡΠΎΠ²Π° ΡΠ° Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ Π½ΠΎΠ²ΠΈ ΠΊΠΎΠΈΡΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΌΠΈΠ½Π°Π²Π°Ρ ΠΏΡΠ΅Π· public API-ΡΠΎ ΠΈΠΌ.
ΠΠΎ ΡΠΎΠ²Π° ΡΠ° Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΈΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈ, Π΄ΠΎ ΠΊΠΎΠΈΡΠΎ ΠΈΠΌΠ°ΠΌ Π΄ΠΎΡΡΡΠΏ, ΠΊΠΎΠΈΡΠΎ
ΠΎΠ±ΡΡΠ½Π°Π²ΡΡ Π½Π΅ΡΠ°ΡΠ° Π² Π΄ΡΠ»Π±ΠΎΡΠΈΠ½Π° ΠΈ Π΄Π°Π²Π°Ρ ΡΠΎΡΠ½ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΈ. ΠΡΠΈΡΠΊΠΎ ΠΎΡΡΠ°Π½Π°Π»ΠΎ Π΅
ΠΊΠ°ΠΊΡΠ² Π΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ°
Π½Π° Π΅Π΄ΠΈ ΠΊΠΎΠΉ ΡΠΈ xUnit, ΠΊΠ°ΠΊ unit ΡΠ΅ΡΡΠΎΠ²Π΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ΅Π»ΠΈ ΠΈΠ»ΠΈ Π½Π΅ ΡΠ°Π±ΠΎΡΠΈΠ»ΠΈ,
cucumber-ΡΠΊΠΈΡ Gherkin ΠΈ Ρ.Π½.
ΠΡΠΊΠΎΠΉ Π·Π½Π°Π΅ Π»ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈ ΠΈΠ»ΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΠΎΠΏΠΈΡ, ΠΊΠΎΠΈΡΠΎ Π΄Π° ΡΠΏΠΎΠ΄Π΅Π»ΠΈ.
ΠΡΠΈΠΌΠ΅ΡΠ½ΠΎ, ΡΠ΅Π³Π° ΠΌΠΈ ΡΠ΅ Π½Π°Π»Π°Π³Π° Π΄Π° Π±Π°ΡΠΊΠ°ΠΌ Ρ Π½ΡΠΊΠ°ΠΊΠ²ΠΎ ΠΊΠΎΠ½Π·ΠΎΠ»Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ
ΡΠ΅ ΡΡΠ΄Ρ ΠΊΠ°ΠΊ Π΄Π° Π³ΠΎ ΡΠ΅ΡΡΠ²Π°ΠΌ ?
ΠΠΎΠ³Π° Π΄Π° Π½Π°ΠΏΠΈΡΠ° ΡΠ΅ΡΡΠΎΠ²Π΅ ΠΊΠΎΠΈΡΠΎ Π³ΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Ρ, ΠΏΠΎΠ΄Π°Π²Π°Ρ ΠΌΡ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ
Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ ΠΈ Π΄Π° Π³Π»Π΅Π΄Π°ΠΌ ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ°, ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π΄Π° ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ° STDOUT ΠΈ
STDERR ΠΈ Π΄Π° Π³ΠΈ ΠΏΡΠ΅Π³Π»Π΅Π΄Π°ΠΌ, Π΄Π°Π»ΠΈ
ΡΠ° ΠΎΡΠ°ΠΊΠ²Π°Π½ΠΈΡΠ΅. ΠΠ»ΠΈ ΠΏΡΠΊ ΠΌΠΎΠ³Π° Π΄Π° Π²ΠΈΠ΄Ρ ΠΊΠ°ΠΊΠ²ΠΈ ΡΠΎΡΠ½ΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΈ ΡΠ΅ Π²ΠΈΠΊΠ°Ρ, ΠΊΠ°ΡΠΎ
ΡΠ΅ ΠΈΠ·Π²ΠΈΠΊΠ° bin-a ΠΈ Π΄Π° ΡΠ΅ΡΡΠ²Π°ΠΌ ΡΡΡ
, Π½ΠΎ ΡΠ΅Π·ΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅ Π½Π΅ ΠΌΠΈ ΠΊΠ°Π·Π²Π°Ρ, ΡΠ΅
Π²ΡΡΡΠ½ΠΎΡΡ ΡΠ΅Π°Π»Π½ΠΎ bin-a ΡΠ°Π±ΠΎΡΠΈ ΠΊΠ°ΠΊΡΠΎ ΡΠ΅ ΠΎΡΠ°ΠΊΠ²Π°.
Π’ΠΎΠ³Π°Π²Π° ΠΊΠ°ΠΊΠ²ΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅ ΡΡΡΠ±Π²Π°Ρ Π·Π° Π΄Π° ΠΏΠΎΡΠ²ΡΡΠ΄ΡΡ, ΡΠ΅ ΠΈ bin-a ΡΠ°Π±ΠΎΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ?
ΠΠΎΠ·Π΄ΡΠ°Π²ΠΈ,
ΠΠ²Π³Π΅Π½ΠΈ
[1] http://rubyconf2008.confreaks.com/writing-code-that-doesnt-suck.html
ΠΡΠΊΠΎΠΉ Π·Π½Π°Π΅ Π»ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈ ΠΈΠ»ΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΠΎΠΏΠΈΡ, ΠΊΠΎΠΈΡΠΎ Π΄Π° ΡΠΏΠΎΠ΄Π΅Π»ΠΈ.
ΠΡΠΈΠΌΠ΅ΡΠ½ΠΎ, ΡΠ΅Π³Π° ΠΌΠΈ ΡΠ΅ Π½Π°Π»Π°Π³Π° Π΄Π° Π±Π°ΡΠΊΠ°ΠΌ Ρ Π½ΡΠΊΠ°ΠΊΠ²ΠΎ ΠΊΠΎΠ½Π·ΠΎΠ»Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ
ΡΠ΅ ΡΡΠ΄Ρ ΠΊΠ°ΠΊ Π΄Π° Π³ΠΎ ΡΠ΅ΡΡΠ²Π°ΠΌ ?
ΠΠΎΠ³Π° Π΄Π° Π½Π°ΠΏΠΈΡΠ° ΡΠ΅ΡΡΠΎΠ²Π΅ ΠΊΠΎΠΈΡΠΎ Π³ΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Ρ, ΠΏΠΎΠ΄Π°Π²Π°Ρ ΠΌΡ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ
Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ ΠΈ Π΄Π° Π³Π»Π΅Π΄Π°ΠΌ ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ°, ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π΄Π° ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ° STDOUT ΠΈ
STDERR ΠΈ Π΄Π° Π³ΠΈ ΠΏΡΠ΅Π³Π»Π΅Π΄Π°ΠΌ, Π΄Π°Π»ΠΈ
ΡΠ° ΠΎΡΠ°ΠΊΠ²Π°Π½ΠΈΡΠ΅. ΠΠ»ΠΈ ΠΏΡΠΊ ΠΌΠΎΠ³Π° Π΄Π° Π²ΠΈΠ΄Ρ ΠΊΠ°ΠΊΠ²ΠΈ ΡΠΎΡΠ½ΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΈ ΡΠ΅ Π²ΠΈΠΊΠ°Ρ, ΠΊΠ°ΡΠΎ
ΡΠ΅ ΠΈΠ·Π²ΠΈΠΊΠ° bin-a ΠΈ Π΄Π° ΡΠ΅ΡΡΠ²Π°ΠΌ ΡΡΡ , Π½ΠΎ ΡΠ΅Π·ΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅ Π½Π΅ ΠΌΠΈ ΠΊΠ°Π·Π²Π°Ρ, ΡΠ΅
Π²ΡΡΡΠ½ΠΎΡΡ ΡΠ΅Π°Π»Π½ΠΎ bin-a ΡΠ°Π±ΠΎΡΠΈ ΠΊΠ°ΠΊΡΠΎ ΡΠ΅ ΠΎΡΠ°ΠΊΠ²Π°.
Π’ΠΎΠ³Π°Π²Π° ΠΊΠ°ΠΊΠ²ΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅ ΡΡΡΠ±Π²Π°Ρ Π·Π° Π΄Π° ΠΏΠΎΡΠ²ΡΡΠ΄ΡΡ, ΡΠ΅ ΠΈ bin-a ΡΠ°Π±ΠΎΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ?