apeescape2.com
  • メイン
  • アジャイル
  • エンジニアリング管理
  • 設計プロセス
  • バックエンド
アジャイル

より良いアジャイルテストへの道

毎年 世界品質レポート キャップジェミニによって作成された調査回答者の42%が、アジャイル開発にテストを適用する際の課題として「専門的なテストの専門知識の欠如」を挙げていることを示しています。の出現しながら アジャイル ソフトウェア開発の反復速度が向上しました。場合によっては、品質が犠牲になります。

激しい競争により、チームは常に新製品のアップデートを提供するように圧力をかけられていますが、これには、テストへの関心の低下など、独自のコストが伴う場合があります。ロブ・メイソンのように、さらに進んでそれを主張する人もいます アジャイルはソフトウェアテストを殺している 。最近、Facebookは、品質を犠牲にする誘惑を解決するために、モットーを「速く動き、物事を壊す」から「安定したインフラストラクチャで速く動く」に変更しました。

では、どうすればテストをアジャイルソフトウェア開発の新しい世界にうまく統合できるでしょうか。アジャイルテスト。



従来のテストは非常に面倒で、多くのドキュメントに依存しています。アジャイルテストは、アジャイルソフトウェア開発の原則を模倣するテストプロセスへのアプローチです。

Cプログラミングを学ぶのに最適なウェブサイト
  • テストははるかに頻繁に行われます、
  • テストは、ドキュメントに依存するのではなく、チームメンバーのコラボレーションに依存します。
  • 一部のテスト活動は、テスターだけでなく開発者によっても行われます。

過去7年間で、私は多くのチームをアジャイルテストに移行し、テスターと協力して、プロセスが新しい方法論に適合するように支援してきました。この記事では、より良いアジャイルテストへの道のりで学んだ最も影響力のあるヒントのいくつかを共有します。アジャイルプラクティス内で速度と品質の間に摩擦があるのは当然ですが、この記事では、敏捷性を損なうことなくテストの品質を向上させるために使用できるいくつかの手法について説明します。ここで概説する提案のほとんどはチームの関与を必要とするため、開発者とテスターの両方が計画に参加することは有益です。

リリーステストサイクルプロセスを形式化する

テストに関する問題の1つは、リリーステストサイクルがないこと、リリーススケジュールがないこと、または不規則なテスト要求があることです。オンデマンドのテストリクエストは、特にテスターが複数のプロジェクトを処理している場合、QAプロセスを困難にします。

多くのチームは、各スプリントの後に1つのビルドのみを実行します。これは、アジャイルプロジェクトには理想的ではありません。週に1回のリリースに移行することは有益であり、週に複数のビルドに徐々に移行します。理想的には、開発ビルドとテストは毎日行う必要があります。つまり、開発者はコードをリポジトリに毎日プッシュし、ビルドは特定の時間に実行されるようにスケジュールされます。これをさらに一歩進めるために、開発者は新しいコードをオンデマンドでデプロイできるようになります。これを実装するために、チームは継続的インテグレーションおよび継続的デプロイメント(CI / CD)プロセスを採用できます。 CI / CDは、メジャーリリースの日にビルドが失敗する可能性を制限します。

継続的インテグレーションと継続的デリバリーのサイクル

CI / CDとテスト自動化を組み合わせると、重大なバグを早期に検出できるため、開発者は、スケジュールされたクライアントのリリース前に重大なバグを修正するための十分な時間を確保できます。アジャイルの原則の1つは、動作するソフトウェアが進歩の主要な尺度であると述べています。このコンテキストでは、正式なリリースサイクルにより、テストプロセスがより機敏になります。

導入ツールでテスターに​​力を与える

テストの一般的な摩擦点の1つは、コードをステージング環境にデプロイすることです。このプロセスは、チームが影響を与えることができない可能性のある技術インフラストラクチャに依存します。ただし、ある程度の柔軟性がある場合は、テスターやプロジェクトマネージャーなどの技術者以外の人向けにツールを作成して、更新されたコードベースをデプロイして自分でテストできるようにすることができます。

