test continuous
TRANSCRIPT
![Page 2: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/2.jpg)
Continuous Testing
http://groups.csail.mit.edu/pag/continuoustesting/
![Page 3: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/3.jpg)
Eclipse PluginFor Java
![Page 4: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/4.jpg)
JUnit
![Page 5: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/5.jpg)
Foo.javaFooTest.java
![Page 6: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/6.jpg)
Foo.javaFooTest.java
Changed
![Page 7: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/7.jpg)
Foo.javaFooTest.java
Changed
auto run
![Page 8: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/8.jpg)
HEY
![Page 9: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/9.jpg)
We Perl
![Page 10: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/10.jpg)
![Page 11: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/11.jpg)
Test::Continuoushttp://search.cpan.org/dist/Test-Continuous
![Page 12: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/12.jpg)
DEMO
![Page 13: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/13.jpg)
perl -MTest::Continuous -e runtests'
murmur: There should be a better way...
![Page 14: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/14.jpg)
---------------------------------------------/Users/gugod/dev/Acme-Greeting/t/01.english.t (Wstat: 65280 Tests: 5 Failed: 1) Failed test: 5 Non-zero exit status: 255 Parse errors: Bad plan. You planned 4 tests but ran 5.Files=1, Tests=5, 0 wallclock secs ( 0.00 usr 0.01 sys + 0.05 cusr 0.01 csys = 0.07 CPU)Result: FAIL[MSG]: /Users/gugod/Acme-Greeting/t/01.english.t was changed./Users/gugod/dev/Acme-Greeting/t/01.english......ok
---------------------------------------------Result: PASS[MSG]: /Users/gugod/dev/Acme-Greeting/t/01.english.t was changed./Users/gugod/dev/Acme-Greeting/t/01.english......ok
---------------------------------------------
![Page 15: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/15.jpg)
What It Does...
1. Scan modified files
2. Find all tests requiring a re-run.
3. Run those tests
4. Report PASS / FAIL
5. GOTO 1
![Page 16: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/16.jpg)
How it’s done
1. Scan modified files. File::Modified
2. Find all tests requiring a re-run. Module::ExtractUse
3. Run those tests. App::Prove
4. Report PASS / FAIL. Log::Dispatch
5. GOTO 1. while(1)
![Page 17: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/17.jpg)
CPANFTWCPAN For The Win
![Page 18: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/18.jpg)
Good For...
![Page 19: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/19.jpg)
Test Driven Development
![Page 20: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/20.jpg)
Test DrivenRefactoring
![Page 21: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/21.jpg)
<CODE>
![Page 22: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/22.jpg)
What It Does (1st day)
1. Wait until any file is modified
2. Run all tests
3. Report PASS / FAIL
4. GOTO 1
![Page 23: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/23.jpg)
Run ALL tests
![Page 24: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/24.jpg)
Wasting Time
![Page 25: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/25.jpg)
Write less test
![Page 26: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/26.jpg)
bad software
![Page 27: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/27.jpg)
hate software
![Page 28: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/28.jpg)
![Page 29: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/29.jpg)
Run as few testsas possible
Module::ExtractUse
![Page 30: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/30.jpg)
Only run .t if that’s modified
![Page 31: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/31.jpg)
dependency of .t
![Page 32: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/32.jpg)
Cow.pm
Moose.pm moose.t
cow.t
OX.pm fight.t
![Page 33: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/33.jpg)
Cow.pm
Moose.pm moose.t
cow.t
OX.pm fight.t
![Page 34: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/34.jpg)
Cow.pm
Moose.pm moose.t
cow.t
OX.pm fight.t
![Page 35: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/35.jpg)
Cow.pm
Moose.pm moose.t
cow.t
OX.pm fight.t
![Page 36: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/36.jpg)
Cow.pm
Moose.pm moose.t
cow.t
OX.pm fight.t
![Page 37: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/37.jpg)
Log::Dispatch based notification
Should be easy extend
![Page 38: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/38.jpg)
Log::Dispatch::Screen
![Page 39: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/39.jpg)
---------------------------------------------/Users/gugod/dev/Acme-Greeting/t/01.english.t (Wstat: 65280 Tests: 5 Failed: 1) Failed test: 5 Non-zero exit status: 255 Parse errors: Bad plan. You planned 4 tests but ran 5.Files=1, Tests=5, 0 wallclock secs ( 0.00 usr 0.01 sys + 0.05 cusr 0.01 csys = 0.07 CPU)Result: FAIL[MSG]: /Users/gugod/Acme-Greeting/t/01.english.t was changed./Users/gugod/dev/Acme-Greeting/t/01.english......ok
---------------------------------------------Result: PASS[MSG]: /Users/gugod/dev/Acme-Greeting/t/01.english.t was changed./Users/gugod/dev/Acme-Greeting/t/01.english......ok
---------------------------------------------
![Page 40: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/40.jpg)
/me Mac
![Page 41: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/41.jpg)
Good developing platform
and macbook air is so shiny
![Page 44: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/44.jpg)
Log::Disptach::MacGrowlauto-used if installed
![Page 45: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/45.jpg)
Log::Disptach::MacGrowlauto-used if installed
![Page 46: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/46.jpg)
Not good enough...
![Page 47: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/47.jpg)
.pm → .t.c → .t
.conf → .t.yaml → .t
Only check .pmdependency
![Page 48: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/48.jpg)
Shallow Dependency
![Page 49: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/49.jpg)
Animal.pm
Cow.pm
Moose.pm
moose.tcow.t
![Page 50: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/50.jpg)
Animal.pm
Cow.pm
Moose.pm
moose.tcow.t
isa
![Page 51: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/51.jpg)
Animal.pm
Cow.pm
Moose.pm
moose.tcow.t
isa
isa
![Page 52: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/52.jpg)
Animal.pm
Cow.pm
Moose.pm
moose.tcow.t
isa
isa
tested by
![Page 53: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/53.jpg)
Animal.pm
Cow.pm
Moose.pm
moose.tcow.t
isa
isa
tested by
tested by
![Page 54: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/54.jpg)
Animal.pm
Cow.pm
Moose.pm
moose.tcow.t
isa
isa
tested by
tested by
![Page 55: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/55.jpg)
Animal.pm
Cow.pm
Moose.pm
moose.tcow.t
isa
isa
tested by
tested by
animal.t
tested by
![Page 56: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/56.jpg)
Should clearly notified what’s failed
![Page 57: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/57.jpg)
No High-Def cute looking iconICON DESIGNER WANTED
![Page 58: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/58.jpg)
Future
• Better Dependency Detection
• Convention based (For Catalyst / Jifty / Others)
• Configuration based
• Support other Universal Reminder on other platform. (Twitter!)
![Page 59: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/59.jpg)
END
![Page 60: Test Continuous](https://reader035.vdocuments.site/reader035/viewer/2022062418/55583250d8b42acb078b460e/html5/thumbnails/60.jpg)
Happy Testing