SlideShare a Scribd company logo
1 of 20
AutifyのSlack通知ってさ...
Autify User Meetup
株式会社ディーバ
SRE室 船橋 篤史
2020© DIVA CORPORATION All rights reserved.
Who am I...
Name:船橋 篤史(Funahashi Atsushi)
Company:株式会社 ディーバ
Role:SRE 兼 Scrum Master 兼 周辺チームのQA系に口出したりツールもって来たりする人
2020© DIVA CORPORATION All rights reserved.
Introduction of DIVA
2020© DIVA CORPORATION All rights reserved.
Introduction of DIVA
2020© DIVA CORPORATION All rights reserved.
Introduction of DIVA
2020© DIVA CORPORATION All rights reserved.
目次
1. 自己紹介
2. AutifyのSlack通知ってさ...
2020© DIVA CORPORATION All rights reserved.
Slackの通知連携って便利だよね!?
皆さんは、Slackと連携してますか?
テスト結果を教えてくれます。
もし、してない方は...
https://docs.autify.com/ja/integrate-with-slack
ドキュメントを参考に今すぐ連携!
2020© DIVA CORPORATION All rights reserved.
Slackの通知連携って...
痒いところに手が届かない!!!(ディスってないよ)
2020© DIVA CORPORATION All rights reserved.
Slackの通知連携って...
1つのチャンネルにしか通知できない!
複数のサービスを開発しているから通知もチャンネルを分けたいんだ!
プロジェクト追加の契約をすれば解決するって聞いたけど...
2020© DIVA CORPORATION All rights reserved.
よ~し、エンジニアリングで解決だ!
Autify API と Slack API を使おう!
1)Schedule Execute
2)Get Results
3)Post Message
# スケジュールの結果をゲットする
$result = Invoke-RestMethod -Method "GET" "https://app.autify.com/api/v1/projects/${autify_projects}/results/${autify_results}" -
Headers $autify_headers
# スケジュールの結果
$result_status = $result.status
# 各シナリオの結果
foreach ($status in $result.test_plan_capability_results.test_case_results.status) {
if($status -eq "passed"){
$passedcount +=1
}else{
$failedcount +=1
}
}
~~ 送りたいテキスト作って ~~
# SlackへGO
Invoke-RestMethod -Method "POST" "https://slack.com/api/chat.postMessage" -Headers $slack_headers -Body $body_json
2020© DIVA CORPORATION All rights reserved.
よ~し、エンジニアリングで解決だ!
□ 複数のチャンネルに通知が送れるようになったよ
□ テスト結果によって通知の方法が変えられるよ
■ Test Passed のときは通知すら不要(チャンネルが白いのすらウザいし気になる)
■ Test Passed のときも通知するけど、Failedがあったら @channel で通知する
□ 絶対に見てほしいときはメンションで気づかせる!
2020© DIVA CORPORATION All rights reserved.
ここから本番...
2020© DIVA CORPORATION All rights reserved.
Slackの通知連携っていうかAutify APIって...
痒いところに手が届かない!!!(ディスってないよ)
2020© DIVA CORPORATION All rights reserved.
そもそもなぜAutifyを利用しているのか?
Selenium IDEやKatalonではなく、他のRecord & PlayBack形式のテストツールでもなく Autifyなのか?
セルフヒーリング!
2020© DIVA CORPORATION All rights reserved.
それを踏まえて...
Passed!大満足!?
Need Review が待っているんだよ...
ニコッてないでAutifyさ出してよ
2020© DIVA CORPORATION All rights reserved.
どうしよう
Autify APIは Need Reviewまで教えてくれないんだ...
痒いところに手が届かない!!!(ディスってないよ)
2020© DIVA CORPORATION All rights reserved.
当然エンジニアリングで解決だ!
サイト見に行けばいいじゃん。簡単だな
1)ログイン
2)スケジュール結果のページに移動
3)Need Review探す
4)Post Message
つまり...
Headless
+
+
= 我に敵なし
2020© DIVA CORPORATION All rights reserved.
当然エンジニアリングで解決だ!
Add-Type -Path "C:¥temp¥autify¥WebDriver.dll"
# Webdriver 初期化して...
$URL = "https://app.autify.com/users/sign_in"
$options = [OpenQA.Selenium.Chrome.ChromeOptions]::new()
$options.AddArguments("headless")
$driver = [OpenQA.Selenium.Chrome.ChromeDriver]::new($options)
# ログインして
$driver.Url = $URL
$inputID = $driver.FindElementById("user_email")
$inputID.SendKeys("My E-mail Address")
$inputPWD = $driver.FindElementById("user_password")
$inputPWD.SendKeys("My Password")
$driver.FindElementByXPath("//*[@id=""new_user""]/input[3]").Click()
# 結果のページに遷移して...
$driver.Url = $result_url
# Need Reviewを探すよ
if ($driver.FindElementsByClassName("test-result-list-warning").Count -gt 0){
$needReview = "Need Review"
}
# 本当は Curl(Invoke-WebRequest)だけで解決したかった...
# Autifyの認証がよくわからん、私の技術力じゃ解決できなかった!!!
$app = Invoke-WebRequest -Method "GET" "https://app.autify.com/users/sign_in" -SessionVariable autify
# Form に突っ込んだり...
$form = $app.Forms[0]
$form.Fields["user_email"] = "My E-mail Address"
$form.Fields["user_password"] = "My Password"
$body=$form.Fields
# Json Body だったり...
#$body = @{
# "user%5Bemail%5D"="My E-mail Address"
# "user%5Bpassword%5D"= "My Password"
# }
# 色々試したけど...
Invoke-WebRequest -Method "POST" "https://app.autify.com/users/sign_in" -ContentType "application/x-www-
form-urlencoded" -Body $body -WebSession $autify
# Status 400 が帰ってきたよ \(^o^)/
2020© DIVA CORPORATION All rights reserved.
当然エンジニアリングで解決だ!
Need Review が明記された!
必要なときだけ見に行けばよくなりましたね!
2020© DIVA CORPORATION All rights reserved.
まとめ
5分間、単にネタLTしていたわけじゃない!
「〇〇がないと困る」といったテスト活動に必要なものはAutifyに
「△△があるとよりよい」「××がないと物足りない」といった便利なものは自作で
といった選択を取れば、Win-Winな形になるのではないか
っていうか、エンジニアたるもの便利な機能がなければ、エンジニアリングで解決しちゃうし
□ Slack連携がいまいちだったのでAPIを活用
□ Slack連携とAPIがAutifyさを出していなかったので、Webも活用