たとえば、私のチームの1つでは、バージョン管理にGitを使用し、通信にSlackを使用しました。開発者は、Git、デプロイメントスクリプト、および1つの仮想マシンにアクセスできるSlackbotを作成しました。テスターは、GitHubまたはJiraから取得したブランチ名でボットにpingを実行し、ステージング環境にデプロイすることができました。

この設定により、開発者は多くの時間を解放できると同時に、テスターが開発者にテスト用のブランチをデプロイするように依頼する必要がある場合の通信の無駄と絶え間ない中断を減らすことができます。

プライベートエクイティファームはどのように資本を調達するか

TDDとATDDを試す

テスト駆動開発 (TDD)は、品質を重視するソフトウェア開発プロセスの一種です。従来、開発者はコードを記述し、誰かがそれをテストしてバグが見つかったかどうかを報告していました。 TDDでは、開発者は、ユーザーストーリーを完成させるコードを作成する前に、最初に単体テストを作成します。開発者がテストに合格するための最小限のコードを記述するまで、テストは最初は失敗します。その後、チームの品質要件を満たすようにコードがリファクタリングされます。

テスト駆動開発の段階

受け入れテスト駆動開発 (ATDD)はTDDと同様のロジックに従いますが、名前が示すように、受け入れテストに重点を置いています。この場合、受け入れテストは、開発者、テスター、およびリクエスター(クライアント、製品所有者、ビジネスアナリストなど)と協力して開発前に作成されます。これらのテストは、コードを作成する前に、チームの全員がクライアントの要件を理解するのに役立ちます。

TDDやATDDなどの手法は、テスト手順を開発ライフサイクルの初期段階に移行することで、テストをより機敏にします。早い段階でテストシナリオを作成する場合、開発者は要件を十分に理解する必要があります。これにより、不要なコードの作成が最小限に抑えられ、開発サイクルの開始時に製品の不確実性も解決されます。製品の質問や競合が後の段階でのみ表面化すると、開発時間とコストが増加します。

不動産鑑定における回帰分析

タスクカードの動きを追跡して非効率性を発見する

私のチームの1つには、特に小さな機能を備えた非常に高速な開発者がいました。彼はコードレビュー中に多くのコメントを得るでしょうが、私たちのスクラムマスターと私はそれを経験不足として書き留めました。しかし、彼がより複雑な機能のコーディングを開始すると、問題がより明らかになりました。彼は、完全に準備が整う前に、コードをテストに渡すパターンを開発していました。このパターンは通常、開発プロセスに透明性がない場合に発生します。たとえば、さまざまな人が特定のタスクに費やす時間が明確でない場合などです。

時々、開発者は機能をできるだけ早く出し、品質をテスターに​​「アウトソーシング」しようと急いで作業をします。このような設定では、ボトルネックがスプリントのさらに下に移動するだけです。品質保証(QA)は、チームが持つ最も重要なセーフティネットですが、QAの存在により、開発者は品質の考慮を放棄することができます。

多くの現代 プロジェクト管理ツール スクラムまたはかんばんボード上のタスクカードの動きを追跡する機能があります。私たちの場合、Jiraを使用して、問題の開発者のタスクで何が起こったかを分析し、チームの他の開発者と比較しました。私たちはそれを発見しました:

  • 彼のタスクは、取締役会のテスト列でほぼ2倍の時間を費やしました。
  • 彼のタスクは、2回目または3回目の修正のためにQAから返されることがはるかに多いでしょう。

そのため、テスターは自分のタスクにより多くの時間を費やす必要があるだけでなく、それを複数回行う必要もありました。私たちの不透明なプロセスにより、開発者は本当に速いように見えました。しかし、テスト時間を考慮に入れると、それは誤りであることがわかりました。ユーザーストーリーを前後に移動することは、明らかに無駄のないアプローチではありません。

これを解決するために、私たちはこの開発者と正直に話し合うことから始めました。私たちの場合、彼は自分の作業パターンがどれほど有害であるかを単に認識していませんでした。それは、品質要件が低く、テスタープールが大きい前の会社で働くことに慣れた方法でした。私たちの会話の後、そして私たちのスクラムマスターとのいくつかのペアプログラミングセッションの助けを借りて、彼は徐々に開発へのより高品質のアプローチに移行しました。彼の高速なコーディング能力により、彼は依然として高性能でしたが、QAプロセスの「無駄」が取り除かれたため、テストプロセス全体がはるかに機敏になりました。

