ソフトウェア開発の変化が増すほど、テストの課題は変わらない

ジョニー・シュタイナー(プロダクトマーケティングマネージャー)

 

2008年のリメイク版『地球が静止する日』で、バーンハート教授とクラトゥが議論する場面で、バーンハート教授は「他に選択肢があるはずだ。君には、この問題を解決できる技術があるはずだ」と問いかける。クラトゥは軽々しくこう答える。「君の問題は技術ではない。問題は君自身だ。君には変わる意志が欠けている」

まるで脚本家のデイヴィッド・スカルパとエドマンド・H・ノースが、最近の顧客とのミーティングに同席してくれたかのようでした。企業が急速なデジタル変革を遂げている今、テクノロジーで課題解決を目指す開発・テストの専門家から、何度も声をかけられました。彼らは私たちの業務内容を尋ね、私は決まって、テストプロセスの成熟度について質問します。「お客様の現状に合わせて対応いたします」と、私は自信を持って説明します。

ツールを手に入れてデジタルトランスフォーメーションを実現する、というシンプルな選択肢のように思えます。しかし、実際には、ビジネスの変革を実現するには、ピカピカの新しいツールを購入するだけでは不十分です。

時代とともに進化

1980年代のパーソナルコンピューティングの台頭は、個人の生産性と接続性を高めました。90年代のインターネット革命は、世界中の人々と企業をさらに結びつけました。2000年代に入ると、eコマースが急速に普及し、モバイルデバイスが登場し始めました。今日では、データとクラウドコンピューティングの力を活用する中で、デジタルトランスフォーメーションは組織の進化に不可欠な要素となっています。企業は時代の変化に適応し、デジタル技術を活用してイノベーションを起こし、効率性を高め、イノベーションを推進し、顧客体験を向上させる必要があります。

ソフトウェア開発のテストとデリバリーは、この期間にますます動的になり、毎年徐々に進化しています。ソフトウェア開発手法の開発を推進しているのは、顧客満足度の向上を目指し、市場投入までの時間を短縮するというニーズです。アジャイルと DevOps 継続的な配信、頻繁なフィードバック、開発、テスト、運用チーム間の緊密な連携を重視するプラクティスが、ウォーターフォールなどの従来の方法論に取って代わりつつあります。

同様に、デジタルトランスフォーメーションは組織にとって重要な焦点となり、その結果、アジャイル計画から導入まで、ビジネスのあらゆる部分にテクノロジーが統合されるようになりました。しかし、ソフトウェア開発、テスト、デリバリーの進化に伴い、テクノロジーの進歩や手法が進化したにもかかわらず、根本的な課題は依然として変わっていないことを認識することが重要です。これらの根深い課題は世界中の組織に日々影響を及ぼしており、新しいものではないかもしれませんが、その軽減策には、SF小説のように独創的なテクノロジーが絡んでいる場合があります。

テストの課題は変わらない

一見矛盾しているように見えますが、事実です。世界中のテスト組織を悩ませている多くの課題は、8~10年前と変わりません。現代のソフトウェアシステムは複雑であり、開発とテストのサイクルタイムはますます短くなっています。組織のサイロ化により、関係者、開発者、テスト担当者間のコミュニケーションとコラボレーションが阻害される一方で、これらのチームは膨大な量のデータを生み出し続けています。こうしたデータとテスト環境の管理は課題であり、ニーズを真に満たすための十分なテストカバレッジとスケーラビリティを確保することと同じくらい重要です。だからこそ、時代への適応が不可欠になります。しかし、これから見ていくように、時代は皆さんが想像するほど大きくは変わっていません。

テストの課題

テスト自動化

