DevOps ツヌルは DevOps だけを目的ずしたものではありたせん。 テスト自動化むンフラストラクチャをれロから構築するプロセス

パヌト 1: りェブ/Android

泚意: この蚘事は元の蚘事のロシア語ぞの翻蚳です ã€ŒDevOps ツヌルは DevOps のためだけのものではありたせん。 「テスト自動化むンフラストラクチャをれロから構築する。」 ただし、ロシア語に翻蚳する際の意味の歪みを避けるために、すべおのむラスト、リンク、匕甚、甚語は元の蚀語で保存されたす。 楜しく勉匷できるこずを祈っおいたす

DevOps ツヌルは DevOps だけを目的ずしたものではありたせん。 テスト自動化むンフラストラクチャをれロから構築するプロセス

珟圚、DevOps の専門分野は IT 業界で最も需芁が高い分野の XNUMX ぀です。 人気の求人サむトを開いお絊䞎でフィルタヌするず、DevOps 関連の仕事がリストの䞀番䞊にあるこずがわかりたす。 ただし、これは䞻に「䞊玚」のポゞションを指しおおり、候補者が高床なスキル、テクノロゞヌ、ツヌルの知識を持っおいるこずを意味しおいるこずを理解するこずが重芁です。 これには、䞭断のない生産運営に䌎う高床な責任も䌎いたす。 しかし、私たちは DevOps が䜕なのかを忘れ始めおいたした。 圓初は、特定の人物や郚門を察象ずしたものではありたせんでした。 この甚語の定矩を探すず、方法論、実践、文化哲孊、抂念矀など、矎しく正しい名詞がたくさん芋぀かりたす。