QAチームスキルセットにテスト自動化を追加する

非アジャイルプロジェクトでのテストには、テスト分析、テスト設計、テスト実行などのアクティビティが含まれます。これらのアクティビティは順次実行され、広範なドキュメントが必要です。企業がアジャイルに移行する場合、多くの場合、移行は主に開発者に焦点を当て、テスターに​​はあまり焦点を当てません。彼らは広範なドキュメント(従来のテストの柱)の作成をやめますが、手動テストを実行し続けます。ただし、手動テストは低速であり、通常、アジャイルの高速フィードバックループに対処できません。

偽のクレジットカード番号2017

テスト自動化は、この問題に対する一般的な解決策です。自動化されたテストにより、開発者やテスターが他のタスクに集中しながらテストコードをバックグラウンドで実行できるため、新機能や小さな機能のテストがはるかに簡単になります。さらに、テストは自動的に実行されるため、手動のテスト作業と比較して、テストの対象範囲がはるかに大きくなる可能性があります。

自動テストは、テスト対象のコードベースに類似したソフトウェアコードです。これは、自動テストを作成する人々が成功するには技術的なスキルが必要になることを意味します。さまざまなチーム間で自動テストを実装する方法には、さまざまなバリエーションがあります。開発者自身がテスターの役割を引き受け、新しい機能ごとにテストコードベースを増やすことがあります。他のチームでは、手動テスターがテスト自動化ツールの使用方法を学ぶか、経験豊富な技術テスターを雇ってテストプロセスを自動化します。チームがどちらの道をたどっても、自動化ははるかに機敏なテストにつながります。

テストの優先順位を管理する

非アジャイルソフトウェア開発では、テスターは通常、プロジェクトごとに割り当てられます。ただし、アジャイルとスクラムの出現により、同じQA専門家が複数のプロジェクトにまたがって業務を行うことが一般的になりました。この重複する責任により、スケジュールに矛盾が生じ、テスターが別のスプリント計画セッションよりもあるチームのリリーステストを優先すると、テスターが重要な式典を見逃す可能性があります。

アジャイルセレモニーにテスターを参加させます。

テスターが複数のプロジェクトに取り組むことがある理由は明らかです。フルタイムの役割を果たすためにテストするタスクの流れが一定することはめったにありません。したがって、チームに専用のテストリソースを割り当てるように利害関係者を説得するのは難しいかもしれません。ただし、テストアクティビティに従事していないときに、テスターがダウンタイムを埋めるために実行できる合理的なタスクがいくつかあります。

クライアントサポート

考えられる設定の1つは、テスターに​​スプリントのダウンタイムを費やしてクライアントサポートチームを支援することです。テスターは、クライアントが抱える問題に常に直面することで、ユーザーエクスペリエンスとその改善方法をよりよく理解できます。彼らは計画セッション中に議論に貢献することができます。さらに、クライアントが実際にソフトウェアをどのように使用しているかをよく理解しているため、テスト活動中はより注意深くなります。

製品管理

テスターの優先順位を管理するためのもう1つの手法は、基本的に、手動テストを実行するジュニア製品マネージャーにすることです。これは、テスターの非番時間を埋めるための実行可能なソリューションでもあります。これは、ジュニアプロダクトマネージャーがユーザーストーリーの要件の作成に多くの時間を費やしているため、ほとんどのタスクについて深い知識を持っているためです。

テスト自動化

以前に説明したように、手動テストは自動化より劣っていることがよくあります。このコンテキストでは、自動化の推進は、テスターがチームに完全に注意を向け、余暇を利用して次のようなテスト自動化ツールを操作することと組み合わせることができます。 セレン 。

不和ボットの書き方

概要:品質アジャイルテスト

