テストという概念には、常に愛憎関係があるように感じます。何を構築しているかにかかわらず、テストを行うことで、顧客が同じ発見を報告するのを防ぐことができるという利点があることは間違いありません。それが、関係の愛の部分です。
最も嫌なのは、プロジェクトのタイムラインによってテストの優先順位が下がってしまうことです。多くの場合、テストはバックログのウィッシュリスト項目となり、現在のスプリントではほとんど表面化しません。これでは、顧客が予期しない結果について連絡してくることがほぼ確実です。
ソフトウェア開発ライフサイクル (SDLC) が成熟するにつれて、テストはより容易になり、開発者は検証対象の側面を完全にカバーする単体テストを作成できるようになりました。ChatGPT または GitHub Co-Pilot の使用は、このような単体テストを自動生成できるレベルまで成熟しています。継続的インテグレーション (CI) ツール ソリューションは、プル リクエスト (PR) をマージする前に高いレベルのコード カバレッジを強制するように改善されました。これにより、チームは開発をシフト レフトすることができ、開発フェーズ中に問題に対処することを強制し、その過程で機能のコストを削減できます。
このアプローチは従来の API や Web フレームワークでは非常にうまく機能しましたが、モバイル アプリケーションのテストでは、多くの場合、チームが手動でテストを実行し、管理できる限り多くの異なるデバイス タイプにわたって公開された手順のリストから実行する必要があります。
モバイル開発とテストでシフトレフトの概念を採用できる方法を特定できるかどうかを確認したいと考えました。
大まかに言えば、モバイル アプリケーション領域では、API や Web フレームワークが現在行っているのと同じ方法で機能や機能性をテストできる必要があります。つまり、物理デバイスやエミュレーターのインベントリを使用して手動でテストを実行する作業から脱却することを意味します。
モバイル テストの理想的な状態は、ユーザー アクティビティに重点を置いた難解なテストの作成を回避するために UI 主導型になります。このアプローチにより、ツールを社内の消費者や、ビジョンを現実として検証したい製品所有者に拡張できます。
従来の単体テストや統合テストと同様に、モジュールを導入する機能により、モバイル アプリケーションの小さな側面を検証し、より大きなフローの構成要素として使用することができます。これにより、チームは「ドライ」(同じことを繰り返さない) 状態を維持し、重複した作業を回避できます。
最後に、これらのテストは、グラフィカル UI によって実行されるにもかかわらず、CI/CD パイプラインの一部になることができる必要があります。
この理想的な状態では、モバイル ソフトウェア エンジニアはモバイル開発とテストを効果的にシフトレフトできます。
モバイル テストで「シフト レフト」と言うとき、何を意味しているかを明確にしておくとよいでしょう。
Wikipedia では、テストのためのシフトレフトを以下のように定義しています。
「シフトレフトテストは、ソフトウェアテストとシステムテストに対するアプローチであり、ライフサイクルの早い段階でテストを実行します(つまり、プロジェクトタイムラインを左に移動します)。これは、「早期に頻繁にテストする」という格言の前半にあたります。これは、2001 年に Larry Smithによって考案されました。」
シフトレフトを採用するだけで、開発フェーズ中に欠陥を特定できます。これは、ソースに焦点を当てているエンジニアの記憶に機能が新鮮なうちに問題に対処できるため重要です。
シフトレフトを採用するメリットは次のとおりです。
最終的に、検証され期待どおりに機能するソリューションが消費者に届いたときに、シフトレフトのコンセプトが競争上の優位性につながります。
昨年、私は「 Tricentis Testim を使用した顧客向けアプリの品質向上」という記事で、Tricentis Testim の使用について検討しました。GO ベースの RESTful API と Vue.js Web ベースのクライアントを使用して、Magic 8 Ball ソリューションを検証するのがいかに簡単かに感銘を受けました。Tricentis に、チームがモバイル テストにシフト レフトできるソリューションがあるかどうかを確認したかったのです。
なんと、 Toscaという製品があるのです。
Tosca 製品はコードレスのテスト生成機能を提供し、再利用および自動化できる小さなモジュールの作成を可能にします。これらのモジュールは、標準化された契約を採用しているため、必要な場所で接続できるレゴ ブロックと考えることができます。Tosca は、AI を活用して機能のモバイル テストを生成する機能を提供することで、従来の開発ライフサイクルに一歩近づきます。
Tosca は、Tricentis Mobile Agent を介して、学習に手間をかけずにオープンソースのAppiumプロジェクトのパワーも活用します。これにより、以前の記事で紹介したすべてのパワーを、モバイル開発のシフト レフトの旅に組み込むことができます。
その結果、Tosca を使用すると、実際の iPhone、Android、携帯電話、タブレット デバイスを保守したり所有したりすることなく、ネイティブ、ハイブリッド、Web モバイル アプリをテストできます。
Testim 製品と同様に、Tosca ソリューションは、CI/CD パイプラインの一部としてテストを実行する機能を提供し、シフトレフトの導入を強制できるようにします。
Tosca を使用すると、iOS または Android のスマートフォンで直接テストできるほか、Android Studio などの IDE で利用できるエミュレーターやシミュレーターを使用してテストすることもできます。Tosca を使用すると、アプリケーションをスキャンしてテスト ケースを作成できます。
Tosca がテスト ケースを作成したら、独自のテスト ケースを作成することもできます。
Tosca の利点の 1 つは、コードを書かずにテストを作成できることです。これは、ブラウザーの起動やフォームへの入力など、ほぼすべてのアクションをシミュレートできるモジュール ライブラリによって可能になります。
この例では、Tosca モバイル テスト ケースに 3 つのモジュールを使用しました。テスト対象は次のとおりです。
必要なのはサンプル入力を提供することだけであることに注目してください (スクリーンショットでは、上で強調表示されているステップ 3 に対してこれを行っています)。テストが完了すると、Tosca で診断レポートが届きます。
Tosca のような製品を活用することで、モバイル開発に重点を置くソフトウェア エンジニアは、モバイル テスト用に残されたものを活用して、チームに競争上の優位性を与えることができます。
読者の皆様は、私が次のようなミッション ステートメントに重点を置いてきたことを覚えていらっしゃるかもしれません。これは、あらゆる IT プロフェッショナルに当てはまると思います。
「知的財産の価値を高める機能や特性を提供することに時間を集中してください。他のすべてにはフレームワーク、製品、サービスを活用してください。」 - J. ベスター
最高の生産性を実現するために、モバイル開発に注力するソフトウェア エンジニアは、モバイル テストにシフト レフトを採用する必要があります。ただし、理想的な選択は、ソリューションを探す際に、関連する学習曲線とサポート可能性を考慮する必要があります。
Tosca 製品は、チームが追加のソース コードをサポートおよび保守することなくシフト レフト状態に到達できるようにすることで、私の個人的なミッション ステートメントに準拠しています。また、この製品では、エンジニア以外の人がテスト開発に参加できるため、チームは設計が期待どおりであることを保証できるという利点があります。
私は個人的に、シフト レフト アプローチを数年間採用してきましたが、プロセスに従うだけで欠陥を回避できるたびに、その経験に感謝しています。モバイル開発でもシフト レフトの概念を採用する時が来ています。
本当に素晴らしい一日をお過ごしください!