Acceptance tests

28 views
Skip to first unread message

Evgeni Dzhelyov

unread,
Aug 25, 2011, 6:37:17β€―AM8/25/11
to Software craftsmanship Bulgaria
Някой ΠΌΠΎΠΆΠ΅ Π»ΠΈ Π΄Π° сподСли информация (ΠΊΠ½ΠΈΠ³Π°, Π²ΠΈΠ΄Π΅ΠΎ, Π±Π»ΠΎΠ³ΠΎΠ²Π΅, Π»ΠΈΡ‡Π΅Π½
ΠΎΠΏΠΈΡ‚)
ΠΊΠ°ΠΊ Π΄Π° сС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈ към Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΠΈ писанСто Π½Π° acceptance тСстовС.

Π‘Π°ΠΌΠΎ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° UI Π»ΠΈ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°ΠΌΠ΅ acceptance тСст ?
Ако Π½ΠΈ Π΅ възлоТСно Π΄Π° напишСм ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΠΌΠΎΠ΄ΡƒΠ», ΠΏΠΎ-какъв Π½Π°Ρ‡ΠΈΠ½ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π°
Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°ΠΌΠ΅ public API-Ρ‚ΠΎ,
ΡƒΠ΄Π°Ρ‡Π½ΠΎ Π»ΠΈ Π΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ·Π²Π°Ρ‚ acceptance test, Π² Ρ‚Π°ΠΊΡŠΠ² случай ?

Hristo Koshev

unread,
Aug 25, 2011, 6:58:02β€―AM8/25/11
to software-crafts...@googlegroups.com
On 08/25/2011 01:37 PM, Evgeni Dzhelyov wrote:
> acceptance test
Zdravei,

Pregladai tova ... http://cukes.info/

Ako imash vuprosi pishi .... tova e po skoro pulna concepcia za
izgrajdane spored zadedeni kriterii ...

Pozdravi,
Hristo Kochev

Hristo Deshev

unread,
Aug 25, 2011, 7:03:00β€―AM8/25/11
to software-crafts...@googlegroups.com
Π—Π΄Ρ€Π°Π²Π΅ΠΉ Π•Π²Π³Π΅Π½ΠΈ,

МоТС Π±ΠΈ ΠΏΡŠΡ€Π²ΠΎ трябва Π΄Π° си изясним ΠΊΠ°ΠΊΠ²ΠΎ имаш ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ АВ ΠΈ Π·Π° ΠΊΠ°ΠΊΠ²ΠΎ Ρ‚ΠΈ трябва. Имаш Π»ΠΈ product owner(PO), с ΠΊΠΎΠΉΡ‚ΠΎ си ΠΎΠ±ΡΡŠΠΆΠ΄Π°Ρ‚Π΅ историитС ΠΈ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Ρ‚Π΅ тСстовС Π·Π° "успСх" Π½Π° всяка история? Ако Π΄Π°, Ρ‚ΠΎ ΠΈΠΌΠ° смисъл Π΄Π° ΠΏΡ€ΠΎΡƒΡ‡ΠΈΡˆ някой инструмСнт Π·Π° писанСто Π½Π° Ρ‚Π΅Π·ΠΈ тСстовС Π½Π° ΠΏΠΎ-високо Π½ΠΈΠ²ΠΎ Ρ‚Π°ΠΊΠ°, Ρ‡Π΅ Π²ΡŠΠΏΡ€ΠΎΡΠ½ΠΈΡΡ‚ Ρ‡ΠΎΠ²Π΅ΠΊ ΠΏΠΎΠ½Π΅ Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΈ Ρ€Π°Π·Ρ‡ΠΈΡ‚Π°. Π§ΡƒΠ²Π°ΠΌ, Ρ‡Π΅ Fit/Fitnesse ΠΈ Cucumber са интСрСсни инструмСнти. Π‘ΠΈΠ³ΡƒΡ€Π½ΠΎ ΠΈΠΌΠ° ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ. Нямаш PO? Какво искаш Π΄Π° ΠΏΠΎΡΡ‚ΠΈΠ³Π½Π΅Ρˆ с Ρ‚Π΅Π·ΠΈ тСстовС? Имаш Π»ΠΈ Π²Π΅Ρ‡Π΅ unit tests?