テストをより機敏にすることは、多くのソフトウェア開発チームが現在直面している必然性です。ただし、「できるだけ早くテストする」という考え方を採用しても、品質が損なわれることはありません。アジャイルへの移行にはアジャイルテストへの移行が含まれることが不可欠であり、これを実現する方法はいくつかあります。

  • リリーステストサイクルプロセスを形式化します。
  • テスターに​​デプロイメントツールを提供します。
  • テスト駆動開発と受け入れテスト駆動開発を試してみてください。
  • タスクカードの動きを追跡して、非効率性を発見します。
  • QAチームのスキルセットにテスト自動化を追加します。
  • テスターの優先順位を管理します。

毎年、ソフトウェアは向上し、ユーザーの期待は高まっています。さらに、クライアントがGoogle、Apple、Facebookなどのトップソフトウェアブランドの高品質な製品に慣れるにつれて、これらの期待は他のソフトウェア製品にも移ります。したがって、品質の重視は、今後数年間でさらに重要になる可能性があります。これらのテストと全体的な開発プロセスの改善により、テストの俊敏性が高まり、高レベルの製品品質が保証されます。

基本を理解する

アジャイルテストレベルとは何ですか?

アジャイルで使用できるテストレベルはいくつかあります。ユニット、統合、システム、受け入れです。

アジャイルテストとは何ですか?なぜそれが重要なのですか?

アジャイルテストは、高度に文書化されたウォーターフォールテスト手順から、より柔軟で応答性の高いテストへの移行です。アジャイルテストは、アジャイルソフトウェア開発を包み込み、アジャイルチームがより短い時間枠で小さな製品増分を提供するのをサポートします。

アジャイルでのテスト計画はありますか?

テスト計画はアジャイルで使用できますが、それは一般的なガイドであり、作成に多くの時間がかかる厳格で不変のドキュメントではありません。アジャイルは、包括的なドキュメントよりも実用的なソフトウェアを推進しています。

アジャイルテスト戦略とは何ですか?

アジャイルテスト戦略では、アジャイルチームでソフトウェアをテストする方法を説明する必要があります。

製品バックログ:ステップバイステップガイド

製品ライフサイクル

製品バックログ:ステップバイステップガイド
デザイナーのための色彩理論–クラッシュコース(インフォグラフィック付き)

デザイナーのための色彩理論–クラッシュコース(インフォグラフィック付き)

Uiデザイン

人気の投稿
Apache Cordovaチュートリアル:Cordovaを使用したモバイルアプリケーションの開発
Apache Cordovaチュートリアル:Cordovaを使用したモバイルアプリケーションの開発
UXの未来は私たちの人間性です
UXの未来は私たちの人間性です
UXスケッチについて知っておくべきことすべて
UXスケッチについて知っておくべきことすべて
AWS Lambdaを使用したサービス指向アーキテクチャ:ステップバイステップのチュートリアル
AWS Lambdaを使用したサービス指向アーキテクチャ:ステップバイステップのチュートリアル
効率的なReactコンポーネント:Reactパフォーマンスを最適化するためのガイド
効率的なReactコンポーネント:Reactパフォーマンスを最適化するためのガイド
 
別の次元、新しい習得–アイソメトリックイラストレーションチュートリアル
別の次元、新しい習得–アイソメトリックイラストレーションチュートリアル
コミュニケーション担当副社長
コミュニケーション担当副社長
コーポレートベンチャーキャピタル:悪魔...それとも革新的な成長チャネル?
コーポレートベンチャーキャピタル:悪魔...それとも革新的な成長チャネル?
オンラインデート業界:愛のビジネス
オンラインデート業界:愛のビジネス
将来を予測する方法:不確実性の影響を軽減する
将来を予測する方法:不確実性の影響を軽減する
人気の投稿
  • 処理(プログラミング言語)
  • モバイルデバイス向けのレスポンシブウェブデザイン
  • 音楽業界の価値はいくらですか
  • sdrとの関係
  • すべてのデバイスのレスポンシブメディアクエリ
  • ScalaとJavaの違い
カテゴリー
製品ライフサイクル プロジェクト管理 製品の担当者とチーム 分散チーム モバイルデザイン 計画と予測 技術 革新 収益と成長 ヒントとツール

© 2021 | 全著作権所有

apeescape2.com