SlideShare a Scribd company logo
サイボウズLive
Seleniumテスト並列化
      サイボウズ
    福嶋一史(@kazfuku)
• サイボウズLiveのテスト         3400個

• Seleniumテスト


 • Firefoxのみ


 • モバイル


  • Firefox   Mobile Simulatorアドオン

• APIテスト


 • HttpUnit
実行時間              テスト数

8hour                                                                           4,000



6hour                                                                           3,000



4hour                                                                           2,000



2hour                                                                           1,000



0hour                                                                              0
     2009/6   2009/10   2010/2   2010/6   2010/10   2011/2   2011/6   2011/10
• 朝までに終わらない   \(^o^)/

• 並列化に取り組む
•   その前にテストの流れ

    1. 最初のテストの前にDBダンプ

    2. ブラウザ起動

    3. 各テスト実行

     1. テストデータ投入(JDBC経由でSQL実行)

     2. ブラウザ操作

     3. 画面のアサーション

     4. DBのアサーション(JDBC経由)

     5. DBリストア

    4. ブラウザ終了

    5. 2に戻る
• 方式はどうしよう
• JUnitレベルで並列化


• スレッド単位で並列化


• 既存テストコードをスレッドセーフにしな

 いといけない

• 依存ライブラリがスレッドセーフであると

 は限らない

• 工数がエラいことになりそう
• Seleniumレベルで並列化(Selenium   Grid)

 • DBのリセット(リストア)が必要なので厳し

 い

 • APIなどSeleniumを使っていないテストもあ

 る
• Jenkinsレベルで並列化


 • マルチ構成プロジェクトで条件を変えて並

 列実行できる

  • 本来は複数のブラウザ(IE, Firefox,

  Chrome)を同時並列実行させる機能

 • プロセス単位で並列化


 • これしかない