ここでの課題は、継続的テスト環境の自動化には、自動化フレームワークの開発と維持に熟練したリソースが必要となることです。残念ながら、熟練したQAおよびテスト専門家の世界的な不足により、この課題は依然として最優先事項となっています。テスト自動化の課題には、他にも以下のような点が内在しています。

  • 性格 – テスト自動化には、プログラミング、スクリプト言語、そしてテスト自動化フレームワークに精通した実務者が求められます。これらのスキルは、組織のニーズに合わせたフレームワークの設計、開発、保守に活かされます。
  • 教室を超える – チームのスキルは重要ですが、最新のテクノロジー、ツール、ベストプラクティスに合わせてスキルをレベルアップさせることも同様に重要です。チームが自動テストを最大限に活用するには、継続的な学習が不可欠です。
  • 拡張性 – ソフトウェアが進化するにつれ、テストもそれに合わせて進化する必要があります。更新された自動化スクリプトは、Webアプリケーションやモバイルアプリケーションの変更をすべてサポートする必要があります。

フレームワーク自体も、アプリケーションの複雑性の増大に合わせて拡張する必要があります。

環境管理

ここでの課題は、開発者とテスターが複数の環境にアクセスし、コードが様々なシナリオで動作することを確認しなければならないことです。さらに問題を悪化させているのは、Webアプリとモバイルアプリの複雑さが増し、これらの環境の管理がさらに困難になっていることです。この課題を詳しく見ていくと、チームは次のような問題に苦労していることがわかります。

  • アクセス – 開発者とテスターは、コード検証のために開発環境、ステージング環境、本番環境にアクセスする必要があります。これらの環境はそれぞれ独自の構成、データベース、サードパーティとの連携を備えている可能性があります。
  • 複雑 – Webアプリやモバイルアプリには、それぞれ独自の依存関係と構成を持つ複数のコンポーネントやサービスが含まれることがよくあります。すべてのコンポーネントが接続され、利用可能であり、各環境で構成されている状態を維持することは、これまで以上に重要です。
  • Rescale データ – テストで生成されたデータの管理は膨大な作業です。データは保護されつつ、組織全体で同期されなければなりません。環境間でのデータ移行に対応しながら、データの依存関係と一貫性を管理するには、細心の注意と労力が必要です。

テストデータ

ここでの課題はシンプルです。テストは大量のデータを生成します。生成されたデータは、実用的なデータへと変換するために管理・分析する必要があります。この点について、より詳細な点をいくつかご紹介します。

  • リアリズム – テストデータは、正確性を確保するために、実際のシナリオを模倣する必要があります。多様なデータセットを持つことは重要ですが、複雑で時間がかかります。欠陥を効果的に発見するためには、テストデータは本番環境を可能な限り正確に再現する必要があります。
  • セキュリティ – テストデータには機密情報が含まれることがよくあります。これには個人を特定できるデータや独自のビジネスデータが含まれます。プライバシーの確保と、世界的な規制への準拠が重要です。
  • 実用性 – 継続的な自動テストによって生成されるデータは、問題の特定と結果の追跡に役立つ形で提示する必要があります。データは整理・構造化され、結果の最適な分析を可能にする必要があります。

素早いフィードバック

あらゆる組織にとってこれは必要なことですが、依然として見過ごされがちです。重要なのは、開発者が迅速に欠陥を特定し、対処し、開発・テストプロセスの崩壊を防ぐことです。この課題に最も関連しているのは、以下の点です。

  • 識別 – 欠陥は開発およびテストプロセスのできるだけ早い段階で発見する必要があります。欠陥の軽減に時間がかかるほど、修正に必要なコストと時間の面で軽減が困難になります。
  • 解像度 – 欠陥が発見されたら、すぐに軽減する必要があります。これを放置するとボトルネックが発生し、プロセスに悪影響を及ぼします。さらに課題となるのは、開発者とテスターが欠陥を効率的に調査・修正するために必要なツール、リソース、専門知識です。
  • レポート作成 – 結局のところ、それはコミュニケーションです。テスターは欠陥を報告し、開発者に可能な限り多くの情報を提供する必要があります。開発者は、テスターの発見を理解し、優先順位を付けることで、迅速に欠陥を軽減する必要があります。

文化の変化