More Related Content

Similar to Autify User Meetup LT "Slack通知"

おしゃれCatalystに触ってみた
おしゃれCatalystに触ってみたおしゃれCatalystに触ってみた
おしゃれCatalystに触ってみた
tomohiro morishita
 
アイスタイル特設サイトにおけるVue.js導入事例(再演)
アイスタイル特設サイトにおけるVue.js導入事例(再演) アイスタイル特設サイトにおけるVue.js導入事例(再演)
アイスタイル特設サイトにおけるVue.js導入事例(再演)
Kenjiro Kubota
 

Similar to Autify User Meetup LT "Slack通知" (20)

Automation with SoftLayer and Zabbix
Automation with SoftLayer and ZabbixAutomation with SoftLayer and Zabbix
Automation with SoftLayer and Zabbix
 
ご注文は監視自動化ですか?
ご注文は監視自動化ですか?ご注文は監視自動化ですか?
ご注文は監視自動化ですか?
 
駅すぱあとWebサービス&sakura.io体験ハンズオン 20180302
駅すぱあとWebサービス&sakura.io体験ハンズオン 20180302駅すぱあとWebサービス&sakura.io体験ハンズオン 20180302
駅すぱあとWebサービス&sakura.io体験ハンズオン 20180302
 
Twilio の API を SQL で操作!? 〜 CData Drivers for Twilio 製品のご紹介 〜
Twilio の API を SQL で操作!? 〜 CData Drivers for Twilio 製品のご紹介 〜Twilio の API を SQL で操作!? 〜 CData Drivers for Twilio 製品のご紹介 〜
Twilio の API を SQL で操作!? 〜 CData Drivers for Twilio 製品のご紹介 〜
 
OpenID TechNight Vol. 11 - Call to Action
OpenID TechNight Vol. 11 - Call to ActionOpenID TechNight Vol. 11 - Call to Action
OpenID TechNight Vol. 11 - Call to Action
 
おしゃれCatalystに触ってみた
おしゃれCatalystに触ってみたおしゃれCatalystに触ってみた
おしゃれCatalystに触ってみた
 
LFK_MagicPod_Meetup_Share
LFK_MagicPod_Meetup_ShareLFK_MagicPod_Meetup_Share
LFK_MagicPod_Meetup_Share
 
How to create android's c to c EC APP !
How to create android's c to c EC APP !How to create android's c to c EC APP !
How to create android's c to c EC APP !
 
