13
Test Automator ののの TechLive 6 ののののの ののの

Test Automatorの美徳

  • Upload
    -

  • View
    1.035

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Test Automatorの美徳

Test Automator の美徳

TechLive 6

技術開発部太田健一郎

Page 2: Test Automatorの美徳

2

オムロンの創業理念 機械にできることは機械に任せ、人間はより創造的な分野で活

動を楽しむべきである 自動化プログラム自体を考えて作るのは「創造的」 ちなみに、これに感動して昔受けましたが、コミュ力不足で 1

次面接で落ちましたw

Test Automator の心得

Page 3: Test Automatorの美徳

Test Automatorは赤魔道士

Methodology ( 技法、手法 ) 白魔法 テストプロセス改善

TMMi, TPI NEXT テスト分析

FMEA、ゆもつよメソッド テスト設計

HAYST法、原因結果グラフ

Technology (技術 ) 黒魔法 自動機能テスト

xUnit, Selenium, Geb, Appium, Calabash CI

Jenkins, Travis CI, CircleCI

個々の領域では専門職に及ばないが、両者をバランス良く実践修得しているTest Automatorは希少かつ貴重で市場価値が高い

極めるとテスト設計の改善と自動化という「連続魔」を唱えられる

ジョブ : Test Automator

Page 4: Test Automatorの美徳

4

怠惰

短気

傲慢

プログラマの三大美徳

Page 5: Test Automatorの美徳

5

10 秒であらゆる刺身タンポポ作業に飽きる

Page 6: Test Automatorの美徳

6

これが作られる前に

Page 7: Test Automatorの美徳

7

デフォルト入力を自動で→

ないみたいなので作る

Page 8: Test Automatorの美徳

8

仕様 ログインして土日に休みを入れる 日付指定機能はなし

月の初めに起動する ユーザー名、パスワードも直埋め込み

YAGNI (You ain't gonna need it) いきなり完成版を目指さず、ちょっとでも楽なようにする

バージョン 1

Page 9: Test Automatorの美徳

9

仕様変更 ユーザー、パスワードを設定ファイル化

他の人でも設定ファイルの変更だけで使えるように

バージョン 2

Properties userInformation = getUserInformation() $("form").with { login_id = userInformation.get("login_id") password = userInformation.get("password") $("button").click() }

private Properties getUserInformation() { Properties properties = new Properties() new BufferedReader(new FileReader("data" + File.separator + "user_information.properties")).withCloseable { properties.load(it) } properties }

Page 10: Test Automatorの美徳

10

仕様変更 日付を設定ファイルで指定できるように

来月以降の勤務予定を入力できるように

バージョン 3

and: " 勤務表を開く " String timeArguments = getTimeArguments() go "https://shift-portal.softwaretest.jp/sns/sns_kinmu_yotei.cgi" + timeArguments

private String getTimeArguments() { String timePath = "data" + File.separator + "time.properties" String timeArguments = "" if (new File(timePath).exists()) { Properties time = new Properties() new BufferedReader(new FileReader(timePath)).withCloseable { time.load(it) } timeArguments = "?year=" + time.get("year") + "&month=" + time.get("month") } timeArguments }

Page 11: Test Automatorの美徳

11

仕様変更? 任意の数の月を設定ファイルに書けると年間予定とか入力でき

るが

YAGNI 結局有休など手直しがあるので、直近 1 ヶ月とか指定できれば

十分 いらん複雑性は持ち込まないような割り切りが必要

バージョン 3.5

Page 12: Test Automatorの美徳

12

仕様変更 遂に日本の祝日対応

一から実装するの面倒 [ 怠惰 ] なのでライブラリ使う

バージョン 4

int day = Integer.parseInt(monthAndDay.text().split(" / ")[1]) Calendar calendar = Calendar.getInstance() calendar.set(year, month - 1, day) boolean isHoliday = isHoliday(calendar) if (isHoliday) { def statusSelect = status.find("select") statusSelect.value(" 休み ")

private boolean isHoliday(Calendar calendar) { OffProvider offProvider = new OffProvider(true, Week.SATURDAY, Week.SUNDAY) AJD ajd = new AJD(calendar) OffProvider.Off off = offProvider.getOff(ajd) boolean isHoliday if (off != null && (off instanceof Holiday || off instanceof Week)) { isHoliday = true } else { isHoliday = false } isHoliday }

Page 13: Test Automatorの美徳

13

すみません、作るのに合計 6 時間かかりました><

実務でやってはダメです。実務ではすべてのタスクに ROI を考慮する必要があります