Submit Search
Upload
ブラウザテスト自動化入門
•
Download as PPTX, PDF
•
0 likes
•
2,929 views
T
takahiro sakuma
Follow
Seleniumを使ったテストについての紹介
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 31
Download now
Recommended
OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化
OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化
Nozomi Ito
【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化
【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化
Nozomi Ito
Selenium WebDriver + python で E2Eテスト自動化
Selenium WebDriver + python で E2Eテスト自動化
JustSystems Corporation
Selenium2でつくるテストケースの構成について
Selenium2でつくるテストケースの構成について
yufu yufu
20161218 selenium study4
20161218 selenium study4
Naoya Kojima
#STAC2014 システムテスト自動化ハンズオン
#STAC2014 システムテスト自動化ハンズオン
kyon mm
ノンプログラマのためのSelenium de DDTはじめの一歩
ノンプログラマのためのSelenium de DDTはじめの一歩
Satsuki Urayama
【STAC2017】テスト自動化システム 成長記
【STAC2017】テスト自動化システム 成長記
友隆 浅黄
Recommended
OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化
OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化
Nozomi Ito
【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化
【短縮版】OSSのブラウザ自動テストツール「Selenium」を使った、開発・テストの効率化
Nozomi Ito
Selenium WebDriver + python で E2Eテスト自動化
Selenium WebDriver + python で E2Eテスト自動化
JustSystems Corporation
Selenium2でつくるテストケースの構成について
Selenium2でつくるテストケースの構成について
yufu yufu
20161218 selenium study4
20161218 selenium study4
Naoya Kojima
#STAC2014 システムテスト自動化ハンズオン
#STAC2014 システムテスト自動化ハンズオン
kyon mm
ノンプログラマのためのSelenium de DDTはじめの一歩
ノンプログラマのためのSelenium de DDTはじめの一歩
Satsuki Urayama
【STAC2017】テスト自動化システム 成長記
【STAC2017】テスト自動化システム 成長記
友隆 浅黄
JavaScript Unit Test Why? What? How?
JavaScript Unit Test Why? What? How?
Teppei Sato
自動テスト知識体系TABOKのご紹介
自動テスト知識体系TABOKのご紹介
Shinsuke Matsuki
異業種でのテスト自動化の実際
異業種でのテスト自動化の実際
Satsuki Urayama
Selenium boot campの紹介
Selenium boot campの紹介
Nozomi Ito
Azureを使って手軽にブラウザテストの自動化をはじめよう
Azureを使って手軽にブラウザテストの自動化をはじめよう
Naoya Kojima
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
Hiroko Tamagawa
テスト自動化のこれまでとこれから
テスト自動化のこれまでとこれから
Keizo Tatsumi
SeleniumConf16 UK参加報告
SeleniumConf16 UK参加報告
Osamu Shimoda
テストの自動化を考える前に
テストの自動化を考える前に
bleis tift
Automation test.ssf alpha
Automation test.ssf alpha
ryuji koyama
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
kyon mm
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
Nozomi Ito
【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015
【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015
Kotaro Ogino
はじめてのTeam foundation server執筆裏話
はじめてのTeam foundation server執筆裏話
Kazushi Kamegawa
実践で学ぶ、効率的な自動テストスクリプトのメンテナンス
実践で学ぶ、効率的な自動テストスクリプトのメンテナンス
Nozomi Ito
手動テストからの移行大作戦
手動テストからの移行大作戦
Satsuki Urayama
20170704 Pitaliumの新機能
20170704 Pitaliumの新機能
Osamu Shimoda
モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013
モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013
Kinji Akemine
20150418 システムテスト自動化 第一章
20150418 システムテスト自動化 第一章
Yuki Fujisawa
海外のSeleniumカンファレンスではどんな発表がされているのか2014
海外のSeleniumカンファレンスではどんな発表がされているのか2014
Nozomi Ito
アジャイル×テスト開発を考える
アジャイル×テスト開発を考える
yasuohosotani
アジャイルテストを、壮絶に、考える。
アジャイルテストを、壮絶に、考える。
Dai FUJIHARA
More Related Content
What's hot
JavaScript Unit Test Why? What? How?
JavaScript Unit Test Why? What? How?
Teppei Sato
自動テスト知識体系TABOKのご紹介
自動テスト知識体系TABOKのご紹介
Shinsuke Matsuki
異業種でのテスト自動化の実際
異業種でのテスト自動化の実際
Satsuki Urayama
Selenium boot campの紹介
Selenium boot campの紹介
Nozomi Ito
Azureを使って手軽にブラウザテストの自動化をはじめよう
Azureを使って手軽にブラウザテストの自動化をはじめよう
Naoya Kojima
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
Hiroko Tamagawa
テスト自動化のこれまでとこれから
テスト自動化のこれまでとこれから
Keizo Tatsumi
SeleniumConf16 UK参加報告
SeleniumConf16 UK参加報告
Osamu Shimoda
テストの自動化を考える前に
テストの自動化を考える前に
bleis tift
Automation test.ssf alpha
Automation test.ssf alpha
ryuji koyama
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
kyon mm
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
Nozomi Ito
【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015
【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015
Kotaro Ogino
はじめてのTeam foundation server執筆裏話
はじめてのTeam foundation server執筆裏話
Kazushi Kamegawa
実践で学ぶ、効率的な自動テストスクリプトのメンテナンス
実践で学ぶ、効率的な自動テストスクリプトのメンテナンス
Nozomi Ito
手動テストからの移行大作戦
手動テストからの移行大作戦
Satsuki Urayama
20170704 Pitaliumの新機能
20170704 Pitaliumの新機能
Osamu Shimoda
モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013
モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013
Kinji Akemine
20150418 システムテスト自動化 第一章
20150418 システムテスト自動化 第一章
Yuki Fujisawa
海外のSeleniumカンファレンスではどんな発表がされているのか2014
海外のSeleniumカンファレンスではどんな発表がされているのか2014
Nozomi Ito
What's hot
(20)
JavaScript Unit Test Why? What? How?
JavaScript Unit Test Why? What? How?
自動テスト知識体系TABOKのご紹介
自動テスト知識体系TABOKのご紹介
異業種でのテスト自動化の実際
異業種でのテスト自動化の実際
Selenium boot campの紹介
Selenium boot campの紹介
Azureを使って手軽にブラウザテストの自動化をはじめよう
Azureを使って手軽にブラウザテストの自動化をはじめよう
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
20131201 テスト自動化カンファレンスLT「激しいUI変更との戦い」
テスト自動化のこれまでとこれから
テスト自動化のこれまでとこれから
SeleniumConf16 UK参加報告
SeleniumConf16 UK参加報告
テストの自動化を考える前に
テストの自動化を考える前に
Automation test.ssf alpha
Automation test.ssf alpha
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015
【システムテスト自動化カンファレンス2015】 楽天の品質改善を加速する継続的システムテストパターン #stac2015
はじめてのTeam foundation server執筆裏話
はじめてのTeam foundation server執筆裏話
実践で学ぶ、効率的な自動テストスクリプトのメンテナンス
実践で学ぶ、効率的な自動テストスクリプトのメンテナンス
手動テストからの移行大作戦
手動テストからの移行大作戦
20170704 Pitaliumの新機能
20170704 Pitaliumの新機能
モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013
モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013
20150418 システムテスト自動化 第一章
20150418 システムテスト自動化 第一章
海外のSeleniumカンファレンスではどんな発表がされているのか2014
海外のSeleniumカンファレンスではどんな発表がされているのか2014
Similar to ブラウザテスト自動化入門
アジャイル×テスト開発を考える
アジャイル×テスト開発を考える
yasuohosotani
アジャイルテストを、壮絶に、考える。
アジャイルテストを、壮絶に、考える。
Dai FUJIHARA
SGT2013 技術トークス「アジャイルテスティング」
SGT2013 技術トークス「アジャイルテスティング」
yasuohosotani
ワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeploy
Ryutaro YOSHIBA
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
Shuji Watanabe
テストとの上手な付き合い方
テストとの上手な付き合い方
Akira Suenami
Test Automation Journey 2023 useful knowledge to start test automation
Test Automation Journey 2023 useful knowledge to start test automation
Sadaaki Emura
【楽天テックカンファ前夜祭2014】誰がテスト自動化をするべきか #rakutentech
【楽天テックカンファ前夜祭2014】誰がテスト自動化をするべきか #rakutentech
Kotaro Ogino
テスト初心者Androiderのためのソフトウェアテスト入門
テスト初心者Androiderのためのソフトウェアテスト入門
Satoshi Watanabe
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
慎一 古賀
Win7 * appium * androidで実機自動テストやってみた。
Win7 * appium * androidで実機自動テストやってみた。
Naoto Kishino
Et west テスト自動化_公開版
Et west テスト自動化_公開版
Noriyuki Mizuno
失敗から学ぶテスト自動化導入で大切なこと
失敗から学ぶテスト自動化導入で大切なこと
sono susumu
自動テストの品質とテストパターン
自動テストの品質とテストパターン
Toru Koido
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
Tatsuya Ishikawa
Gui自動テストツール基本
Gui自動テストツール基本
Tsuyoshi Yumoto
テスト自動化の現場から~テスト自動化の保守の話~
テスト自動化の現場から~テスト自動化の保守の話~
Satsuki Urayama
スマホアプリ・サイトの実機検証・自動テストサービスーMovaTestingのご紹介
スマホアプリ・サイトの実機検証・自動テストサービスーMovaTestingのご紹介
slideshar0801
テスト自動化とアーキテクチャ
テスト自動化とアーキテクチャ
Toru Koido
TABOK Skill Category2解説
TABOK Skill Category2解説
Kinji Akemine
Similar to ブラウザテスト自動化入門
(20)
アジャイル×テスト開発を考える
アジャイル×テスト開発を考える
アジャイルテストを、壮絶に、考える。
アジャイルテストを、壮絶に、考える。
SGT2013 技術トークス「アジャイルテスティング」
SGT2013 技術トークス「アジャイルテスティング」
ワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeploy
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
テストとの上手な付き合い方
テストとの上手な付き合い方
Test Automation Journey 2023 useful knowledge to start test automation
Test Automation Journey 2023 useful knowledge to start test automation
【楽天テックカンファ前夜祭2014】誰がテスト自動化をするべきか #rakutentech
【楽天テックカンファ前夜祭2014】誰がテスト自動化をするべきか #rakutentech
テスト初心者Androiderのためのソフトウェアテスト入門
テスト初心者Androiderのためのソフトウェアテスト入門
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
開発ビギナーだけじゃない!インフラエンジニア & マネージャー にも知ってほしいテスト自動化と品質管理
Win7 * appium * androidで実機自動テストやってみた。
Win7 * appium * androidで実機自動テストやってみた。
Et west テスト自動化_公開版
Et west テスト自動化_公開版
失敗から学ぶテスト自動化導入で大切なこと
失敗から学ぶテスト自動化導入で大切なこと
自動テストの品質とテストパターン
自動テストの品質とテストパターン
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
Gui自動テストツール基本
Gui自動テストツール基本
テスト自動化の現場から~テスト自動化の保守の話~
テスト自動化の現場から~テスト自動化の保守の話~
スマホアプリ・サイトの実機検証・自動テストサービスーMovaTestingのご紹介
スマホアプリ・サイトの実機検証・自動テストサービスーMovaTestingのご紹介
テスト自動化とアーキテクチャ
テスト自動化とアーキテクチャ
TABOK Skill Category2解説
TABOK Skill Category2解説
ブラウザテスト自動化入門
1.
ブラウザテスト自動化入門
2.
テスト自動化の前に
3.
テストの種類について 単体テスト 処理単位での仕様を満たしているかをテスト 機能テスト 機能単位での仕様を満たしているかをテスト シナリオテスト 顧客の要求を満たしているかをテスト 非機能テスト 速度や使いやすさ、セキュリティなどをテスト
4.
テストの自動化とは?
5.
テストの自動化 テスト自動化(テストじどうか)とは、テスト支援ツール等を使うことにより、 ソフトウェアテストを自動化することである。 wikipedia内『テスト自動化』より引用
6.
テスト自動化は簡単か?
7.
テストのコスト 種類 テスト方法 コスパ
項目数 単体テスト CUIテスト ◯ 多い 機能テスト ブラウザテスト + 手動テスト △ 普通 シナリオテスト ブラウザテスト △ 少ない 非機能テスト 手動テスト X 少ない
8.
自動化するメリットは?
9.
メリット テストから仕様を把握できる 不具合を恐れずにリファクタリングができる クロスブラウザや回帰テストのコストを削減 一定の品質を保証
10.
もちろんデメリットもある
11.
デメリット たまに正常なテストでも失敗する レイアウトが少し変わっただけで失敗する テストコードをメンテナンスするコストがかかる テストコード自体が間違っている可能性がある ブラウザテスト用の環境を作るコストが必要 ブラウザテストは重い
12.
自動テストの立ち位置
13.
自動テストの立ち位置 つまらない不具合は自動テストでふるいにかけて、手動テストで要求レベルの不 具合を見つける、ぐらいのスタンスがベスト
14.
自動化でできること・できないこと
15.
できること スクリーンショット作成 FirefoxとChromeのみ、画面外は表示されない cssセレクタを使ってクリック操作 画面遷移時の制限時間付きの待ち処理 DBの疎通確認 ログの疎通確認 メールの疎通確認 APIの疎通確認
16.
できないこと デザインの確認 DBの内容確認 ログの内容確認 メールの内容確認 APIの内容確認 別ベンダーやお客さんがDBをいじれる環境でのテスト
17.
ツールの紹介
18.
ツール nodejs nightwatchjs(パッケージ) selenium-webdriver(パッケージ) mocha(パッケージ) Selenium Server 各種Web Driver
19.
クロスブラウザのサーバ構成
20.
ローカルテスト用サーバ構成 開発環境 テストコード アプリケーション サーバ PhantomJs
21.
仮想環境 検証環境でのテスト用サーバ構成 開発環境 テストコード 検証環境 アプリケーション サーバ モダンIE10(Seleniumサーバ) IE10Edge同様 モダンEdge(Seleniumサーバ) Chrome Firefox Edge IE11WebDriver Selenium Server モダンIE8(Seleniumサーバ) IE8Edge同様 MacOSX(Seleniumサーバ) SafariEdge同様
22.
ブラウザ設定
23.
ブラウザ設定 Chrome Selenium Serverにchromedriverを紐付け(ブラウザのバージョンに依存) Firefox nightwatchにmarionetteの設定 Selenium Serverにgeckodriverを紐付け(ブラウザのバージョンに依存)
24.
ブラウザ設定 IE Selenium Serverにiedriverを紐付け(ブラウザのバージョンに依存) インターネットオプションの保護設定を変更 IE11のみレジストリの変更 テストコードを一部IEのための書き方をしないと動かない場合がある ウィンドウズから提供されているモダンIEで環境を作った場合、3ヶ月おきに環境作成と上記の 再設定が必要 Safari Selenium Serverにsafaridriverを紐付け(ブラウザのバージョンに依存) phantomjs 開発環境に日本語フォントを入れる
25.
テストコード作成時のポイント
26.
作成ポイント DBを毎回初期化できる仕組みを作る ボタン、リンク、入力項目のHTMLタグにIDを振る 単体テストでできるものは単体テストで行う テスト項目の粒度は小さく保つ
27.
開発時の流れ
28.
開発フロー シナリオテスト項目作成 機能テスト項目作成 実装 単体テスト項目作成 単体テストコード作成と実施 シナリオテストコード作成と実施 機能テストコード作成と実施 マージリクエスト (GitLab) CIで単体テスト 機能テストとシナリオテス ト実施 マージ (GitLab) 検証環境にデプロイコードレビュー 検証環境で自動化が 可能な場合
29.
まとめ
30.
まとめ 自動テストは基本的には大きな利益をもたらす しかし、デメリットもそれなりに存在する 手動・単体・ブラウザのバランスが大事
31.
ありがとうございました
Editor's Notes
テストには大きく分けて4つあります。 単体テストは実装した処理が仕様を満たしているかをコードレベルでテストします。 機能テストはブラウザから操作して、その結果が仕様通りに表示されるか。DBに反映されているか。メールが送られているか。ログは書き込まれているか。などの外部装置との連携を含めたテストをします。 シナリオテストはお客さんとの間で決めた要求をみたしているかをユースケースを使ってテストします。 非機能テストは速度やセキュリティなど、機能に含めていない部分のテストをします。
単体テストはCUI上で完結します。ブラウザやDBなどを含まないので動作が軽く、作成方法もシンプルです。項目数は多いですが作成が簡単なのでコスパはいいです。 機能テストはブラウザで確認できる部分はブラウザテスト、メールなどは手動でテストします。HTMLのタグを調べながらテストを作るので単体よりも時間がかかります。項目自体も多いため一番コストがかかる部分です。 シナリオテストは機能テストと同じ内容です。項目数は少ないため作成は割と簡単にできると思います。 非機能テストは人の目での確認になるので自動化はほぼ出来ません。「何秒以内に表示される」のようなテストはシナリオテストなどで自動化は可能です。 これから説明するのは機能テスト、シナリオテストにあるブラウザテストについてです。
テストから仕様を把握する:テストと仕様は1対1になるように作るので、アジャイル場合はテスト項目の一覧を仕様書代わりにしてたりします。 不具合を恐れずにリファクタリングができる:修正後にテストを回すことによって、不具合が出た場合に確認できるので安心感があります。 クロスブラウザや回帰テストのコストを削減:3回以上同じテストを繰り返す場合は自動化したほうがコストが下がります。 一定の品質を保証:自動テストが通ることで正しく実装されていることを保証できます。
たまに正常なテストであっても、OSに負荷がかかってブラウザの立ち上がりが遅いなどでエラーになったりします。 要求や機能に変更がなくてもボタンの位置が変更になったり、divタグをpタグに変更するなどでエラーになります。 テストの自動化全般に言えることですが、定期的に実行してメンテナンスしていかないとすぐに使えなくなってしまいます。 テストコード自体がバグっている可能性があります。ほんとは失敗するべきところで成功をかえすなど。 この後、説明しますがテストコード通りにブラウザを操作するために色々と設定が必要になってきます。 単体テストに比べるとブラウザテストは重いです。ですが、手動で行うよりかは速いです。
先ほど述べた通り、メリットもあればデメリットもあるため、自動テストさえしていれば大丈夫というわけにはいきません。手動テストをなくすというよりも、手動テストから煩わしい部分をなるべく減らすために行うと考えたほうがいいです。
スクリーンショットを取ることが可能ですが、FirefoxとChromeは画面外の部分は表示されません。テストコード上でスクロールする処理を書く必要があります。
デザイン崩れなどはスクリーンショットを取って目視で確認する必要があります。 DBやログなどの内容は確認できません。 テスト時に毎回DBを初期の状態に戻す必要があるので、ほかの人がDBをいじる環境ではテストが失敗する可能性があります。
今回テストコードを書くためにnodejsを利用しましたが。JAVAやPHP、Rubyなどでも可能です。基本どのツールでも同じことができるのですがnightwatchjsが一番簡潔に書けました。 ローカル環境で実行する場合はSeleniumサーバは必須ではないですが、Macで仮想環境のIEで確認をする場合などに必要になります。 ブラウザごとにWebドライバを公式サイトからダウンロードしてくる必要があります。これがないとテストコードの内容をブラウザに伝えることができません。
ローカルの場合、PhantomJsという見えないブラウザをインストールすることで簡単に環境を作ることができます。もし、Chromeなどでテストしたい場合は、この後に紹介する検証環境のサーバ構成を作ってテストする必要があります。
クロスブラウザテストの構成です。 仮想環境にChrome、Firefox、IE系をインストールして、各仮想環境とMacにSeleniumサーバを立てて、各Webドライバと連携させています。
IEの設定が一番煩雑です。また、モダンIEの場合、この煩雑な作業を3か月おきに各バージョンごとに行う必要があります。 phantomjsはCUIで動きます。なので、仮想の開発環境に一緒に入れておくことができるのですが、日本語フォントを入れておかないとスクリーンショットを取ったときに文字化けします。
ボタンやリンクにIDを振ることで、デザインが変わってもテストコードをなるべく修正する必要がなくなります。 ブラウザテストはコストパフォーマンスが悪いので、単体テストでできる内容までブラウザテストに回すとコストが高くつきます。 一つのテスト項目に複数のテスト結果を含めることができるのですが、エラーになったときに原因の特定が大変になります。項目はなるべく原因を特定しやすい単位まで小さくする必要があります。
テスト項目作成はテストコードの中身は書かずに項目部分だけをコーディングします。 実装と単体テストを繰り返します。 実装完了後に機能テストとシナリオテストを書きます。 マージリクエスト後にレビュアーは実装とテストコードのレビューをします。 実際にテストコードを動かしてみます。 自身で軽く操作もしてみる。 問題がなければマージします。
Download now