+ All Categories
Home > Technology > Test Continuous

Test Continuous

Date post: 17-May-2015
Category:
Upload: kang-min-liu
View: 3,062 times
Download: 0 times
Share this document with a friend
Popular Tags:
60
Test Continuous Kang-min Liu <[email protected] >
Transcript
Page 2: Test Continuous

Continuous Testing

http://groups.csail.mit.edu/pag/continuoustesting/

Page 3: Test Continuous

Eclipse PluginFor Java

Page 4: Test Continuous

JUnit

Page 5: Test Continuous

Foo.javaFooTest.java

Page 6: Test Continuous

Foo.javaFooTest.java

Changed

Page 7: Test Continuous

Foo.javaFooTest.java

Changed

auto run

Page 8: Test Continuous

HEY

Page 9: Test Continuous

We Perl

Page 10: Test Continuous
Page 11: Test Continuous

Test::Continuoushttp://search.cpan.org/dist/Test-Continuous

Page 12: Test Continuous

DEMO

Page 13: Test Continuous

perl -MTest::Continuous -e runtests'

murmur: There should be a better way...

Page 14: Test Continuous

---------------------------------------------/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

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

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

CPANFTWCPAN For The Win

Page 18: Test Continuous

Good For...

Page 19: Test Continuous

Test Driven Development

Page 20: Test Continuous

Test DrivenRefactoring

Page 21: Test Continuous

<CODE>

Page 22: Test Continuous

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

Run ALL tests

Page 24: Test Continuous

Wasting Time

Page 25: Test Continuous

Write less test

Page 26: Test Continuous

bad software

Page 27: Test Continuous

hate software

Page 28: Test Continuous
Page 29: Test Continuous

Run as few testsas possible

Module::ExtractUse

Page 30: Test Continuous

Only run .t if that’s modified

Page 31: Test Continuous

dependency of .t

Page 32: Test Continuous

Cow.pm

Moose.pm moose.t

cow.t

OX.pm fight.t

Page 33: Test Continuous

Cow.pm

Moose.pm moose.t

cow.t

OX.pm fight.t

Page 34: Test Continuous

Cow.pm

Moose.pm moose.t

cow.t

OX.pm fight.t

Page 35: Test Continuous

Cow.pm

Moose.pm moose.t

cow.t

OX.pm fight.t

Page 36: Test Continuous

Cow.pm

Moose.pm moose.t

cow.t

OX.pm fight.t

Page 37: Test Continuous

Log::Dispatch based notification

Should be easy extend

Page 38: Test Continuous

Log::Dispatch::Screen

Page 39: Test Continuous

---------------------------------------------/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

/me Mac

Page 41: Test Continuous

Good developing platform

and macbook air is so shiny

Page 42: Test Continuous

GrowlUniversal Reminder

http://growl.info

Page 43: Test Continuous

GrowlUniversal Reminder

http://growl.info

Page 44: Test Continuous

Log::Disptach::MacGrowlauto-used if installed

Page 45: Test Continuous

Log::Disptach::MacGrowlauto-used if installed

Page 46: Test Continuous

Not good enough...

Page 47: Test Continuous

.pm → .t.c → .t

.conf → .t.yaml → .t

Only check .pmdependency

Page 48: Test Continuous

Shallow Dependency

Page 49: Test Continuous

Animal.pm

Cow.pm

Moose.pm

moose.tcow.t

Page 50: Test Continuous

Animal.pm

Cow.pm

Moose.pm

moose.tcow.t

isa

Page 51: Test Continuous

Animal.pm

Cow.pm

Moose.pm

moose.tcow.t

isa

isa

Page 52: Test Continuous

Animal.pm

Cow.pm

Moose.pm

moose.tcow.t

isa

isa

tested by

Page 53: Test Continuous

Animal.pm

Cow.pm

Moose.pm

moose.tcow.t

isa

isa

tested by

tested by

Page 54: Test Continuous

Animal.pm

Cow.pm

Moose.pm

moose.tcow.t

isa

isa

tested by

tested by

Page 55: Test Continuous

Animal.pm

Cow.pm

Moose.pm

moose.tcow.t

isa

isa

tested by

tested by

animal.t

tested by

Page 56: Test Continuous

Should clearly notified what’s failed

Page 57: Test Continuous

No High-Def cute looking iconICON DESIGNER WANTED

Page 58: Test Continuous

Future

• Better Dependency Detection

• Convention based (For Catalyst / Jifty / Others)

• Configuration based

• Support other Universal Reminder on other platform. (Twitter!)

Page 59: Test Continuous

END

Page 60: Test Continuous

Happy Testing


Recommended