Slide 1

Slide 1 text

A New Testing Framework Rgot ksss RubyKaigi2015

Slide 2

Slide 2 text

! " ksss _ksss_

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

A New Testing Framework was born …

Slide 5

Slide 5 text

Rgot Ruby + Golang Testing ksss/rgot !

Slide 6

Slide 6 text

$ gem i rgot ksss/rgot ! ruby 2.0 ʙ

Slide 7

Slide 7 text

!? ksss/rgot !

Slide 8

Slide 8 text

Again? ksss/rgot !

Slide 9

Slide 9 text

Do We Have to Learning New Things? ksss/rgot !

Slide 10

Slide 10 text

Rgot is Translation from Golang Testing to Ruby ksss/rgot !

Slide 11

Slide 11 text

Incidentally You Can Learn Golang Testing! ksss/rgot !

Slide 12

Slide 12 text

Golang ksss/rgot ! package foo_test func TestFooBar(t *testing.T) { if 3 != (1 + 2) { t.Error("failed") } }

Slide 13

Slide 13 text

Rgot ksss/rgot ! module FooTest def test_foo(t) if 3 != (1 + 2) t.error("failed") end end end

Slide 14

Slide 14 text

Golang-ish ksss/rgot !

Slide 15

Slide 15 text

Golang ksss/rgot ! $ go test -v === RUN TestFoo --- PASS: TestFoo (1.01s) === RUN TestBar --- PASS: TestBar (1.00s) === RUN TestBaz --- PASS: TestBaz (1.01s) PASS ok ksss/gotest 3.017s

Slide 16

Slide 16 text

Rgot ksss/rgot ! $ rgot -v === RUN test_foo --- PASS: test_foo (1.01s) === RUN test_bar --- PASS: test_bar (1.00s) === RUN test_baz --- PASS: test_baz (1.01s) PASS ok RgotTest 3.042s

Slide 17

Slide 17 text

Golang ksss/rgot ! package foo_test func BenchmarkQux(b *testing.B) { for i := 0; i < b.N; i++ { foo.Qux() } }

Slide 18

Slide 18 text

Rgot ksss/rgot ! module FooTest def benchmark_qux(b) i = 0 while i < b.n Foo.qux i += 1 end end end

Slide 19

Slide 19 text

Golang ksss/rgot ! package pow_test func BenchmarkPow(b *testing.B) { b.RunParallel(func(pb *testing.PB) { for pb.Next() { math.Pow(1000.0, 1000.0) } }) }

Slide 20

Slide 20 text

Rgot ksss/rgot ! module PowTest def benchmark_pow(b) b.run_parallel do |pb| while pb.next 1000.0 ** 1000.0 end end end end

Slide 21

Slide 21 text

Golang ksss/rgot ! $ go test -bench . -cpu 2,4 PASS BenchmarkPow-2 100000000 22.3 ns/op BenchmarkPow-4 100000000 12.5 ns/op ok github.com/pow_test 3.522s GOMAXPROCS

Slide 22

Slide 22 text

Rgot ksss/rgot ! $ rgot --bench . --cpu 2,4 --thread 2,4 PASS benchmark_pow-2(2) 25600000 74 ns/op benchmark_pow-2(4) 81920000 74 ns/op benchmark_pow-4(2) 81920000 39 ns/op benchmark_pow-4(4) 40960000 40 ns/op ok PowTest 13.603s process thread

Slide 23

Slide 23 text

Golang ksss/rgot ! package foo_test func ExampleFoo { fmt.Println(foo.Say()) // Output: // foo }

Slide 24

Slide 24 text

Rgot ksss/rgot ! module FooTest def example_foo puts Foo.say # Output: # foo end end

Slide 25

Slide 25 text

Golang ksss/rgot ! $ go test -v === RUN ExampleFoo --- FAIL: ExampleFoo (0.00s) got: bar want: foo FAIL exit status 1 FAILgithub.com/ksss/gotest 0.005s

Slide 26

Slide 26 text

Rgot ksss/rgot ! $ rgot -v === RUN example_foo --- FAIL: example_foo (0.00s) got: bar want: foo FAIL exit status 1 FAILRgotTest 0.001s

Slide 27

Slide 27 text

Thinking ksss/rgot !

Slide 28

Slide 28 text

Diversity ksss/rgot !

Slide 29

Slide 29 text

Testing before Benchmark ksss/rgot !

Slide 30

Slide 30 text

Testable Sample Code ksss/rgot !

Slide 31

Slide 31 text

Not Need /test or /spec Dir ksss/rgot !

Slide 32

Slide 32 text

ksss/rgot !

Slide 33

Slide 33 text

Short Class Name testing.M => Rgot::M testing.T => Rgot::T testing.B => Rgot::B ksss/rgot !

Slide 34

Slide 34 text

Zero Assert ksss/rgot !

Slide 35

Slide 35 text

t.error() ksss/rgot !

Slide 36

Slide 36 text

More Thinking ksss/rgot !

Slide 37

Slide 37 text

Assert Oriented v.s. Error log Oriented ksss/rgot !

Slide 38

Slide 38 text

Assert Oriented case ksss/rgot ! mimitest, test-unit, rspec, etc…

Slide 39

Slide 39 text

case ksss/rgot ! Error log Oriented

Slide 40

Slide 40 text

Error Report is Important ksss/rgot !

Slide 41

Slide 41 text

Precise errors are particularly important when the programmer seeing the errors is not familiar with the code. #https://golang.org/doc/faq#assertions ksss/rgot !

Slide 42

Slide 42 text

Words ksss/rgot !

Slide 43

Slide 43 text

Words - assert - should - expect - must minitest, test-unit, rspec, … ksss/rgot !

Slide 44

Slide 44 text

Words - want - got - failed - invalid Golang testing package ksss/rgot !

Slide 45

Slide 45 text

Words (hypothesis) minitest, test_unit, rspec,… Golang testing package Hard Soft ksss/rgot !

Slide 46

Slide 46 text

ksss/rgot !