この記事はRaj Subrameyerによるゲスト投稿です。
この急速な技術進歩の時代、企業はソフトウェアをデリバリーするためのよりリーンでアジャイルなアプローチに目を向けています。そんなアジャイルアプローチのうち、ここ数年で広く普及したのがDevOpsです。
DevOpsは、必要なスキルとツールセットをすべて集約して開発プロセスを円滑化するというアプローチです。DevOpsは、企業の競争力を保つため、品質の高い製品をより速く顧客に届けることに重点を置きます。このアプローチの主要な目標は、品質はひとりひとりの責任だというマインドセットを根付かせることであり、開発者、テスター、運用チーム、ビジネスアナリストやその他のステークホルダーが単一のユニットとして機能することから始まります。
DevOpsへの移行過程で最も大きな課題の1つが、このアプローチにQAチームを組み込むことです。しかし、効果的にそれを成し遂げる方法があります。
以下は、DevOpsにテストを組み込むための5つのステップです。
1.QAチームの構造を変革する
DevOpsの重要な側面の1つが継続的テストです。アプリケーションのテストは、要件定義フェーズの開始とともに始まり、デプロイメントおよび運用監視フェーズまでずっと継続するべきです。これは、テストのシフトレフトという考え方にも一致します。DevOpsでは、継続的テストはひとりひとりの責任の一部になります。
このアプローチを円滑にするため、開発者、テスター、運用チームの間の垣根を取り払い、1つの技術チームとして作業できるようにします。チームは、問題をより早期に検出して手遅れになる前に修正するために、コミュニケーションをとり、コラボレートし、作業を最適化する必要があります。
QAチームメンバーの関心は、要件をテストし、欠陥の修正を確認することから、開発者と運用チームの間の連絡役として機能し、製品のリスクを軽減することにシフトしなければなりません。また、顧客がどのように製品と関わるかを考えるようにし、それに合わせて自分たちの作業を変える必要があります。QAチームはスケーラブルなデプロイメントを優先度の高い目標とし、環境を標準化し、自分たちのタスクが既存のCI/CDパイプラインの中に確実に位置づけられるようにします。
2.できるだけ自動化する
自動化は、DevOpsパイプラインのすべてを結合する接着剤のようなものです。ビルドに関するフィードバックをすばやく返すことができるよう、開発プロセスのすべてのステージで自動化されたテストを実施します。これには、単体テスト、デプロイメントテスト、インテグレーションテスト、スモークテスト、セキュリティテスト、パフォーマンステストなどが含まれるでしょう。テスターは、できるだけ早く自動化を開始し、いち早く欠陥を発見できるようにすることで、DevOpsプロセスにおいて不可欠の役割を果たします。
また、自動化が有効であるためには、複雑度が増すにつれて自動化をどのようにスケールできるかを重視する必要があります。製品に機能が追加されるにつれて、ますます多くのテストが必要になり、新規テストの作成と実行、メンテナンスのために、適切なハードウェア、ソフトウェア、そしてスキルを持った人材が必要になります。
テストスイートをモジュール化し、開発プロセスのさまざまなフェーズで、テストする必要がある機能に応じて実行するのはよい方法です。結果として、適切なテストを可能な限りすばやく実行し、即時フィードバックを得られるようになります。
3.適切なトレーニングとスキルの高い人材を確保する
DevOpsでは、テスターに求められる条件も大幅に変化します。単に自動化スクリプトを作成し、手動テストケースを実行し、テストケースが要件に対応していることを確認する以上のスキルが重視されます。
テスターは、デプロイメントをスケーラブルにする方法、安定した環境をセットアップし維持する方法、運用チームと協力してアプリケーションのパフォーマンスを監視する方法、開発者が単体テストを作成するのを支援する方法、さらに場合によっては、より早く機能を開発し、テストし、デプロイするために、アプリケーションコードを作成する方法を知っていなければなりません。このようなアプローチにおいては、QAチームのメンバーには、DevOpsパイプラインを効果的に管理するために使用されるツール、フレームワーク、テクノロジーに関してより多くの知識が求められます。
スキルの高い専門家の存在は、DevOpsへのQAチームの組み込みを成功させるために重要です。同時に、企業は既存の従業員に適切なトレーニングを提供し、知識を広げてDevOpsプロセスでもやっていけるようにするべきです。
4.高度な監視およびレポートの仕組みを利用する
DevOpsパイプラインでは、多数のツール、フレームワーク、テクノロジーが利用されます。
- バージョン管理システム(Git、Assemblaなど)
- CI ツール(Travis CI、Jenkinsなど)
- 単体テストツール(JUnit、Mocha、Jasmineなど)
- 仮想基盤サービス(AWS、Microsoft Azure、VMware vCloudなど)
- 静的解析セキュリティツール(Kiuwan、Coverityなど)
- セキュリティスキャナー(Netspaker、Acunetix、Wiresharkなど)
- 構成管理ツール(Puppet、Ansible、Salt、Chefなど)
- テスト管理ツール(TestRail、Jira、Xrayなど)
- テスト自動化ツール(Selenium、Appium、Water、Ranorex、Cypress、Espressoなど)
これらのツールはすべて、システムが常に最適なレベルで動作していることを確認するために監視・分析する必要がある大量のデータを収集します。通常、運用チームは開発者およびテスターと協力して、開発対象アプリケーションに監視および解析機能を組み込みます。テスターは、Splunk、Kibana、Graphite、Crashlyticsなどのツールを使用して、この作業を支援する場合があります。
5.プロセスとツールの可視性を高める
DevOpsの導入を成功させるには、互いの作業に対する可視性が必要です。チームメンバーは、ビルドのデプロイを成功させるために、自分の作業がどのように寄与しているかを常に意識する必要があります。
このような意識を醸成するのによいやり方は、チームの速度、記録された欠陥や修正された欠陥、実行されたテストの数、テストカバレッジ、その他重要なKPIなどのメトリクスを視覚的に表現するツールやダッシュボードを利用して、チーム全体の可視性を高めることです。そうすると、チームは開発プロセスで継続的なフィードバックを受け取ることになります。
すでにアジャイルを実践していても、DevOpsへの移行はたやすくはありません。移行過程でさまざまなボトルネックに直面するでしょう。しかし、チームが協力して一丸となって取り組めば、移行はずっと容易になり、DevOpsアプローチのメリットをすぐに感じられるかもしれません。DevOpsでアジャイルを補完する5つの方法についてもお読みください。
Raj Subrameyerは豊富な技術的バックグラウンドを持つ国際的な基調講演者、ライター、技術キャリアコーチです。自身のブログrajsubra.com/blog/では、読者がより良い人生を送るのに役立つニュース、リソース、最新情報を投稿しています。
(この記事は、開発元Gurock社の Blog 「5 Effective Steps to Align Testing with DevOps」2021年12月28日の翻訳記事です。)
関連する製品
テスト管理ツール TestRail
テストケースの管理やテスト結果の記録、チームでの情報共有など、Excelを使ったテスト管理の業務に限界を感じていませんか?TestRailはシンプルで使いやすいUIを提供し、テストにかかるさまざまな管理コストの削減に貢献します。
■ TestRailの特長 ■
- テストにさまざまな情報を関連づけて一元管理
- Webブラウザー上でテストケースを簡単に入力や編集可能
- テスト実施の準備と結果の共有が容易
- 進捗や比較などのレポートを提供
- 要件 / 課題管理ツールやテスト自動化ツールと連携
日本国内では、テスト管理にExcelを使っていたお客さまからの乗り換えが多く、Web上で完結するテスト管理を実現されています。
TestRail でテスト管理のお悩みを解決しませんか?