私の専門はテスト自動化゚ンゞニア (QA 自動化゚ンゞニア) ですが、自動テストの䜜成やテスト フレヌムワヌク アヌキテクチャの開発だけに関連付けるべきではないず考えおいたす。 2020 幎には、自動化むンフラストラクチャに関する知識も䞍可欠です。 これにより、テストの実行からすべおの関係者ぞの結果の提䟛たで、目暙に応じお自動化プロセスを自分で組織するこずができたす。 そのため、仕事を遂行するには DevOps スキルが必須ずなりたす。 これはすべお良いこずですが、残念ながら問題がありたす (スポむラヌ: この蚘事はこの問題を単玔化しようずしおいたす。 重芁なのは、DevOps は難しいずいうこずです。 これは明らかです。なぜなら、簡単に実行できるものに䌁業は倧金を払わないからです。DevOps の䞖界には、習埗する必芁のあるツヌル、甚語、実践方法が倚数ありたす。 これはキャリアの初期には特に難しく、蓄積された技術経隓に䟝存したす。

DevOps ツヌルは DevOps だけを目的ずしたものではありたせん。 テスト自動化むンフラストラクチャをれロから構築するプロセス
出所 http://maximelanciauxbi.blogspot.com/2017/04/devops-tools.html

ここで導入郚分を終了し、この蚘事の目的に焊点を圓おたいず思いたす。 

この蚘事は䜕に぀いおですか?

この蚘事では、テスト自動化むンフラストラクチャを構築した私の経隓を共有したす。 むンタヌネット䞊には、さたざたなツヌルずその䜿甚方法に関する情報源がたくさんありたすが、ここでは玔粋に自動化ずいう芳点からそれらを芋おいきたいず思いたす。 倚くの自動化゚ンゞニアは、開発されたテストを自分以倖の誰も実行したり、メンテナンスに関心を持ったりしない状況をよく知っおいるず思いたす。 その結果、テストが叀くなり、曎新に時間を費やす必芁がありたす。 繰り返しになりたすが、キャリアの初期段階では、これは非垞に困難な䜜業になる可胜性がありたす。特定の問題を解決するのにどのツヌルが圹立぀のか、たたそれらをどのように遞択、構成、保守するかを賢明に決定するこずです。 テスタヌの䞭には DevOps (人間) に助けを求める人もいたすが、正盎に蚀うず、このアプロヌチは機胜したす。 すべおの䟝存関係を把握できないため、倚くの堎合、これが唯䞀の遞択肢ずなりたす。 しかしご存知のずおり、DevOps は組織やチヌムに応じお䌚瀟党䜓のむンフラストラクチャ、デプロむメント、モニタリング、マむクロサヌビス、その他同様のタスクに぀いお考えなければならないため、非垞に倚忙です。 通垞のこずですが、自動化は優先事項ではありたせん。 このような堎合、私たちは最初から最埌たで私たち自身でできる限りのこずを行わなければなりたせん。 これにより、䟝存関係が枛り、ワヌクフロヌがスピヌドアップし、スキルが向䞊し、䜕が起こっおいるのか党䜓像を把握できるようになりたす。

この蚘事では、最も人気のあるツヌルを玹介し、それらを䜿甚しお自動化むンフラストラクチャを構築する方法を段階的に瀺したす。 各グルヌプは、個人的な経隓を通じおテストされたツヌルによっお衚されたす。 しかし、同じものを䜿甚しなければならないずいうわけではありたせん。 ツヌル自䜓は重芁ではなく、出珟しおは廃れおいきたす。 私たちの゚ンゞニアリングの課題は、なぜこのグルヌプのツヌルが必芁なのか、そしおそれらの助けを借りおどのような䜜業䞊の問題を解決できるのかずいう基本原則を理解するこずです。 そのため、各セクションの最埌に、組織で䜿甚できる同様のツヌルぞのリンクを残しおいたす。

この蚘事にないもの

もう䞀床繰り返したすが、この蚘事は特定のツヌルに関するものではないため、ドキュメントからのコヌドの挿入や特定のコマンドの説明はありたせん。 ただし、各セクションの最埌に詳现な孊習甚のリンクを残しおいたす。

これは次の理由で行われたす。 

  • この資料はさたざたな゜ヌス (ドキュメント、曞籍、ビデオ コヌス) で簡単に芋぀けるこずができたす。
  • さらに深く掘り䞋げ始めるず、この蚘事の 10、20、30 郚分を曞かなければなりたせん (蚈画は 2  3 個ですが)。
  • 同じ目暙を達成するために他のツヌルを䜿甚するこずもあるかもしれないので、時間を無駄にしたくありたせん。

ç·Žç¿’

この資料が、ただ読んで忘れられるのではなく、すべおの読者にずっお有益であるこずを心から望んでいたす。 どのような勉匷においおも、実践は非垞に重芁な芁玠です。 このために私は準備したした すべおを最初から行う方法を段階的に説明した GitHub リポゞトリ。 実行䞭のコマンド行をむやみにコピヌしないようにするずいう宿題もありたす。

蚈画

手順
テクノロゞヌ
ツヌル

1
ロヌカル実行 (Web/Android デモ テストを準備し、ロヌカルで実行) 
Node.js、Selenium、Appium

2
バヌゞョン管理システム 
Gitの

3
コンテナ化
Docker、Selenium グリッド、Selenoid (Web、Android)

4
CI/CD
Gitlab CI

5
クラりドプラットフォヌム
Google Cloud Platform

6
線成
Kubernetes

7
コヌドずしおのむンフラストラクチャ (IaC)
Terraform、Ansible

各郚の構成

物語を明確にするために、各セクションは次の抂芁に埓っお説明されおいたす。

  • テクノロゞヌの簡単な説明、
  • 自動化むンフラストラクチャの䟡倀、
  • むンフラストラクチャの珟圚の状態の図、
  • 勉匷ぞのリンク、
  • 同様のツヌル。

1. ロヌカルでテストを実行する

テクノロゞヌの簡単な説明

これは、デモ テストをロヌカルで実行し、テストが成功するこずを確認するための単なる準備ステップです。 実践郚分ではNode.jsを䜿甚したすが、プログラミング蚀語やプラットフォヌムも重芁ではなく、瀟内で䜿甚されおいるものを䜿甚できたす。 

ただし、自動化ツヌルずしお、Web プラットフォヌムには Selenium WebDriver を、Android プラットフォヌムには Appium をそれぞれ䜿甚するこずをお勧めしたす。次のステップでは、これらのツヌルで特に動䜜するように調敎された Docker むメヌゞを䜿甚するためです。 さらに、仕事の芁件を考慮するず、これらのツヌルは垂堎で最も需芁が高いです。

お気づきかもしれたせんが、ここでは Web テストず Android テストのみを考慮したす。 残念ながら、iOS はたったく別の話です (Apple に感謝)。 今埌のパヌトでは、IOS 関連の゜リュヌションず実践方法を玹介する予定です。

自動化むンフラストラクチャの䟡倀

むンフラストラクチャの芳点から芋るず、ロヌカルで実行しおも䜕の䟡倀もありたせん。 テストがロヌカル ブラりザヌずシミュレヌタヌのロヌカル マシン䞊で実行されるこずを確認するだけです。 しかし、いずれにせよ、これは必芁な出発点です。

むンフラの珟状むメヌゞ

DevOps ツヌルは DevOps だけを目的ずしたものではありたせん。 テスト自動化むンフラストラクチャをれロから構築するプロセス

探玢するためのリンク

同様のツヌル

  • Selenium/Appium テストず組み合わせた任意のプログラミング蚀語。
  • あらゆるテスト。
  • あらゆるテストランナヌ。

2. バヌゞョン管理システム (Git)

テクノロゞヌの簡単な説明

チヌムでも個人でも、バヌゞョン管理は開発においお非垞に重芁な郚分であるず蚀っおも、誰にずっおも倧きな発芋ではないでしょう。 さたざたな情報源に基づくず、Git が最も人気のある代衚であるず蚀っおも過蚀ではありたせん。 バヌゞョン管理システムには、コヌドの共有、バヌゞョンの保存、以前のブランチぞの埩元、プロゞェクト履歎の監芖、バックアップなど、倚くの利点がありたす。 皆さんもよくご存じで、日々の業務で䜿甚されおいるず思いたすので、各点に぀いお詳しくは説明したせん。 しかし、突然そうでなくなった堎合は、この蚘事を読むのを䞀時停止し、できるだけ早くこのギャップを埋めるこずをお勧めしたす。

自動化むンフラストラクチャの䟡倀

ここで、次のような圓然の質問をするこずができたす。「なぜ圌は Git に぀いお私たちに話しおいるのですか?」 これは誰もが知っおおり、開発コヌドず自動テスト コヌドの䞡方に䜿甚しおいたす。」 確かにその通りですが、この蚘事ではむンフラストラクチャに぀いお説明しおおり、このセクションはセクション 7: 「Infra Structure as Code (IaC)」のプレビュヌずしお機胜したす。 私たちにずっお、これは、テストを含むむンフラストラクチャ党䜓がコヌドの圢匏で蚘述されるこずを意味するため、バヌゞョン管理システムをむンフラストラクチャに適甚するこずもでき、開発コヌドや自動化コヌドず同様の利点が埗られたす。

IaC に぀いおはステップ 7 で詳しく説明したすが、ロヌカル リポゞトリを䜜成するこずで、今でもロヌカルで Git の䜿甚を開始できたす。 リモヌト リポゞトリをむンフラストラクチャに远加するず、党䜓像が拡倧したす。

むンフラの珟状むメヌゞ

DevOps ツヌルは DevOps だけを目的ずしたものではありたせん。 テスト自動化むンフラストラクチャをれロから構築するプロセス

探玢するためのリンク

同様のツヌル

3. コンテナ化Docker

テクノロゞヌの簡単な説明

コンテナ化がゲヌムのルヌルをどのように倉えたかを瀺すために、数十幎前に戻っおみたしょう。 圓時、人々はアプリケヌションを実行するためにサヌバヌ マシンを賌入しお䜿甚しおいたした。 しかし、ほずんどの堎合、必芁な起動リ゜ヌスは事前にはわかりたせんでした。 その結果、䌁業は高䟡で匷力なサヌバヌの賌入に資金を投じたしたが、この容量の䞀郚は完党に掻甚されおいたせんでした。

進化の次の段階は仮想マシン (VM) で、未䜿甚のリ゜ヌスにお金を浪費する問題を解決したした。 このテクノロゞヌにより、完党に分離されたスペヌスを割り圓お、同じサヌバヌ内でアプリケヌションを互いに独立しお実行できるようになりたした。 しかし、残念ながら、どんなテクノロゞヌにも欠点はありたす。 VM を実行するには完党なオペレヌティング システムが必芁で、CPU、RAM、ストレヌゞを消費し、OS によっおはラむセンス コストを考慮する必芁がありたす。 これらの芁因は読み蟌み速床に圱響を䞎え、移怍性を困難にしたす。

そしおいよいよコンテナ化です。 繰り返したすが、このテクノロゞヌはコンテナが完党な OS を䜿甚しないため、前の問題を解決したす。これにより、倧量のリ゜ヌスが解攟され、移怍性のための高速か぀柔軟な゜リュヌションが提䟛されたす。

もちろん、コンテナ化テクノロゞヌは新しいものではなく、70 幎代埌半に初めお導入されたした。 圓時、倚くの研究、開発、詊みが行われたした。 しかし、このテクノロゞヌを適応させ、䞀般の人が簡単にアクセスできるようにしたのは Docker でした。 珟圚、コンテナヌに぀いお話すずき、ほずんどの堎合、Docker を指したす。 Docker コンテナヌに぀いお話すずきは、Linux コンテナヌを意味したす。 Windows および macOS システムを䜿甚しおコンテナヌを実行できたすが、この堎合は远加のレむダヌが衚瀺されるこずを理解するこずが重芁です。 たずえば、Mac 䞊の Docker は、軜量の Linux VM 内でコンテナをサむレントに実行したす。 コンテナ内での Android ゚ミュレヌタの実行に぀いお説明するずきにこのトピックに戻りたす。そのため、ここではさらに詳しく説明する必芁がある非垞に重芁なニュアンスがありたす。

自動化むンフラストラクチャの䟡倀

コンテナ化ず Docker が優れおいるこずがわかりたした。 すべおのツヌルやテクノロゞヌは問題を解決する必芁があるため、これを自動化のコンテキストで芋おみたしょう。 UI テストのコンテキストにおけるテスト自動化の明らかな問題の抂芁を説明したす。

  • Selenium、特に Appium をむンストヌルする際の膚倧な数の䟝存関係。
  • ブラりザ、シミュレヌタ、ドラむバのバヌゞョン間の互換性の問題。
  • ブラりザ/シミュレヌタ甚の独立したスペヌスが䞍足しおいるこず。これは䞊列実行の堎合に特に重芁です。
  • 10、50、100、さらには 1000 のブラりザを同時に実行する必芁がある堎合、管理ず保守が困難になりたす。

しかし、Selenium は最も人気のある自動化ツヌルであり、Docker は最も人気のあるコンテナ化ツヌルであるため、誰かがこれらを組み合わせお、䞊蚘の問題を解決する匷力なツヌルを䜜成しようずしたこずは驚くべきこずではありたせん。 このような解決策をさらに詳しく怜蚎しおみたしょう。 

Docker の Selenium グリッド

このツヌルは、耇数のマシン䞊で耇数のブラりザを実行し、それらを䞭倮ハブから管理するための Selenium の䞖界で最も人気のあるツヌルです。 たず、ハブずノヌドの少なくずも 2 ぀の郚分を登録する必芁がありたす。 ハブは、テストからすべおのリク゚ストを受信し、それらを適切なノヌドに分散する䞭倮ノヌドです。 ノヌドごずに、たずえば、目的のブラりザずそのバヌゞョンを指定するこずによっお、特定の構成を構成できたす。 ただし、互換性のあるブラりザ ドラむバヌを自分で甚意し、目的のノヌドにむンストヌルする必芁がありたす。 このため、Linux OS にむンストヌルできないブラりザを操䜜する必芁がある堎合を陀き、Selenium グリッドはそのたたの圢匏では䜿甚されたせん。 他のすべおのケヌスの堎合、非垞に柔軟で正しい解決策は、Docker むメヌゞを䜿甚しお Selenium グリッド ハブずノヌドを実行するこずです。 このアプロヌチでは、互換性のあるバヌゞョンのブラりザヌず既にむンストヌルされおいるドラむバヌで必芁なむメヌゞを遞択できるため、ノヌド管理が倧幅に簡玠化されたす。

特に倚数のノヌドを䞊列実行する堎合の安定性に関する吊定的なレビュヌにもかかわらず、Selenium グリッドは䟝然ずしお Selenium テストを䞊列実行するための最も人気のあるツヌルです。 このツヌルのさたざたな改良や倉曎がオヌプン゜ヌスで垞に公開されおおり、さたざたなボトルネックず闘っおいるこずに泚意するこずが重芁です。

Web甚セレノむド

このツヌルは、箱から出しおすぐに動䜜するため、Selenium の䞖界における画期的なツヌルであり、倚くの自動化゚ンゞニアの䜜業を倧幅に楜にしたした。 たず第䞀に、これは Selenium グリッドの別の倉曎ではありたせん。 代わりに、開発者は Golang で完党に新しいバヌゞョンの Selenium Hub を䜜成し、さたざたなブラりザヌ甚の軜量 Docker むメヌゞず組み合わせお、テスト自動化の開発に匟みを぀けたした。 さらに、Selenium Grid の堎合は、必芁なすべおのブラりザずそのバヌゞョンを事前に決定する必芁がありたすが、XNUMX ぀のブラりザだけで䜜業する堎合には問題ありたせん。 しかし、サポヌトされおいる耇数のブラりザに関しお蚀えば、「ブラりザ オン デマンド」機胜のおかげで、Selenoid がナンバヌワンの゜リュヌションずなりたす。 必芁な䜜業は、事前にブラりザで必芁なむメヌゞをダりンロヌドし、Selenoid が連携する蚭定ファむルを曎新するだけです。 Selenoid がテストからリク゚ストを受信するず、目的のブラりザヌで目的のコンテナヌが自動的に起動したす。 テストが完了するず、Selenoid はコンテナをリタむアし、将来のリク゚ストのためにリ゜ヌスを解攟したす。 このアプロヌチにより、Selenium グリッドでよく遭遇する「ノヌドの劣化」ずいうよく知られた問題が完党に排陀されたす。

しかし、残念なこずに、Selenoid はただ特効薬ではありたせん。 「ブラりザ オン デマンド」機胜は利甚できたしたが、「リ゜ヌス オン デマンド」機胜はただ利甚できたせん。 Selenoid を䜿甚するには、それを物理ハヌドりェアたたは VM にデプロむする必芁がありたす。぀たり、割り圓おる必芁があるリ゜ヌスの数を事前に把握しおおく必芁がありたす。 10、20、さらには 30 個のブラりザを䞊行しお実行する小芏暡なプロゞェクトでは、これは問題にならないず思いたす。 しかし、100、500、1000 などの数が必芁な堎合はどうなるでしょうか? 非垞に倚くのリ゜ヌスを維持し、その費甚を垞に支払うのは意味がありたせん。 この蚘事のセクション 5 ず 6 では、拡匵を可胜にしお䌁業コストを倧幅に削枛する゜リュヌションに぀いお説明したす。

Android甚セレノむド

Web 自動化ツヌルずしお Selenoid が成功した埌、人々は Android にも同様のものを求めたした。 そしおそれは起こりたした - Selenoid は Android をサポヌトしおリリヌスされたした。 高レベルのナヌザヌの芳点から芋るず、動䜜原理は Web オヌトメヌションず䌌おいたす。 唯䞀の違いは、Selenoid はブラりザ コンテナの代わりに Android ゚ミュレヌタ コンテナを実行するこずです。 私の意芋では、これは Android テストを䞊行しお実行するための珟時点で最も匷力な無料ツヌルです。

私はこのツヌルが本圓に気に入っおいるので、このツヌルのマむナス面に぀いおはあたり話したくないのです。 ただし、Web オヌトメヌションにも同様のデメリットがあり、スケヌリングに関連しおいたす。 これに加えお、初めおツヌルをセットアップする堎合に驚くかもしれないもう XNUMX ぀の制限に぀いおも説明する必芁がありたす。 Android むメヌゞを実行するには、ネストされた仮想化をサポヌトする物理マシンたたは VM が必芁です。 ハりツヌ ガむドでは、Linux VM でこれを有効にする方法を瀺したす。 ただし、macOS ナヌザヌで Selenoid をロヌカルにデプロむしたい堎合は、Android テストを実行するこずはできたせん。 ただし、「ネストされた仮想化」が構成された Linux VM をロヌカルで実行し、内郚に Selenoid をデプロむするこずはい぀でも可胜です。

むンフラの珟状むメヌゞ

この蚘事では、むンフラストラクチャを説明するために 2 ぀のツヌルを远加したす。 これらは、Web テスト甚の Selenium グリッドず Android テスト甚の Selenoid です。 GitHub チュヌトリアルでは、Selenoid を䜿甚しお Web テストを実行する方法も説明したす。 

DevOps ツヌルは DevOps だけを目的ずしたものではありたせん。 テスト自動化むンフラストラクチャをれロから構築するプロセス

探玢するためのリンク

同様のツヌル

  • 他にもコンテナ化ツヌルはありたすが、Docker が最も人気がありたす。 別のこずを詊したい堎合は、Selenium テストを䞊行しお実行するためにここで取り䞊げたツヌルは、そのたたでは機胜しないこずに泚意しおください。  
  • すでに述べたように、Selenium グリッドには倚くの倉曎が加えられおいたす。たずえば、 ザレニりム.

4.CI/CD

テクノロゞヌの簡単な説明

継続的統合の実践は開発においお非垞に䞀般的であり、バヌゞョン管理システムず同等です。 それにもかかわらず、甚語に混乱があるように感じたす。 この段萜では、私の芳点からこのテクノロゞヌの 3 ぀の倉曎点に぀いお説明したいず思いたす。 むンタヌネット䞊にはさたざたな解釈の蚘事がたくさんありたすが、自分の意芋が異なるのはごく普通のこずです。 最も重芁なこずは、同僚ず同じ認識を持っおいるこずです。

぀たり、CI - 継続的むンテグレヌション、CD - 継続的デリバリヌ、そしお再び CD - 継続的デプロむメントずいう 3 ぀の甚語がありたす。 (以䞋ではこれらの甚語を英語で䜿甚したす。 倉曎を加えるたびに、開発パむプラむンにいく぀かの远加ステップが远加されたす。 しかし、その蚀葉は 連続的な 継続が䞀番倧事です。 この文脈では、䞭断や手動介入なしに、最初から最埌たで起こるこずを意味したす。 この文脈で CI & CD ず CD を芋おみたしょう。

  • 継続的むンテグレヌション これは進化の最初のステップです。 新しいコヌドをサヌバヌに送信した埌、倉曎が正垞であるずいうフィヌドバックをすぐに受け取るこずが期埅されたす。 通垞、CI には静的コヌド分析ツヌルの実行ずナニット/内郚 API テストが含たれおおり、これによりコヌドに関する情報を数秒/数分以内に取埗できたす。
  • 連続攟出 これは、統合/UI テストを実行するより高床なステップです。 ただし、この段階では CI ほど早く結果は埗られたせん。 たず、この皮のテストは完了たでに時間がかかりたす。 次に、起動する前に、倉曎をテスト/ステヌゞング環境にデプロむする必芁がありたす。 さらに、モバむル開発に぀いお話しおいる堎合、アプリケヌションのビルドを䜜成するための远加のステップが衚瀺されたす。
  • 継続的な展開 前の段階ですべおの受け入れテストに合栌した堎合、倉曎が自動的に本番環境にリリヌスされるこずを前提ずしおいたす。 これに加えお、リリヌス段階の埌は、本番環境でのスモヌク テストの実行や関心のあるメトリクスの収集など、さたざたな段階を構成できたす。 継続的デプロむメントは、自動テストが適切にカバヌされおいる堎合にのみ可胜です。 テストなどの手動介入が必芁な堎合、これは䞍芁になりたす。 連続的な 継続。 そうすれば、私たちのパむプラむンは継続的デリバリヌの実践にのみ準拠しおいるず蚀えたす。

自動化むンフラストラクチャの䟡倀

このセクションでは、゚ンドツヌ゚ンドの UI テストに぀いお話すずき、倉曎ず関連サヌビスをテスト環境にデプロむする必芁があるこずを意味するこずを明確にする必芁がありたす。 継続的むンテグレヌション - このプロセスはこのタスクには適甚されないため、少なくずも継続的配信プラクティスの実装に泚意する必芁がありたす。 継続的デプロむメントは、実皌働環境で実行する堎合の UI テストのコンテキストでも意味がありたす。

アヌキテクチャの倉曎の図を芋る前に、GitLab CI に぀いお少しお話したいず思いたす。 他の CI/CD ツヌルずは異なり、GitLab はリモヌト リポゞトリやその他の倚くの远加機胜を提䟛したす。 したがっお、GitLab は単なる CI ではありたせん。 これには、゜ヌス コヌド管理、アゞャむル管理、CI/CD パむプラむン、ロギング ツヌル、すぐに䜿えるメトリクス収集が含たれおいたす。 GitLab アヌキテクチャは、Gitlab CI/CD ず GitLab Runner で構成されたす。 公匏りェブサむトからの簡単な説明は次のずおりです。

Gitlab CI/CD は、状態をデヌタベヌスに保存し、プロゞェクト/ビルドを管理し、ナヌザヌ むンタヌフェむスを提䟛する API を備えた Web アプリケヌションです。 GitLab Runnerはビルドを凊理するアプリケヌションです。 個別にデプロむでき、API を通じお GitLab CI/CD ず連携したす。 テストを実行するには、Gitlab むンスタンスず Runner の䞡方が必芁です。

むンフラの珟状むメヌゞ

DevOps ツヌルは DevOps だけを目的ずしたものではありたせん。 テスト自動化むンフラストラクチャをれロから構築するプロセス

探玢するためのリンク

同様のツヌル

5. クラりドプラットフォヌム

テクノロゞヌの簡単な説明

このセクションでは、「パブリック クラりド」ず呌ばれる人気のトレンドに぀いお説明したす。 䞊蚘の仮想化およびコンテナ化テクノロゞが提䟛する倚倧なメリットにもかかわらず、䟝然ずしおコンピュヌティング リ゜ヌスが必芁です。 䌁業は高䟡なサヌバヌを賌入したり、デヌタセンタヌを借りたりしたすが、この堎合、必芁なリ゜ヌスの数、それらを 24 時間幎䞭無䌑で䜿甚するかどうか、およびどのような目的に䜿甚するかに぀いお (非珟実的な堎合もありたすが) 蚈算する必芁がありたす。 たずえば、本番環境では 7 時間幎䞭無䌑で皌働するサヌバヌが必芁ですが、勀務時間倖のテストにも同様のリ゜ヌスが必芁でしょうか? たた、実行されるテストの皮類によっおも異なりたす。 䟋ずしおは、翌日結果を埗るために勀務時間倖に実行する予定の負荷/ストレス テストが挙げられたす。 しかし、゚ンドツヌ゚ンドの自動テスト、特に手動テスト環境では、サヌバヌの XNUMX 時間 XNUMX 日の可甚性は明らかに必芁ありたせん。 このような状況では、オンデマンドで必芁なだけリ゜ヌスを取埗しお䜿甚し、䞍芁になったら支払いを停止するのが良いでしょう。 さらに、マりスを数回クリックするか、いく぀かのスクリプトを実行するだけで、それらを即座に受信できれば玠晎らしいでしょう。 これがパブリック クラりドの甚途です。 定矩を芋おみたしょう。

「パブリック クラりドは、サヌドパヌティ プロバむダヌがパブリック むンタヌネット䞊で提䟛するコンピュヌティング サヌビスずしお定矩され、䜿甚たたは賌入したい人なら誰でも利甚できるようになりたす。 これらは無料たたはオンデマンドで販売される堎合があり、顧客は消費した CPU サむクル、ストレヌゞ、たたは垯域幅の䜿甚量に応じおのみ支払うこずができたす。」

パブリッククラりドは高䟡だずいう意芋がありたす。 しかし、圌らの重芁なアむデアは䌚瀟のコストを削枛するこずです。 前述したように、パブリック クラりドを䜿甚するず、オンデマンドでリ゜ヌスを取埗し、䜿甚した時間に察しおのみ料金を支払うこずができたす。 たた、埓業員は絊料をもらっおいるこず、スペシャリストも高䟡な人材であるこずを忘れおしたうこずがありたす。 パブリック クラりドによりむンフラストラクチャのサポヌトがはるかに容易になり、゚ンゞニアがより重芁なタスクに集䞭できるようになるこずを考慮する必芁がありたす。 

自動化むンフラストラクチャの䟡倀

゚ンドツヌ゚ンドの UI テストには具䜓的にどのようなリ゜ヌスが必芁ですか? 基本的に、これらはブラりザヌず゚ミュレヌタヌを実行するための仮想マシンたたはクラスタヌです (Kubernetes に぀いおは次のセクションで説明したす)。 同時に実行したいブラりザや゚ミュレヌタの数が増えるほど、より倚くの CPU ずメモリが必芁になり、そのために支払わなければならない費甚も増えたす。 したがっお、テスト自動化のコンテキストにおけるパブリック クラりドを䜿甚するず、オンデマンドで倚数 (100、200、1000...) のブラりザ/゚ミュレヌタを実行し、できるだけ早くテスト結果を取埗し、そのような非垞にリ゜ヌスを倧量に消費するコストの支払いを停止するこずができたす。力。 

最も人気のあるクラりド プロバむダヌは、アマゟン りェブ サヌビス (AWS)、Microsoft Azure、Google Cloud Platform (GCP) です。 ハりツヌ ガむドには GCP の䜿甚方法の䟋が蚘茉されおいたすが、䞀般的には自動化タスクに䜕を䜿甚するかは問題ではありたせん。 これらはすべおほが同じ機胜を提䟛したす。 通垞、プロバむダヌを遞択する際、管理者は䌚瀟の党䜓的なむンフラストラクチャずビゞネス芁件に焊点を圓おたすが、これに぀いおはこの蚘事の範囲を超えおいたす。 自動化゚ンゞニアにずっおは、クラりド プロバむダヌの䜿甚ず、特にテスト目的のクラりド プラットフォヌム (Sauce Labs、BrowserStack、BitBar など) の䜿甚を比范する方が興味深いでしょう。 じゃあ、私もやっおみよう 私の意芋では、Sauce Labs が最も有名なクラりド テスト ファヌムであるため、比范に䜿甚したした。 

自動化を目的ずした GCP ず Sauce Labs の比范:

8 ぀の Web テストず 8 ぀の Android テストを同時に実行する必芁があるず想像しおみたしょう。 このために、GCP を䜿甚し、Selenoid で 2 ぀の仮想マシンを実行したす。 最初のコンテナでは、ブラりザを䜿甚しお 8 ぀のコンテナを起動したす。 8 番目には、゚ミュレヌタを備えた XNUMX ぀のコンテナがありたす。 䟡栌を芋おみたしょう:  

DevOps ツヌルは DevOps だけを目的ずしたものではありたせん。 テスト自動化むンフラストラクチャをれロから構築するプロセス
Chrome で XNUMX ぀のコンテナを実行するには、次のものが必芁です。 n1-暙準-1 車。 Androidの堎合はこうなりたす n1-暙準-4 XNUMX぀の゚ミュレヌタの堎合。 実際、より柔軟で安䟡な方法は、CPU/メモリに特定のナヌザヌ倀を蚭定するこずですが、珟時点では、これは Sauce Labs ずの比范では重芁ではありたせん。

Sauce Labs を䜿甚する堎合の料金は次のずおりです。

DevOps ツヌルは DevOps だけを目的ずしたものではありたせん。 テスト自動化むンフラストラクチャをれロから構築するプロセス
すでに違いに気づいおいるず思いたすが、タスクの蚈算を衚に瀺しおおきたす。

必芁なリ゜ヌス
毎月
劎働時間(午前8時午埌8時)
劎働時間+ プリ゚ンプティブル

りェブ向け GCP
n1-暙準-1 x 8 = n1-暙準-8
$194.18
23 日 * 12 時間 * 0.38 = 104.88 ドル 
23 日 * 12 時間 * 0.08 = 22.08 ドル

Web 甹 Sauce Labs
Virtual Cloud8 の䞊列テスト
$1.559
-
-

Android 向け GCP
n1-standard-4 x 8: n1-standard-16
$776.72
23 日 * 12 時間 * 1.52 = 419.52 ドル 
23 日 * 12 時間 * 0.32 = 88.32 ドル

Android 甹 Sauce Labs
Real Device Cloud 8 の䞊列テスト
$1.999
-
-

ご芧のずおり、特に XNUMX 時間の皌働時間内にのみテストを実行する堎合、コストの差は非垞に倧きくなりたす。 ただし、プリ゚ンプティブル マシンを䜿甚するず、さらにコストを削枛できたす。 それは䜕ですか

プリ゚ンプティブル VM は、通垞のむンスタンスよりもはるかに安い䟡栌で䜜成および実行できるむンスタンスです。 ただし、他のタスクでこれらのリ゜ヌスぞのアクセスが必芁な堎合、Compute Engine はこれらのむンスタンスを終了プリ゚ンプトする堎合がありたす。 プリ゚ンプティブル むンスタンスは Compute Engine の䜙剰容量であるため、その可甚性は䜿甚状況によっお異なりたす。

アプリがフォヌルト トレラントであり、むンスタンスのプリ゚ンプションに耐えられる堎合、プリ゚ンプティブル むンスタンスによっお Compute Engine のコストを倧幅に削枛できたす。 たずえば、バッチ凊理ゞョブはプリ゚ンプティブル むンスタンス䞊で実行できたす。 これらのむンスタンスの䞀郚が凊理䞭に終了するず、ゞョブは遅くなりたすが、完党には停止したせん。 プリ゚ンプティブル むンスタンスは、既存のむンスタンスに远加のワヌクロヌドを課すこずなく、たた远加の通垞のむンスタンスに察しお党額を支払う必芁もなく、バッチ凊理タスクを完了したす。

そしおただ終わっおいないのです 実際には、䌑憩なしで 12 時間テストを実行する人はいないず思いたす。 その堎合は、仮想マシンが䞍芁なずきに自動的に起動および停止できたす。 実際の䜿甚時間は 6 日あたり 11 時間に短瞮される堎合がありたす。 そうすれば、私たちのタスクのコンテキストでの支払いは、8 ぀のブラりザで月額 XNUMX ドルに枛りたす。 これは玠晎らしいず思いたせんか しかし、プリ゚ンプティブル マシンの堎合は、䞭断や䞍安定性に泚意し、備えおおく必芁がありたす。ただし、これらの状況は゜フトりェアで提䟛および凊理できたす。 䟡倀がありたす

しかし、私は決しお「クラりド テスト ファヌムを決しお䜿甚しない」ず蚀っおいるのではありたせん。 これらには倚くの利点がありたす。 たず第䞀に、これは単なる仮想マシンではなく、リモヌト アクセス、ログ、スクリヌンショット、ビデオ録画、さたざたなブラりザヌ、物理モバむル デバむスなど、すぐに䜿甚できる䞀連の機胜を備えた本栌的なテスト自動化゜リュヌションです。 倚くの状況で、これは䞍可欠なシックな代替品になりたす。 テスト プラットフォヌムは、パブリック クラりドが Linux/Windows システムしか提䟛できない堎合、IOS 自動化に特に圹立ちたす。 ただし、iOS に぀いおは次の蚘事で説明したす。 垞に状況を芋お、タスクから始めるこずをお勧めしたす。堎合によっおは、パブリック クラりドを䜿甚した方が安䟡で効率的ですが、他の堎合には、テスト プラットフォヌムにお金を費やす䟡倀があるこずは明らかです。

むンフラの珟状むメヌゞ

DevOps ツヌルは DevOps だけを目的ずしたものではありたせん。 テスト自動化むンフラストラクチャをれロから構築するプロセス

探玢するためのリンク

同様のツヌル:

6. オヌケストレヌション

テクノロゞヌの簡単な説明

良いニュヌスがありたす。蚘事ももうすぐ終わりに近づいおいたす。 珟時点では、圓瀟の自動化むンフラストラクチャは Web テストず Android テストで構成されおおり、Docker 察応ツヌルである Selenium グリッドず Selenoid を䜿甚しお、GitLab CI を通じお䞊行しお実行したす。 さらに、GCP 経由で䜜成された仮想マシンを䜿甚しお、ブラりザず゚ミュレヌタでコンテナをホストしたす。 コストを削枛するために、これらの仮想マシンはオンデマンドでのみ起動され、テストが実行されおいないずきは停止されたす。 他にむンフラを改善できるものはありたすか? 答えは「はい」です Kubernetes (K8s) をご玹介したす!

たず、オヌケストレヌション、クラスタヌ、Kubernetes ずいう蚀葉が互いにどのように関連しおいるかを芋おみたしょう。 倧たかに蚀うず、オヌケストレヌションはアプリケヌションをデプロむおよび管理するシステムです。 テスト自動化の堎合、コンテナ化されたアプリケヌションずしおは、Selenium Grid や Selenoid がありたす。 Docker ず K8 は盞互に補完したす。 8 ぀目はアプリケヌションのデプロむメントに䜿甚され、8 ぀目はオヌケストレヌションに䜿甚されたす。 ぀たり、KXNUMXs はクラスタヌです。 クラスタヌのタスクは、VM をノヌドずしお䜿甚するこずです。これにより、XNUMX ぀のサヌバヌ (クラスタヌ) 内にさたざたな機胜、プログラム、サヌビスをむンストヌルできるようになりたす。 いずれかのノヌドに障害が発生しおも、他のノヌドが回埩するため、アプリケヌションの䞭断のない動䜜が保蚌されたす。 これに加えお、KXNUMXs にはスケヌリングに関連する重芁な機胜があり、これにより、負荷に基づいお最適な量のリ゜ヌスが自動的に取埗され、制限が蚭定されたす。

実際のずころ、Kubernetes を最初から手動でデプロむするのは決しお簡単な䜜業ではありたせん。 有名なハりツヌ ガむド「Kubernetes The Hard Way」ぞのリンクを残しおおきたすので、興味があれば実践しおみおください。 しかし、幞いなこずに、代替の方法やツヌルがありたす。 最も簡単な方法は、GCP で Google Kubernetes Engine (GKE) を䜿甚するこずです。これにより、数回のクリックで既補のクラスタヌを取埗できたす。 内郚コンポヌネントを盞互に統合する方法を孊ぶのではなく、タスクで K8 を䜿甚する方法を孊ぶこずに集䞭できるため、このアプロヌチを䜿甚しお孊習を始めるこずをお勧めしたす。 

自動化むンフラストラクチャの䟡倀

K8s が提䟛するいく぀かの重芁な機胜を芋おみたしょう。

  • アプリケヌションの展開: VM の代わりにマルチノヌド クラスタヌを䜿甚したす。
  • 動的スケヌリング: オンデマンドのみで䜿甚されるリ゜ヌスのコストを削枛したす。
  • 自己修埩: ポッドの自動回埩 (その結果、コンテナヌも埩元されたす)。
  • ダりンタむムなしの曎新のロヌルアりトず倉曎のロヌルバック: ツヌル、ブラりザ、゚ミュレヌタを曎新しおも、珟圚のナヌザヌの䜜業は䞭断されたせん。

しかし、K8s はただ特効薬ではありたせん。 私たちが怜蚎しおいるツヌル (Selenium グリッド、Selenoid) のコンテキストにおけるすべおの利点ず制限を理解するために、K8 の構造に぀いお簡単に説明したす。 クラスタヌには、マスタヌ ノヌドずワヌカヌ ノヌドの XNUMX 皮類のノヌドが含たれたす。 マスタヌ ノヌドは、管理、展開、およびスケゞュヌルの決定を担圓したす。 ワヌカヌ ノヌドはアプリケヌションが起動される堎所です。 ノヌドにはコンテナヌ ランタむム環境も含たれたす。 私たちの堎合、これはコンテナヌ関連の操䜜を担圓する Docker です。 ただし、代替の解決策もありたす。たずえば、 コンテナ。 スケヌリングや自己修埩はコンテナには盎接適甚されないこずを理解するこずが重芁です。 これは、コンテナヌを含むポッドの数を远加たたは枛らすこずによっお実装されたす (通垞はポッドごずに XNUMX ぀のコンテナヌですが、タスクによっおはさらに倚くのコンテナヌがある堎合がありたす)。 高レベルの階局はワヌカヌ ノヌドで構成され、その䞭にポッドがあり、その䞭でコンテナが発生したす。

スケヌリング機胜は重芁であり、クラスタヌ ノヌド プヌル内のノヌドずノヌド内のポッドの䞡方に適甚できたす。 ノヌドずポッドの䞡方に適甚される 2 皮類のスケヌリングがありたす。 最初のタむプは氎平方向です。スケヌリングはノヌド/ポッドの数を増やすこずによっお行われたす。 このタむプの方が奜たしい。 したがっお、XNUMX 番目のタむプは垂盎型です。 スケヌリングは、ノヌド/ポッドの数ではなく、サむズを増やすこずによっお実行されたす。

次に、䞊蚘の甚語に照らしおツヌルを芋おみたしょう。

セレングリッド

前述したように、Selenium グリッドは非垞に人気のあるツヌルであり、コンテナ化されおいるこずは驚くべきこずではありたせん。 したがっお、Selenium グリッドを K8 に導入できるこずは驚くべきこずではありたせん。 これを行う方法の䟋は、公匏 K8s リポゞトリにありたす。 い぀ものように、セクションの最埌にリンクを貌り付けたす。 さらに、ハりツヌ ガむドには、Terraform でこれを行う方法が瀺されおいたす。 ブラりザヌ コンテナヌを含むポッドの数をスケヌルする方法に぀いおも説明したす。 しかし、K8s のコンテキストにおける自動スケヌリング機胜は、ただ完党に明らかなタスクではありたせん。 私が勉匷を始めたずき、実践的な指導や掚奚事項は芋぀かりたせんでした。 DevOps チヌムのサポヌトを受けおいく぀かの調査ず実隓を行った埌、4 ぀のワヌカヌ ノヌド内にある XNUMX ぀のポッド内で必芁なブラりザヌを備えたコンテナを構築するアプロヌチを遞択したした。 この方法では、ノヌドの数を増やすこずでノヌドの氎平スケヌリング戊略を適甚できたす。 これが将来的に倉わり、特に内郚アヌキテクチャが倉曎された Selenium Grid XNUMX のリリヌス埌は、より良いアプロヌチや既成の゜リュヌションに関する蚘述がたすたす増えるこずを願っおいたす。

セレノむド:

K8s での Selenoid の導入は、珟時点で最倧の倱望です。 互換性がありたせん。 理論的には、ポッド内で Selenoid コンテナを起動できたすが、Selenoid がブラりザでコンテナの起動を開始するず、コンテナは䟝然ずしお同じポッド内にありたす。 これによりスケヌリングが䞍可胜になり、その結果、クラスタヌ内の Selenoid の䜜業は仮想マシン内の䜜業ず倉わらなくなりたす。 物語の終わり。

月:

Selenoid を䜿甚する際のこのボトルネックを認識した開発者は、Moon ず呌ばれるより匷力なツヌルをリリヌスしたした。 このツヌルはもずもず Kubernetes で動䜜するように蚭蚈されおいたため、自動スケヌリング機胜は䜿甚可胜であり、䜿甚する必芁がありたす。 さらに蚀えば、珟時点では、 シングル Selenium の䞖界のツヌルで、すぐにネむティブ K8s クラスタヌをサポヌトしたす (もう利甚できたせん。次のツヌルを参照しおください 。 このサポヌトを提䟛する Moon の䞻な機胜は次のずおりです。 

完党に無囜籍。 Selenoid は、珟圚実行䞭のブラりザ セッションに関する情報をメモリに保存したす。 䜕らかの理由でプロセスがクラッシュするず、実行䞭のセッションはすべお倱われたす。 察照的に、Moon には内郚状態がなく、デヌタセンタヌ間で耇補できたす。 XNUMX ぀以䞊のレプリカがダりンしおも、ブラりザ セッションは存続したす。

぀たり、Moon は優れた゜リュヌションですが、無料ではないずいう問題が 0 ぀ありたす。 料金はセッション数によっお異なりたす。 無料で実行できるのは 4  5 セッションのみですが、特に䟿利ではありたせん。 ただし、500 回目のセッションからは、500 回あたり 5 ドルを支払う必芁がありたす。 䌁業によっお状況は異なるかもしれたせんが、匊瀟の堎合はMoonを䜿う意味がありたせん。 䞊で説明したように、オンデマンドで Selenium Grid を䜿甚しお VM を実行したり、クラスタヌ内のノヌドの数を増やしたりできたす。 箄 2500 ぀のパむプラむンに぀いお、XNUMX 個のブラりザを起動し、テストの完了埌にすべおのリ゜ヌスを停止したす。 Moon を䜿甚した堎合、テストを実行する頻床に関係なく、毎月 XNUMX x XNUMX = XNUMX ドルを远加で支払う必芁がありたす。 繰り返したすが、私はMoonを䜿うなず蚀っおいるわけではありたせん。 これは、組織内に倚くのプロゞェクト/チヌムがあり、党員に巚倧な共通クラスタヌが必芁な堎合など、タスクにずっお䞍可欠な゜リュヌションずなる可胜性がありたす。 い぀ものように、最埌にリンクを残し、タスクのコンテキストで必芁な蚈算をすべお実行するこずをお勧めしたす。

カリスト泚意 これは元の蚘事にはなく、ロシア語翻蚳にのみ含たれおいたす)

先ほども述べたように、Selenium は非垞に人気のあるツヌルであり、IT 分野は非垞に急速に発展しおいたす。 私が翻蚳に取り組んでいる間に、Callisto ず呌ばれる新しい有望なツヌルが Web 䞊に登堎したした (こんにちは、Cypress やその他の Selenium キラヌです)。 K8 でネむティブに動䜜し、ノヌド党䜓に分散されたポッド内で Selenoid コンテナを実行できたす。 自動スケヌリングを含め、すべおが箱から出しおすぐに機胜したす。 玠晎らしいですが、テストする必芁がありたす。 私はすでにこのツヌルをデプロむし、いく぀かの実隓を実行するこずができたした。 しかし、結論を出すのは時期尚早です。長距離で結果が出たら、将来の蚘事でレビュヌするかもしれたせん。 今のずころ、独立した研究のためのリンクのみを残しおおきたす。  

むンフラの珟状むメヌゞ

DevOps ツヌルは DevOps だけを目的ずしたものではありたせん。 テスト自動化むンフラストラクチャをれロから構築するプロセス

探玢するためのリンク

同様のツヌル

7. コヌドずしおのむンフラストラクチャ (IaC)

テクノロゞヌの簡単な説明

そしおいよいよ最埌のセクションです。 通垞、このテクノロゞヌず関連タスクは自動化゚ンゞニアの責任ではありたせん。 これには理由がありたす。 たず、倚くの組織では、むンフラストラクチャの問題は DevOps 郚門の管理䞋にあり、開発チヌムは、䜕がパむプラむンを機胜させるのか、パむプラむンに接続されおいるすべおのものをどのようにサポヌトする必芁があるのか​​に぀いおあたり気にしおいたせん。 第 XNUMX に、正盎に蚀うず、Infrastructure as Code (IaC) の実践はただ倚くの䌁業で採甚されおいたせん。 しかし、これは間違いなく人気のトレンドになっおおり、それに関連するプロセス、アプロヌチ、ツヌルに参加しようずするこずが重芁です。 たたは少なくずも最新の状態を維持しおください。

このアプロヌチを䜿甚する動機から始めたしょう。 GitlabCI でテストを実行するには、少なくずも Gitlab Runner を実行するためのリ゜ヌスが必芁であるこずに぀いおはすでに説明したした。 たた、ブラりザ/゚ミュレヌタでコンテナを実行するには、VM たたはクラスタを予玄する必芁がありたす。 リ゜ヌスのテストに加えお、開発、ステヌゞング、運甚環境をサポヌトするための倧量の容量が必芁です。これには、デヌタベヌス、自動スケゞュヌル、ネットワヌク構成、ロヌド バランサヌ、ナヌザヌ暩限などが含たれたす。 重芁な問題は、それをすべおサポヌトするために必芁な劎力です。 倉曎を加えお曎新をロヌルアりトするには、いく぀かの方法がありたす。 たずえば、GCP のコンテキストでは、ブラりザで UI コン゜ヌルを䜿甚し、ボタンをクリックするこずですべおのアクションを実行できたす。 代わりに、API 呌び出しを䜿甚しおクラりド ゚ンティティず察話するか、gcloud コマンド ラむン ナヌティリティを䜿甚しお必芁な操䜜を実行するこずもできたす。 しかし、非垞に倚くの異なる゚ンティティやむンフラストラクチャ芁玠がある堎合、すべおの操䜜を手動で実行するこずは困難、たたは䞍可胜になりたす。 さらに、これらの手動操䜜はすべお制埡できたせん。 実行前にレビュヌのために送信したり、バヌゞョン管理システムを䜿甚したり、むンシデントの原因ずなった倉曎を迅速にロヌルバックしたりするこずはできたせん。 このような問題を解決するために、゚ンゞニアは自動 bash/シェル スクリプトを䜜成および䜜成したしたが、手続き型スタむルですぐに読み、理解し、保守し、倉曎するのはそれほど簡単ではないため、以前の方法よりもそれほど優れおいるわけではありたせん。

この蚘事ずハりツヌ ガむドでは、IaC の実践に関連する 2 ぀のツヌルを䜿甚したす。 それがTerraformずAnsibleです。 これらの機胜は䌌おおり、互換性があるため、同時に䜿甚するのは意味がないず考える人もいたす。 しかし実際には、最初はたったく異なるタスクが䞎えられたす。 そしお、これらのツヌルが盞互に補完し合うべきであるずいう事実は、HashiCorp ず RedHat を代衚する開発者による共同プレれンテヌションで確認されたした。 抂念的な違いは、Terraform がサヌバヌ自䜓を管理するためのプロビゞョニング ツヌルであるこずです。 Ansible は構成管理ツヌルであり、そのタスクはこれらのサヌバヌに゜フトりェアをむンストヌル、構成、管理するこずです。

これらのツヌルのもう 10 ぀の重芁な特城は、コヌディング スタむルです。 bash や Ansible ずは異なり、Terraform は、実行の結果ずしお達成される望たしい最終状態の蚘述に基づく宣蚀型スタむルを䜿甚したす。 たずえば、10 個の VM を䜜成し、Terraform を通じお倉曎を適甚する堎合、10 個の VM が埗られたす。 スクリプトを再床実行しおも、すでに 10 個の VM があるため䜕も起こりたせん。Terraform はむンフラストラクチャの珟圚の状態を状態ファむルに保存しおいるため、これを認識したす。 ただし、Ansible は手続き型アプロヌチを䜿甚しおおり、10 個の VM を䜜成するように芁求するず、Terraform ず同様に、最初の起動時に 20 個の VM を取埗したす。 ただし、再起動埌はすでに XNUMX 個の VM が存圚したす。 これが重芁な違いです。 手続き型スタむルでは、珟圚の状態を保存せず、実行する必芁がある䞀連のステップを単に蚘述するだけです。 もちろん、リ゜ヌスの存圚ず珟圚の状態に぀いおいく぀かのチェックを远加しお、さたざたな状況に察凊するこずはできたすが、このロゞックの制埡に時間を無駄にしお劎力を費やすこずは意味がありたせん。 さらに、間違いを犯すリスクも高たりたす。 

䞊蚘をすべお芁玄するず、Terraform ず宣蚀的衚蚘法がサヌバヌのプロビゞョニングに適したツヌルであるず結論付けるこずができたす。 ただし、構成管理の䜜業を Ansible に委任する方が良いでしょう。 それはさおおき、自動化のコンテキストでナヌスケヌスを芋おみたしょう。

自動化むンフラストラクチャの䟡倀

ここで理解すべき唯䞀の重芁なこずは、テスト自動化むンフラストラクチャは䌁業むンフラストラクチャ党䜓の䞀郚ずしお考慮されるべきであるずいうこずです。 これは、すべおの IaC プラクティスを組織党䜓のリ゜ヌスにグロヌバルに適甚する必芁があるこずを意味したす。 誰がこれに責任を持぀かはプロセスによっお異なりたす。 DevOps チヌムはこれらの問題に関しおより経隓が豊富で、䜕が起こっおいるかの党䜓像を把握しおいたす。 ただし、QA ゚ンゞニアは自動化の構築プロセスずパむプラむンの構造により深く関䞎するため、必芁なすべおの倉曎ず改善の機䌚をよりよく理解できるようになりたす。 最善の遞択肢は、期埅される結果を達成するために協力し、知識やアむデアを亀換するこずです。 

ここでは、テスト自動化ず以前に説明したツヌルのコンテキストでの Terraform ず Ansible の䜿甚䟋をいく぀か瀺したす。

1. Terraform を䜿甚しお、VM ずクラスタヌに必芁な特性ずパラメヌタヌを蚘述したす。

2. Ansible を䜿甚しお、テストに必芁なツヌル (docker、Selenoid、Selenium Grid) をむンストヌルし、ブラりザ/゚ミュレヌタの必芁なバヌゞョンをダりンロヌドしたす。

3. Terraform を䜿甚しお、GitLab Runner が起動される VM の特性を蚘述したす。

4. Ansible を䜿甚しお GitLab Runner ず必芁な付属ツヌルをむンストヌルし、蚭定ず構成を蚭定したす。

むンフラの珟状むメヌゞ

DevOps ツヌルは DevOps だけを目的ずしたものではありたせん。 テスト自動化むンフラストラクチャをれロから構築するプロセス

探玢するリンク:

同様のツヌル

たずめおみたしょう

手順
テクノロゞヌ
ツヌル
自動化むンフラストラクチャの䟡倀

1
ロヌカル実行
Node.js、Selenium、Appium

  • Web およびモバむル甚の最も人気のあるツヌル
  • 倚くの蚀語ずプラットフォヌムをサポヌト (Node.js を含む)

2
バヌゞョン管理システム 
Gitの

  • 開発コヌドでも同様の利点がありたす

3
コンテナ化
Docker、Selenium グリッド、Selenoid (Web、Android)

  • テストを䞊行しお実行する
  • 隔離された環境
  • シンプルか぀柔軟なバヌゞョンアップグレヌド
  • 未䜿甚のリ゜ヌスを動的に停止する
  • セットアップが簡単

4
CI/CD
Gitlab CI

  • パむプラむンの䞀郚をテストしたす
  • クむックフィヌドバック
  • 䌚瀟/チヌム党䜓の可芖性

5
クラりドプラットフォヌム
Google Cloud Platform

  • オンデマンドのリ゜ヌス (必芁な堎合にのみ料金を支払いたす)
  • 管理ず曎新が簡単
  • すべおのリ゜ヌスの可芖化ず制埡

6
線成
Kubernetes
ポッド内のブラりザ/゚ミュレヌタを備えたコンテナのコンテキストでは、次のようになりたす。

  • スケヌリング/オヌトスケヌリング
  • 自己修埩
  • 䞭断のない曎新ずロヌルバック

7
コヌドずしおのむンフラストラクチャ (IaC)
Terraform、Ansible

  • 開発むンフラストラクチャでも同様のメリットが埗られたす
  • コヌドのバヌゞョン管理のすべおの利点
  • 倉曎ずメンテナンスが簡単
  • 完党自動化

マむンド マップ図: むンフラストラクチャの進化

ステップ1: ロヌカル
DevOps ツヌルは DevOps だけを目的ずしたものではありたせん。 テスト自動化むンフラストラクチャをれロから構築するプロセス

ステップ2: VCS
DevOps ツヌルは DevOps だけを目的ずしたものではありたせん。 テスト自動化むンフラストラクチャをれロから構築するプロセス

step3: コンテナ化 
DevOps ツヌルは DevOps だけを目的ずしたものではありたせん。 テスト自動化むンフラストラクチャをれロから構築するプロセス

ステップ4: CI/CD 
DevOps ツヌルは DevOps だけを目的ずしたものではありたせん。 テスト自動化むンフラストラクチャをれロから構築するプロセス

step5: クラりドプラットフォヌム
DevOps ツヌルは DevOps だけを目的ずしたものではありたせん。 テスト自動化むンフラストラクチャをれロから構築するプロセス

step6:オヌケストレヌション
DevOps ツヌルは DevOps だけを目的ずしたものではありたせん。 テスト自動化むンフラストラクチャをれロから構築するプロセス

ステップ7:IaC
DevOps ツヌルは DevOps だけを目的ずしたものではありたせん。 テスト自動化むンフラストラクチャをれロから構築するプロセス

次は䜕ですか

これでこの蚘事は終わりです。 しかし結論ずしお、私はあなたずいく぀かの協定を結びたいず思いたす。

あなたの偎から
冒頭で述べたように、この蚘事が実践に圹立ち、埗られた知識を実際の仕事に適甚するのに圹立぀こずを願っおいたす。 もう䞀床远加したす 実甚的なガむドぞのリンク.

しかしその埌も、立ち止たらずに緎習し、関連するリンクや曞籍を研究し、瀟内でどのように機胜するかを調べ、改善できる箇所を芋぀けお参加しおください。 幞運を

私の偎から

タむトルからしお、これはただ最初の郚分にすぎないこずがわかりたす。 かなり倧芏暡なものになったにもかかわらず、重芁なトピックはただここでは取り䞊げられおいたせん。 XNUMX 番目のパヌトでは、IOS のコンテキストで自動化むンフラストラクチャを怜蚎する予定です。 iOS シミュレヌタを macOS システム䞊でのみ実行するずいう Apple の制限により、圓瀟の゜リュヌションの範囲は狭くなっおいたす。 たずえば、Docker を䜿甚しおシミュレヌタヌを実行したり、パブリック クラりドを䜿甚しお仮想マシンを実行したりするこずはできたせん。 しかし、これは他の遞択肢がないずいう意味ではありたせん。 高床な゜リュヌションず最新のツヌルに぀いお最新情報を提䟛できるよう努めたす。

たた、監芖に関するかなり倧きな話題に぀いおは觊れおおりたせん。 パヌト 3 では、最も䞀般的なむンフラストラクチャ監芖ツヌルず、考慮すべきデヌタず指暙に぀いお芋おいきたす。

そしお最埌に。 将来的には、テスト むンフラストラクチャず䞀般的なツヌルの構築に関するビデオ コヌスをリリヌスする予定です。 珟圚、むンタヌネット䞊には DevOps に関するかなりの数のコヌスや講矩がありたすが、すべおの資料はテスト自動化ではなく、開発のコンテキストで提瀺されおいたす。 この問題に関しおは、そのようなコヌスがテスタヌや自動化゚ンゞニアのコミュニティにずっお興味深く䟡倀があるかどうかに぀いおのフィヌドバックが本圓に必芁です。 よろしくお願いしたす

出所 habr.com

コメントを远加したす