AARIのご紹介
AARIのご紹介AARIのご紹介
AARIのご紹介
 
インタフェースのこころ
インタフェースのこころインタフェースのこころ
インタフェースのこころ
 
Developers Summit Summer 2018 - 1日10TB以上の店舗映像を解析するサービスの仕組みとノウハウ
Developers Summit Summer 2018 - 1日10TB以上の店舗映像を解析するサービスの仕組みとノウハウDevelopers Summit Summer 2018 - 1日10TB以上の店舗映像を解析するサービスの仕組みとノウハウ
Developers Summit Summer 2018 - 1日10TB以上の店舗映像を解析するサービスの仕組みとノウハウ
 
Possibility of my trailhead
Possibility of my trailheadPossibility of my trailhead
Possibility of my trailhead
 
OpenID ConnectとSCIMによるエンタープライズでのID連携活用に向けて
OpenID ConnectとSCIMによるエンタープライズでのID連携活用に向けてOpenID ConnectとSCIMによるエンタープライズでのID連携活用に向けて
OpenID ConnectとSCIMによるエンタープライズでのID連携活用に向けて
 
ailia SDK ハンズオン ~1時間で体感するAIを使ったコンピュータビジョン~
ailia SDK ハンズオン ~1時間で体感するAIを使ったコンピュータビジョン~ailia SDK ハンズオン ~1時間で体感するAIを使ったコンピュータビジョン~
ailia SDK ハンズオン ~1時間で体感するAIを使ったコンピュータビジョン~
 
Authlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_inside
Authlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_insideAuthlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_inside
Authlete: セキュアな金融 API 基盤の実現と Google Cloud の活用 #gc_inside
 
0181013 warai CI(継続的インテグレーション)と実例紹介_公開用
0181013 warai CI(継続的インテグレーション)と実例紹介_公開用0181013 warai CI(継続的インテグレーション)と実例紹介_公開用
0181013 warai CI(継続的インテグレーション)と実例紹介_公開用
 
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テストDevice Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト
 
Demo of write slides and books with VSCode + Markdown
Demo of write slides and books with VSCode + MarkdownDemo of write slides and books with VSCode + Markdown
Demo of write slides and books with VSCode + Markdown
 
アイスタイル特設サイトにおけるVue.js導入事例(再演)
アイスタイル特設サイトにおけるVue.js導入事例(再演) アイスタイル特設サイトにおけるVue.js導入事例(再演)
アイスタイル特設サイトにおけるVue.js導入事例(再演)
 
Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らす
 

