No.266, Doi Can Street, Ba Dinh District, Hanoi Vietnam 札幌オフィス 〒060-0001 北海道札幌市中央区北一条西3-3 敷島プラザビル4F Tel. 011-206-1914 シリコンバレーオフィス 3350 Scott Blvd. #29 Santa Clara, CA 95054 受託開発で テストファーストしたら XXXを早期発見できて ハイアジリティになったはなし #jsug #sf_8C 2019年12月18日 寺島 秀樹
Auto Test Framework ※Sitimi は後述 ユニット 統合 UI (E2E) サーバ フロント サーバ フロント A. Server Side Rendering Spock (+ Spring Test) - Spock + Spring Test - Geb + Spock B. SPA + API - Cypress C. GUI + API - ー Sitimi* + Spock ATDDに取り組み始めたら、あまりやらなくなった
Auto Test Framework ※Sitimi は後述 ユニット 統合 UI (E2E) サーバ フロント サーバ フロント A. Server Side Rendering Spock (+ Spring Test) - Spock + Spring Test - Geb + Spock B. SPA + API - Cypress C. GUI + API - ー Sitimi* + Spock
Auto Test Framework ※Sitimi は後述 ユニット 統合 UI (E2E) サーバ フロント サーバ フロント A. Server Side Rendering Spock (+ Spring Test) - Spock + Spring Test - Geb + Spock B. SPA + API - Cypress C. GUI + API - ー Sitimi* + Spock
Auto Test Framework ※Sitimi は後述 ユニット 統合 UI (E2E) サーバ フロント サーバ フロント A. Server Side Rendering Spock (+ Spring Test) - Spock + Spring Test - Geb + Spock B. SPA + API - Cypress C. GUI + API - ー Sitimi* + Spock
– Very Groovy Browser Automation • WebDriverの機能、jQueryセレクタの便利さ、 Page Objectモデリングの堅牢さ、Groovyの 表現力を統合します(意訳) • It brings together the power of WebDriver, the elegance of jQuery content selection, the robustness of Page Object modelling and the expressiveness of the Groovy language. Geb is a browser automation solution. https://gebish.org/ import geb.Browser Browser.drive { go "http://myapp.com/login" assert $("h1").text() == "Please Login" $("form.login").with { username = "admin" password = "password" login().click() } assert $("h1").text() == "Admin Section" }
+ Geb • Spockは、Gebで使用するのに最適な革新的 なテストフレームワークです。 Spock + Gebを 使用すると、非常に明確かつ簡潔で、理解しや すいテスト仕様をわずかな労力で提供できます。 (Google翻訳) • Spock is an innovative testing framework that is a great match for using with Geb. Using Spock + Geb gives you very clear, concise and easy to understand test specifications with very little effort. Page Object modelling import geb.Page import geb.spock.GebSpec class LoginSpec extends GebSpec { def "login to admin section"() { given: to LoginPage when: loginForm.with { username = "admin" password = "password" } and: loginButton.click() then: at AdminPage } } https://gebish.org/
Auto Test Framework ※Sitimi は後述 ユニット 統合 UI (E2E) サーバ フロント サーバ フロント A. Server Side Rendering Spock (+ Spring Test) - Spock + Spring Test - Geb + Spock B. SPA + API - Cypress C. GUI + API - ー Sitimi* + Spock
– Very Groovy is a GUI Automation • SikuliXの機能、Page Objectモデリングの堅 牢さ、Groovyの表現力を統合します。そう、そ れはGebのように! • It brings together the power of SikuliX, the robustness of Page Object modelling and the expressiveness of the Groovy language. so. It's like Geb! Sitimi is a Windows Automation Solution. https://github.com/terahide/sitimi import sitimi.spock.SitimiSpec import sample.CalcWindow class SimpleCalcSpec extends SitimiSpec{ def "a simple scenario"(){ given: start Calc expect: shown CalcWindow when: add(9, 9) then: "result is" (18) } } 操作したい部分をキャプチャします。 src/test/imgs/9_button.png Package sample import sitimi.Window class CalcWindow extends Window{ def add(i, j){ click "src/test/imgs/${i}_button.png" click "src/test/imgs/plus_button.png" click "src/test/imgs/${j}_button.png" click "src/test/imgs/equal_button.png" } // snip