Ако нямаш PO, моТСш Π΄Π° си Ρ€Π°Π·ΠΏΠΈΡˆΠ΅Ρˆ тСстовС Π½Π° ΠΊΠ°ΠΊΠ²ΠΎΡ‚ΠΎ Π½Π° Ρ‚Π΅Π± Ρ‚ΠΈ Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Π·Π° Π΄Π° ΡƒΠΏΡ€Π°ΠΆΠ½ΠΈΡˆ цялата функционалност Π² историята. Π₯ΡƒΠ±Π°Π²ΠΎ Π΅ Π΄Π° каТСш ΠΈ какъв ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΡ€Π°Π²ΠΈΡˆ. ΠŸΡ€ΠΈ дСсктоп ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ³Ρ€Π°Ρ‚Π° Π΅ Π΅Π΄Π½Π°, ΠΏΡ€ΠΈ ΡƒΠ΅Π±, Π΄Ρ€ΡƒΠ³Π°, Π° ΠΈΠΌΠ° ΠΈ ΠΎΡ‰Π΅ случаи. Π—Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠΌΠ°Π» съм АВ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Π²Π° REST API Π² ΡƒΠ΅Π±Π° с моя самодСлка, която ΠΏΡ€Π°Π²Π΅ΡˆΠ΅ Π½ΡƒΠΆΠ½ΠΈΡ‚Π΅ HTTP заявки. Π£Π΄ΠΎΠ±Π½ΠΎ Π΅ ΠΊΠ°Ρ‚ΠΎ "потрСбитСлския Ρ‚ΠΈ интСрфСйс" сС парсва лСсно с JSON ΠΏΠ°Ρ€ΡΡŠΡ€ Π½Π°Π»ΠΈ :-)

2011/8/25 Evgeni Dzhelyov <evgeni....@gmail.com>
...

Π‘Π°ΠΌΠΎ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° UI Π»ΠΈ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°ΠΌΠ΅ acceptance тСст ?

ЧСсто срСщана Π·Π°Π±Π»ΡƒΠ΄Π° Π΅, Ρ‡Π΅ АВ трябва Π΄Π° ΠΌΠΈΠ½Π°Π²Π°Ρ‚ ΠΏΡ€Π΅Π· потрСбитСлският интСрфСйс. Аз Π΄Π°ΠΆΠ΅ Π±ΠΈΡ… ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π°Π», Π°ΠΊΠΎ ΠΌΠΎΠΆΠ΅, Π΄Π° сС избягва, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Ρ‚ΠΎΠ²Π° Π²ΠΈΠ½Π°Π³ΠΈ носи Π½Π΅ΠΎΡ‡Π°ΠΊΠ²Π°Π½ΠΈ услоТнСния.
Β 
Ако Π½ΠΈ Π΅ възлоТСно Π΄Π° напишСм ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΠΌΠΎΠ΄ΡƒΠ», ΠΏΠΎ-какъв Π½Π°Ρ‡ΠΈΠ½ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π°
Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°ΠΌΠ΅ public API-Ρ‚ΠΎ,
ΡƒΠ΄Π°Ρ‡Π½ΠΎ Π»ΠΈ Π΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ·Π²Π°Ρ‚ acceptance test, Π² Ρ‚Π°ΠΊΡŠΠ² случай ?

НС само, Ρ‡Π΅ Π΅ ΡƒΠ΄Π°Ρ‡Π½ΠΎ, Π½ΠΎ ΠΈ Π½Π°ΠΏΡ€Π°Π²ΠΎ нямаш ΠΎΠΏΡ€Π°Π²Π΄Π°Π½ΠΈΠ΅ Π΄Π° Π½Π΅ Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡˆ, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Ρ‰Π΅ Π΅ доста лСсно. Π’Π°ΠΊΠ° Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π·Π° ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΡ‚ΠΎ АПИ си Π³ΠΈ Ρ€Π°Π·ΠΏΠΈΡΠ²Π°Ρˆ Π² тСстовС ΠΈ послС Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π³ΠΈ Π²ΠΊΠ°Ρ€Π²Π°Ρˆ Π² докумСнтацията. Π’Π·ΠΈΠΌΠ°Ρˆ бонус Ρ‚ΠΎΡ‡ΠΊΠΈ, Π°ΠΊΠΎ сглобиш инструмСнт, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€Π°Π²ΠΈ ΠΏΡ€Π΅Π΄Π½ΠΎΡ‚ΠΎ напълно Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ. (Π’ΠΎ пък Сдиния инструмСнт - сигурно са Π΄Π²Π° рСгСкса.)