これまでの課題は本質的に何年も変わっていませんが、これは最近追加された最新の課題かもしれません。企業文化を変えるには、サイロを打破し、コラボレーションを強化し、開発アプローチをより反復的なものに変える必要があります。この課題に最も関連性の高いものは次のとおりです。

  • サイロ – 継続的テストのプラクティスが明確に定義されている組織であっても、チームは依然としてサイロ化しています。開発者、テスター、QA担当者はそれぞれ個別に作業し、共有されているプロセスは停滞しています。こうしたサイロ化を打破するには、責任と作業を共有し、コミュニケーションを改善する必要があります。
  • コミュニケーション – そういえば、要件定義、品質目標の設定、そして取り組みのより良い調整には、より良いコラボレーションとコミュニケーションが不可欠です。フィードバックや知識の共有も同様に重要です。
  • サポート – これは経営陣の強力なサポートとリーダーシップから生まれなければなりません。チームリーダーは、継続的テストの導入を推進するとともに、チームが前進するために必要なリソース、ツール、ノウハウを提供する必要があります。

課題の克服

テスト自動化の課題は、自動化リソースのトレーニングと改善への組織的な投資によって解決されます。しかし、使いやすさ、保守性、拡張性を高める自動化ツールとテクノロジーを活用することは、良いスタートと言えるでしょう。

テスト環境の管理において必要なのは、効果的な環境管理の実践です。バージョン管理と変更管理の実践を改善することで、すべての環境における一貫性を確保できます。コミュニケーションについては後ほど詳しく説明しますが、開発、テスト、運用の各チームがプロセスを効率化できるという点で、環境管理の文脈においてコミュニケーションは特に重要です。

これらのプロセスと環境は膨大な量のデータを生成するため、テストデータの課題に直結します。データ管理ツールは、データ生成、データのバージョン管理、データ同期などの機能を提供し、この点で役立ちます。しかし、テストデータ管理のガイドラインは明確で、プロセスは明確に定義されていなければなりません。

これらのデータは迅速なフィードバックという形で提供され、コラボレーションとフィードバックを促進するアジャイル環境で作業する場合、より容易に理解できます。適切なツールを活用して欠陥を発見し、解決することで、フィードバックループの速度を向上させることができます。

定期的な会議やワークショップを通じてコラボレーションを促進し、知識共有と学習の取り組みを促進する部門横断的なチームを編成することで、組織全体の文化変革につながります。もちろん、経営陣は模範を示す必要がありますが、ビジネスユーザーにテスト自動化の力を与えるツールの存在は、まさにその方向への大きな前進です。企業文化の変革には時間、粘り強さ、そして明確なコミュニケーションが必要ですが、多くの点で成果をもたらすプロセスです。

ペイオフ

世界中でテストプロセスがいかに未成熟であるかを目の当たりにし、衝撃を受けました。多くの大規模組織は依然として継続的テストの導入を必要としており、レガシープロセスと手作業に縛られています。さらに驚くべきは、自動化されたテスト手法とプロセスを導入している成熟した組織内でさえ、テストツールがいかに断片化されているかということです。これは、業界のスピードと、ツールとプロセスを統合し、サイロを打破し、ステークホルダー、開発者、テストチーム間のコミュニケーションを促進するような文化変革を実行できない一部のリーダーたちの頑固さ​​を物語っています。

ビジネスリーダーは、開発とテストのプロセスにもっと積極的に関与する必要があります。責任や権限を委譲するのではなく、現場に深く入り込み、チームの視点を理解する能力が必要です。このブログ記事ではツールについて議論しましたが、これが鍵となるかもしれません。まず、 分析ツール 組織内の全員が開発とテスト実行の全体像を把握できるようにすることで、すべてのチームが互いの作業を理解するのに役立ちます。また、AIを活用した数百ものインサイトと分析は、よりスマートな意思決定に役立ちます。最後に、 ローコードツール ビジネス ユーザーが自動テストを作成できるようにすると、サイロを解体し、コミュニケーションを促進し、永続的で前向きな組織の変化を生み出すのに役立ちます。

お勧めの関連ガジェット