Autify User Meetup LT "Slack通知"

  • 2. 2020© DIVA CORPORATION All rights reserved. Who am I... Name:船橋 篤史(Funahashi Atsushi) Company:株式会社 ディーバ Role:SRE 兼 Scrum Master 兼 周辺チームのQA系に口出したりツールもって来たりする人
  • 3. 2020© DIVA CORPORATION All rights reserved. Introduction of DIVA
  • 4. 2020© DIVA CORPORATION All rights reserved. Introduction of DIVA
  • 5. 2020© DIVA CORPORATION All rights reserved. Introduction of DIVA
  • 6. 2020© DIVA CORPORATION All rights reserved. 目次 1. 自己紹介 2. AutifyのSlack通知ってさ...
  • 7. 2020© DIVA CORPORATION All rights reserved. Slackの通知連携って便利だよね!? 皆さんは、Slackと連携してますか? テスト結果を教えてくれます。 もし、してない方は... https://docs.autify.com/ja/integrate-with-slack ドキュメントを参考に今すぐ連携!
  • 8. 2020© DIVA CORPORATION All rights reserved. Slackの通知連携って... 痒いところに手が届かない!!!(ディスってないよ)
  • 9. 2020© DIVA CORPORATION All rights reserved. Slackの通知連携って... 1つのチャンネルにしか通知できない! 複数のサービスを開発しているから通知もチャンネルを分けたいんだ! プロジェクト追加の契約をすれば解決するって聞いたけど...
  • 10. 2020© DIVA CORPORATION All rights reserved. よ~し、エンジニアリングで解決だ! Autify API と Slack API を使おう! 1)Schedule Execute 2)Get Results 3)Post Message # スケジュールの結果をゲットする $result = Invoke-RestMethod -Method "GET" "https://app.autify.com/api/v1/projects/${autify_projects}/results/${autify_results}" - Headers $autify_headers # スケジュールの結果 $result_status = $result.status # 各シナリオの結果 foreach ($status in $result.test_plan_capability_results.test_case_results.status) { if($status -eq "passed"){ $passedcount +=1 }else{ $failedcount +=1 } } ~~ 送りたいテキスト作って ~~ # SlackへGO Invoke-RestMethod -Method "POST" "https://slack.com/api/chat.postMessage" -Headers $slack_headers -Body $body_json
  • 11. 2020© DIVA CORPORATION All rights reserved. よ~し、エンジニアリングで解決だ! □ 複数のチャンネルに通知が送れるようになったよ □ テスト結果によって通知の方法が変えられるよ ■ Test Passed のときは通知すら不要(チャンネルが白いのすらウザいし気になる) ■ Test Passed のときも通知するけど、Failedがあったら @channel で通知する □ 絶対に見てほしいときはメンションで気づかせる!
  • 12. 2020© DIVA CORPORATION All rights reserved. ここから本番...
  • 13. 2020© DIVA CORPORATION All rights reserved. Slackの通知連携っていうかAutify APIって... 痒いところに手が届かない!!!(ディスってないよ)
  • 14. 2020© DIVA CORPORATION All rights reserved. そもそもなぜAutifyを利用しているのか? Selenium IDEやKatalonではなく、他のRecord & PlayBack形式のテストツールでもなく Autifyなのか? セルフヒーリング!
  • 15. 2020© DIVA CORPORATION All rights reserved. それを踏まえて... Passed!大満足!? Need Review が待っているんだよ... ニコッてないでAutifyさ出してよ
  • 16. 2020© DIVA CORPORATION All rights reserved. どうしよう Autify APIは Need Reviewまで教えてくれないんだ... 痒いところに手が届かない!!!(ディスってないよ)
  • 17. 2020© DIVA CORPORATION All rights reserved. 当然エンジニアリングで解決だ! サイト見に行けばいいじゃん。簡単だな 1)ログイン 2)スケジュール結果のページに移動 3)Need Review探す 4)Post Message つまり... Headless + + = 我に敵なし
  • 18. 2020© DIVA CORPORATION All rights reserved. 当然エンジニアリングで解決だ! Add-Type -Path "C:¥temp¥autify¥WebDriver.dll" # Webdriver 初期化して... $URL = "https://app.autify.com/users/sign_in" $options = [OpenQA.Selenium.Chrome.ChromeOptions]::new() $options.AddArguments("headless") $driver = [OpenQA.Selenium.Chrome.ChromeDriver]::new($options) # ログインして $driver.Url = $URL $inputID = $driver.FindElementById("user_email") $inputID.SendKeys("My E-mail Address") $inputPWD = $driver.FindElementById("user_password") $inputPWD.SendKeys("My Password") $driver.FindElementByXPath("//*[@id=""new_user""]/input[3]").Click() # 結果のページに遷移して... $driver.Url = $result_url # Need Reviewを探すよ if ($driver.FindElementsByClassName("test-result-list-warning").Count -gt 0){ $needReview = "Need Review" } # 本当は Curl(Invoke-WebRequest)だけで解決したかった... # Autifyの認証がよくわからん、私の技術力じゃ解決できなかった!!! $app = Invoke-WebRequest -Method "GET" "https://app.autify.com/users/sign_in" -SessionVariable autify # Form に突っ込んだり... $form = $app.Forms[0] $form.Fields["user_email"] = "My E-mail Address" $form.Fields["user_password"] = "My Password" $body=$form.Fields # Json Body だったり... #$body = @{ # "user%5Bemail%5D"="My E-mail Address" # "user%5Bpassword%5D"= "My Password" # } # 色々試したけど... Invoke-WebRequest -Method "POST" "https://app.autify.com/users/sign_in" -ContentType "application/x-www- form-urlencoded" -Body $body -WebSession $autify # Status 400 が帰ってきたよ \(^o^)/
  • 19. 2020© DIVA CORPORATION All rights reserved. 当然エンジニアリングで解決だ! Need Review が明記された! 必要なときだけ見に行けばよくなりましたね!
  • 20. 2020© DIVA CORPORATION All rights reserved. まとめ 5分間、単にネタLTしていたわけじゃない! 「〇〇がないと困る」といったテスト活動に必要なものはAutifyに 「△△があるとよりよい」「××がないと物足りない」といった便利なものは自作で といった選択を取れば、Win-Winな形になるのではないか っていうか、エンジニアたるもの便利な機能がなければ、エンジニアリングで解決しちゃうし □ Slack連携がいまいちだったのでAPIを活用 □ Slack連携とAPIがAutifyさを出していなかったので、Webも活用

Editor's Notes

  1. 自己紹介