ΠŸΠΎΠ·Π΄Ρ€Π°Π²ΠΈ,
Π₯ристо

Evgeni Dzhelyov

unread,
Sep 2, 2011, 8:53:01β€―AM9/2/11
to software-crafts...@googlegroups.com
Под АВ Ρ€Π°Π·Π±ΠΈΡ€Π°ΠΌ тСст, ΠΊΠΎΠΉΡ‚ΠΎ описва фунциалността ΠΎΡ‚ PO Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ°,
ΠΌΠΎΠΆΠ΅ Π΄Π° послуТи ΠΊΠ°Ρ‚ΠΎ докумСнтация
Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° систСмата ΠΈ сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ Π² срСда Π±Π»ΠΈΠ·ΠΊΠ° Π΄ΠΎ
production. И ΠΊΠ°Ρ‚ΠΎ цяло тСстват изцяло ΠΈΠ»ΠΈ
Π±Π»ΠΈΠ·ΠΊΠΎ Π΄ΠΎ end-to-end. Π’Π΅Π·ΠΈ тСстовС вСднъТ ΠΌΠΈΠ½Π°Π²Π°Ρ‰ΠΈ Π½Π΅ трябва Π΄Π°
Ρ„Π΅ΠΉΠ»Π²Π°Ρ‚, Π° Π°ΠΊΠΎ Ρ‚ΠΎΠ²Π° станС Π΅ сигнал Π·Π°
regression.

Аз работя с ΡƒΠ΅Π± Π½Π΅Ρ‰Π° ΠΈ Ρ‚Π°ΠΌ ΠΈΠΌΠ° доста ΠΈΠ½Ρ„ΠΎ ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΊΠ°ΠΊ Π΄Π° Π³ΠΈ
напишСш, Π΄Π°Π»ΠΈ Ρ‰Π΅ минСш ΠΏΡ€Π΅Π· 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

Hristo Deshev

unread,
Sep 3, 2011, 8:36:02β€―AM9/3/11
to software-crafts...@googlegroups.com
2011/9/2 Evgeni Dzhelyov <evgeni....@gmail.com>
...
Някой Π·Π½Π°Π΅ Π»ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΈ ΠΈΠ»ΠΈ собствСн ΠΎΠΏΠΈΡ‚, ΠΊΠΎΠΈΡ‚ΠΎ Π΄Π° сподСли.

Мога Π΄Π° ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π°ΠΌ Π΅Π΄Π½Π° "старичка" ΠΊΠ½ΠΈΠ³Π° Π½Π° Ron Jeffries -Β Extreme Programming Adventures in C#. Π”Π°, ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈΡ‚Π΅ са Π½Π° C#, Π½ΠΎ са Ρ‚Π°ΠΊΠ° Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΈ, Ρ‡Π΅ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‰ Ρ‰Π΅ Π³ΠΈ Ρ€Π°Π·Π±Π΅Ρ€Π΅. Π’ΠΎΡ‡Π½ΠΎ Π² Ρ‚Π°Π·ΠΈ ΠΊΠ½ΠΈΠ³Π° дядо Π ΠΎΠ½ описва ΠΊΠ°ΠΊ сС ΡƒΡ‡ΠΈ Π½Π° .НЕВ ΠΈ с Π½Π΅Π³ΠΎΠ²ΠΎΡ‚ΠΎ Π΄Ρ€ΡƒΠ³Π°Ρ€Ρ‡Π΅ (Chet) ΠΏΠΈΡˆΠ°Ρ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Π·Π° XML ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°. Π’ΡŠΡ‚Ρ€Π΅ ΠΈΠΌΠ° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½ΠΎ Π΅Π·ΠΈΡ‡Π΅ Π·Π° описванС Π½Π° тСст сцСнарии, ΠΊΠΎΠ΅Ρ‚ΠΎ парсват Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ€Π½ΠΎ с рСгСкси. ΠŸΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚ Π°ΠΊΡΠ΅ΠΏΡ‚ΡŠΠ½Ρ тСстовС с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅Π½ тСкст, позиция Π½Π° курсора, изпълняванС Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΈ Ρ‚.Π½. Π’ΠΎΠ²Π° с ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Ρ†Π΅Ρ€Π΅ΠΌΠΎΠ½ΠΈΠΈ, Π½ΡƒΠ»Π° външни инструмСнти ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ Π±Π΅Π· Π΄ΠΎΠ±Π°Π²Π΅Π½Π° слоТност. (Π•Π΄ΠΈΠ½ ΠΎΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅ ΠΌΠΈ ΠΏΡ€ΠΎΡ‚ΠΈΠ² Cucumber/Fit/Fitnesse Π΅, Ρ‡Π΅ Π²ΠΊΠ°Ρ€Π²Π°Ρ‚ Π΅Π΄ΠΈΠ½ Ρ‚ΠΎΠ½ глупости, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Ρ‡ΠΎΠ²Π΅ΠΊ просто иска Π΄Π° напишС Π΅Π΄ΠΈΠ½-Π΄Π²Π° тСста). ΠžΡ‚Π½ΠΎΠ²ΠΎ, ΠΊΠ½ΠΈΠ³Π°Ρ‚Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°Π±Π°Π²Π½Π° ΠΈ Π ΠΎΠ½ ДТСфрис Π΅ страхотСн Π°Π²Ρ‚ΠΎΡ€. Ако някой Π½Π΅ Π³ΠΎ Π΅ Ρ‡ΡƒΠ²Π°Π» ΠΊΠ°Ρ‚ΠΎ ΠΈΠΌΠ΅ -- Ρ‚ΠΎΠΉ Π΅ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ Π±Π°Ρ‰ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° Extreme Programming.