• Jenkins
• JUnit

 public class DistributedRunner extends BlockJUnit4ClassRunner
 {
   @Override
   public void runChild( FrameworkMethod method, RunNotifier notifier )
   {
     // テスト番号算出
         String testMethodMd5 = toMd5( this.testClass .getCanonicalName() + “#” + method.getMethod().getName() );
         String twoLowerDigitsHex = testMethodMd5.substring( testMethodMd5.length() - 2 );
         int testMethodNumber = Integer.parseInt( twoLowerDigitsHex, 16 );

         // 分散実行判別
         boolean skip = ( testMethodNumber % this.testHostCount .intValue() != this.testHostNumber.intValue() );
         if( skip )
         {
             notifier.fireTestIgnored( ... ); // スキップ通知
             return;
         }

         super.runChild( method, notifier );
     }
 }
test1     test2     test3     test4     test5     test6

testNumber     3         5         4         1         0         2


 parallel1   execute    skip      skip      skip     execute    skip


 parallel2    skip      skip     execute   execute    skip      skip


 parallel3    skip     execute    skip      skip      skip     execute
• こんな感じで並列化
• Selenium1だと途中で止まる(   )

• 仕方なくSelenium2化


 • Selenium1はFirefox4以上で動かないので結果

 的におk

 • Selenium2にSelenium1ラッパーがあったので

 移行コストは少なくて済む
実行時間     テスト数

8hour                             4,000
         7.9

6hour
        3030        3169          3,000


                     5.1
4hour                             2,000



2hour                             1,000



0hour                                0
        2011/11    3並列化
• 思ったほど速くならない


• Selenium2対応が十分でなかった


• クリック後のウェイトを手動でやっていたり


 • 自動で行われるので、ごっそり削除


• 長い文字列のtypeが1文字ずつ入力されてたり


 • JavaScriptでまとめて入力させた
実行時間         テスト数

8hour                                        4,000
         7.9

6hour
        3030      3169          3174         3,000


                   5.1
4hour                                        2,000


                                3.3
2hour                                        1,000



0hour                                           0
        2011/11   3並列化     Selenium2最適化
• オーバーヘッドがあるとしても、力が出し切

れていない気がする

• VMのせいだ!


• ディスクIOが遅いせいに違いない
• jenkinsサーバを実マシンに置き換える


• 本番運用サーバで余ったもの


              旧                   新

  サーバ     バーチャル                 リアル

  CPU   Xeon 2.53GHz x 4   Xeon 2.53GHz x 16

  メモリ         8GB                16GB
実行時間         テスト数

8hour                                             4,000
         7.9
                                         3472
6hour
        3030      3169      3174                  3,000


                   5.1
4hour                                             2,000


                             3.3          3
2hour                                             1,000



0hour                                                0
        2011/11   3並列化   Selenium2最適化   実マシン化
• (´・ω・`)
• ディスクIOじゃない


• ソースコードを読むしかない
• Firefox起動がマシン単位の排他処理になっている


• 固定ポートでロック


• おそらくFirefoxプロファイルのコピー中に割り

 込みを防ぐため

• 並列処理ごとに待つポートを分散


 • Seleniumの該当メソッドをオーバーライドし

  て処理を変更
実行時間       テスト数

8hour                                                4,000
         7.9
                                   3432     3432
6hour
        3030      3169     3174                      3,000


                   5.1
4hour                                                2,000


                           3.3       3       2.9
2hour                                                1,000



0hour                                                   0
        2011/11   3並列化 Selenium2最適化 実マシン化   ポート分散
• (´・ω・`)


• でも並列数が増えてくると効果があるはず
• Firefoxの起動そのものに6秒程度かかる


• プロファイルディレクトリを一時領域にコ

 ピーして、専用アドオンをインストールし
 ている様子

• テストクラスの数だけ、約470回起動して

 いる
•   最初のテスト開始前にブラウザを起動して、最後のテスト
    終了後にブラウザを終了させる

    •   ブラウザ起動が1回で済む

    •   @BeforeClassと@AfterClasssしか使えないので難しい

    •   終了タイマー方式を閃く

        •   @AfterClassで終了タイマースレッドを起動して、次テス
            トの@BeforeClassでタイマーを止める

        •   タイマーが止められなければ一定時間後にブラウザを
            終了
• JUnitがすべてのテスト終了後にユーザース

レッドを殺してくれる

• System.exit()を実行してるっぽい


• (#^ω^)
• 並列処理中で実行するかどうかの判定をテス

トメソッドごとからテストクラスごとに変更

• 起動回数を1/並列数(1/3)に改善
• JUnit

 public class DistributedRunner extends BlockJUnit4ClassRunner
 {
   @Override
   public void run( RunNotifier notifier )
   {
     // テスト番号算出
         String testClassMd5 = toMd5( this.testClass .getCanonicalName() );
         String twoLowerDigitsHex = testClassMd5.substring( testClassMd5.length() - 2 );
         int testClassNumber = Integer.parseInt( twoLowerDigitsHex, 16 );

         // 分散実行判別
         boolean skip = ( testClassNumber % this.testHostCount .intValue() != this.testHostNumber.intValue() );
         if( skip )
         {
             notifier.fireTestIgnored( ... ); // スキップ通知
             return;
         }

         super.run( notifier );
     }
 }
実行時間     テスト数

8hour                                                  4,000
         7.9
                                3432    3432   3432
6hour
        3030      3169   3174                          3,000


                   5.1
4hour                                                  2,000


                         3.3     3       2.9
2hour                                                  1,000
                                               2.2

0hour                                                     0
        2011/11   3並列化Selenium2最適化
                                 実マシン化 ポート分散ラウザ起動抑制
                                           ブ
• ∩(   ・ω・)∩
実行時間            テスト数

8hour                                                                 4,000



6hour                                                                 3,000



4hour                                                                 2,000



2hour                                                                 1,000



0hour                                                                    0
     2009/6 2009/10 2010/2   2010/6 2010/10 2011/2   2011/6 2011/10
•   3並列化で実行時間が約1/3に

•   結果的にSelenium2に対応できた

•   まだまだ並列化できる余地あり

•   16並列までいけるかも?

                     JenkinsサーバのCPU
•   課題

    •   Seleniumのメソッドを変更しているので、
        バージョンアップには注意が必要になってしまった

    •   Jenkinsの設定がややこしい

    •   並列実行でMavenローカルリポジトリを同時変更するとリポジト
        リが壊れる

        •   オフラインオプション(-o)を付けて回避

        •   ローカルリポジトリを更新させるには、-oを外して、単独実行
            させて、と面倒

    •   専用のJenkinsプラグインを作るとある程度解決できるのかも

More Related Content

Similar to サイボウズLiveのSeleniumテスト並列化

Rubyにおけるトレース機構の刷新
Rubyにおけるトレース機構の刷新Rubyにおけるトレース機構の刷新
Rubyにおけるトレース機構の刷新
Koichi Sasada
 
Firefox 3.1 & MozTech
Firefox 3.1 & MozTechFirefox 3.1 & MozTech
Firefox 3.1 & MozTech
dynamis
 
Firefox 3.1 In Depth (?)
Firefox 3.1 In Depth (?)Firefox 3.1 In Depth (?)
Firefox 3.1 In Depth (?)
dynamis
 
Spock's world
Spock's worldSpock's world
Spock's world
Takuma Watabiki
 
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)
Yoshiharu Hashimoto
 
Jenkins + awsで並列テスト
Jenkins + awsで並列テストJenkins + awsで並列テスト
Jenkins + awsで並列テスト
Yamamoto Kazuhisa
 
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
Tomohiro Ohtake
 
テスティングフレームワークに入門してみた - Swift編
テスティングフレームワークに入門してみた - Swift編テスティングフレームワークに入門してみた - Swift編
テスティングフレームワークに入門してみた - Swift編
Hisakuni Fujimoto
 
Play jjug2012spring
Play jjug2012springPlay jjug2012spring
Play jjug2012spring
Takafumi Ikeda
 
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテムSmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews, Inc.
 
1台から500台までのMySQL運用(YAPC::Asia編)
1台から500台までのMySQL運用(YAPC::Asia編)1台から500台までのMySQL運用(YAPC::Asia編)
1台から500台までのMySQL運用(YAPC::Asia編)Masahiro Nagano
 
dimSTATから見るベンチマーク
dimSTATから見るベンチマークdimSTATから見るベンチマーク
dimSTATから見るベンチマーク
hiroi10
 
super_unkoをスーパーキレイにした
super_unkoをスーパーキレイにしたsuper_unkoをスーパーキレイにした
super_unkoをスーパーキレイにした
jiro4989
 
Java EE パフォーマンスTips #glassfish_jp
Java EE パフォーマンスTips #glassfish_jpJava EE パフォーマンスTips #glassfish_jp
Java EE パフォーマンスTips #glassfish_jp
Norito Agetsuma
 
システムパフォーマンス勉強会#4
システムパフォーマンス勉強会#4システムパフォーマンス勉強会#4
システムパフォーマンス勉強会#4
shingo suzuki
 
システムパフォーマンス勉強会#4
システムパフォーマンス勉強会#4システムパフォーマンス勉強会#4
システムパフォーマンス勉強会#4
shingo suzuki
 
Twitterのリアルタイム分散処理システム「Storm」入門
Twitterのリアルタイム分散処理システム「Storm」入門Twitterのリアルタイム分散処理システム「Storm」入門
Twitterのリアルタイム分散処理システム「Storm」入門
AdvancedTechNight
 
Web時代の大富豪的プログラミングのススメ
Web時代の大富豪的プログラミングのススメWeb時代の大富豪的プログラミングのススメ
Web時代の大富豪的プログラミングのススメ
Hideyuki Takeuchi
 

Similar to サイボウズLiveのSeleniumテスト並列化 (20)

Rubyにおけるトレース機構の刷新
Rubyにおけるトレース機構の刷新Rubyにおけるトレース機構の刷新
Rubyにおけるトレース機構の刷新
 
Firefox 3.1 & MozTech
Firefox 3.1 & MozTechFirefox 3.1 & MozTech
Firefox 3.1 & MozTech
 
Firefox 3.1 In Depth (?)
Firefox 3.1 In Depth (?)Firefox 3.1 In Depth (?)
Firefox 3.1 In Depth (?)
 
20121215 DevLOVE2012 Mahout on AWS
20121215 DevLOVE2012 Mahout on AWS20121215 DevLOVE2012 Mahout on AWS
20121215 DevLOVE2012 Mahout on AWS
 
Spock's world
Spock's worldSpock's world
Spock's world
 
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)
 