Β 
ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ, сСга ΠΌΠΈ сС Π½Π°Π»Π°Π³Π° Π΄Π° Π±Π°Ρ‡ΠΊΠ°ΠΌ с някакво ΠΊΠΎΠ½Π·ΠΎΠ»Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ
сС чудя ΠΊΠ°ΠΊ Π΄Π° Π³ΠΎ тСствам ?
Мога Π΄Π° напиша тСстовС ΠΊΠΎΠΈΡ‚ΠΎ Π³ΠΎ стартират, ΠΏΠΎΠ΄Π°Π²Π°Ρ‚ ΠΌΡƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ
Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ ΠΈ Π΄Π° Π³Π»Π΅Π΄Π°ΠΌ послС Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π°, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π΄Π° прСнасоча STDOUT ΠΈ
STDERR ΠΈ Π΄Π° Π³ΠΈ ΠΏΡ€Π΅Π³Π»Π΅Π΄Π°ΠΌ, Π΄Π°Π»ΠΈ
са ΠΎΡ‡Π°ΠΊΠ²Π°Π½ΠΈΡ‚Π΅. Или пък ΠΌΠΎΠ³Π° Π΄Π° видя ΠΊΠ°ΠΊΠ²ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ сС Π²ΠΈΠΊΠ°Ρ‚, ΠΊΠ°Ρ‚ΠΎ
сС ΠΈΠ·Π²ΠΈΠΊΠ° bin-a ΠΈ Π΄Π° тСствам тях, Π½ΠΎ Ρ‚Π΅Π·ΠΈ тСстовС Π½Π΅ ΠΌΠΈ ΠΊΠ°Π·Π²Π°Ρ‚, Ρ‡Π΅
Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ Ρ€Π΅Π°Π»Π½ΠΎ bin-a Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΊΠ°ΠΊΡ‚ΠΎ сС ΠΎΡ‡Π°ΠΊΠ²Π°.
Π’ΠΎΠ³Π°Π²Π° ΠΊΠ°ΠΊΠ²ΠΈ тСстовС трябват Π·Π° Π΄Π° ΠΏΠΎΡ‚Π²ΡŠΡ€Π΄ΡΡ‚, Ρ‡Π΅ ΠΈ bin-a Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ ?

Ако Π½Π΅ си ΠΏΡ€Π°Π²ΠΈΠ» прСнасочванСто Π½Π° stdout/stdin/stderr, ΠΏΡ€ΠΎΠ±Π²Π°ΠΉ Π³ΠΎ Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ, Π·Π° Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΠΈΡ‚Π°Ρˆ сам. Аз съм Π³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ» ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΈ харСса. ПослС, Π½Π° Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π·Π°Π΄Π°Ρ‡Π°, ΠΎΡΡŠΠ·Π½Π°Ρ…, Ρ‡Π΅ Π΅ излишно усилиС. Какво правя Ρ‚Π΅Π·ΠΈ Π΄Π½ΠΈ:

1) НС Π΄ΡŠΡ€ΠΆΠ° "истински" ΠΊΠΎΠ΄ Π² изпълнимия Ρ„Π°ΠΉΠ». Всичко Π΅ във външни класовС.
2) ВСствам обстойно Ρ‚Π΅Π·ΠΈ класовС. Π’Π°ΠΌ ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ трябва Π΄Π° работят със stdin/stdout/stderr ΠΏΠΎΠ΄Π°Π²Π°ΠΌ някакъв stream ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠ²ΠΎΡ‚ΠΎ Ρ‚Π°ΠΌ ΠΌΡƒ Π²ΠΈΠΊΠ°Ρ‚ Π² Π ΡƒΠ±ΠΈ.
3) Main ΠΌΠ΅Ρ‚ΠΎΠ΄ΡŠΡ‚ ΠΈΠ»ΠΈ скрипта, ΠΊΠΎΠΉΡ‚ΠΎ сС Π²ΠΈΠΊΠ° ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° просто създава 1-2 ΠΎΡ‚ горСспомСнатитС класовС ΠΈ ΠΈΠΌ ΠΏΠΎΠ΄Π°Π²Π° argv/stdin/stdout/stderr. ОбикновСно Ρ‚ΠΎΠΉ Π΅ 2-3 Ρ€Π΅Π΄Π° ΠΈ спокойно ΠΌΠΎΠ³Π° Π΄Π° Π½Π΅ Π³ΠΎ тСствам.

НСка Ρ€Π΅Π·ΡŽΠΌΠΈΡ€Π°ΠΌ. Мисля, Ρ‡Π΅ Π½ΠΈ трябват ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ *Π³ΠΎΡ‚ΠΎΠ²ΠΈ* инструмСнти ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° ΠΈ мислСнС. НС Π±ΠΈΠ²Π° Π΄Π° сС притСснявамС ΠΎΡ‚ Ρ‚ΠΎΠ²Π° Π΄Π° си сглобим Π½Π΅Ρ‰ΠΎ нашС, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΄Π° Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ насочСно към конкрСтния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π΅ максимално просто.

ΠŸΠΎΠ·Π΄Ρ€Π°Π²ΠΈ ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ тСстванС,
Π₯ристо

P.S. Π’ Ρ‚ΠΎΡ‡ΠΊΠ° 3 ΠΏΠΎ-Π³ΠΎΡ€Π΅ ΠΌΠΎΠ³Π° Π΄Π° ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ° ΠΈ Π΄Ρ€ΡƒΠ³ ΠΏΡŠΡ‚ Π·Π° СкспСримСнтиранС. ВСстванС Π½Π° клас с Main ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ»ΠΈ Π΄Ρ€Π°ΠΉΠ²ΡŠΡ€ скрипт ΠΊΠ°Ρ‚ΠΎ Π³ΠΎ Π²ΠΈΠΊΠ°ΠΌΠ΅ със спСциалСн ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€, ΠΊΠΎΠΉΡ‚ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π° ΠΊΠΎΠΉ "Ρ€Π°Π±ΠΎΡ‚Π΅Π½" клас Ρ‰Π΅ сС създадС. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‡Ρ€Π΅Π· създаванС Π½Π° Ρ„Π°Π»ΡˆΠΈΠ² ΠΎΠ±Π΅ΠΊΡ‚ Π·Π° Ρ‚ΠΎΠ²Π° Π΄Π°Π»ΠΈ Π²Ρ…ΠΎΠ΄Π½ΠΈΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ са ΠΏΡ€Π΅Π΄Π°Π΄Π΅Π½ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ. НС ΠΊΠ°Π·Π²Π°ΠΌ, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π½Π° ΠΈΠ»ΠΈ Π³Ρ€Π΅ΡˆΠ½Π° Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ°. Π”ΠΎΠ±Ρ€Π΅ Π΅ Π΄Π° сС ΠΈΠ·ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΠ²Π° ΠΈ Π΄Π° си я ΠΈΠΌΠ°ΠΌΠ΅ Π² кутията с инструмСнтитС.
Reply all
Reply to author
Forward
0 new messages