Jenkins + awsで並列テスト
Jenkins + awsで並列テストJenkins + awsで並列テスト
Jenkins + awsで並列テスト
 
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
 
Play ja 3_update
Play ja 3_updatePlay ja 3_update
Play ja 3_update
 
テスティングフレームワークに入門してみた - Swift編
テスティングフレームワークに入門してみた - Swift編テスティングフレームワークに入門してみた - Swift編
テスティングフレームワークに入門してみた - Swift編
 
Play jjug2012spring
Play jjug2012springPlay jjug2012spring
Play jjug2012spring
 
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテムSmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
 
1台から500台までのMySQL運用(YAPC::Asia編)
1台から500台までのMySQL運用(YAPC::Asia編)1台から500台までのMySQL運用(YAPC::Asia編)
1台から500台までのMySQL運用(YAPC::Asia編)
 
dimSTATから見るベンチマーク
dimSTATから見るベンチマークdimSTATから見るベンチマーク
dimSTATから見るベンチマーク
 
super_unkoをスーパーキレイにした
super_unkoをスーパーキレイにしたsuper_unkoをスーパーキレイにした
super_unkoをスーパーキレイにした
 
Java EE パフォーマンスTips #glassfish_jp
Java EE パフォーマンスTips #glassfish_jpJava EE パフォーマンスTips #glassfish_jp
Java EE パフォーマンスTips #glassfish_jp
 
システムパフォーマンス勉強会#4
システムパフォーマンス勉強会#4システムパフォーマンス勉強会#4
システムパフォーマンス勉強会#4
 
システムパフォーマンス勉強会#4
システムパフォーマンス勉強会#4システムパフォーマンス勉強会#4
システムパフォーマンス勉強会#4
 
Twitterのリアルタイム分散処理システム「Storm」入門
Twitterのリアルタイム分散処理システム「Storm」入門Twitterのリアルタイム分散処理システム「Storm」入門
Twitterのリアルタイム分散処理システム「Storm」入門
 
Web時代の大富豪的プログラミングのススメ
Web時代の大富豪的プログラミングのススメWeb時代の大富豪的プログラミングのススメ
Web時代の大富豪的プログラミングのススメ
 

Recently uploaded

YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
CRI Japan, Inc.
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 

Recently uploaded (15)

YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LBカタログ
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 

サイボウズLiveのSeleniumテスト並列化

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n