BDD-ファッショナブルなラッパーでの作業方法またはTDD?

テストによる開発への2つのアプローチは特に議論の余地があります。専門家でさえ、TDD(テスト駆動開発)とBDD(動作駆動開発)の方法論的な類似性のためにしばしば混乱します。 Alfa-Laboratoryの上級テスト自動化エンジニアであるYulia KovalevaとAnna Chernyshevaは、2つの一般的な方法の類似点と相違点、および会社で使用しているアプローチについて基本的なことを語っています。









Julia Kovaleva、Alfa LabのオートテストのシニアJava開発者

4年以上にわたる献身的なテストが、現在、CucumberとSelenideを使用してテスト自動化をスケーリングするための手順のライブラリを開発しています。



Anna Chernysheva、Alfa Labの自動テストのシニアJava開発者

彼女は大規模なeコマースプロジェクトに携わり、いくつかのBDDフレームワークの作成とサポートに参加し、エンジニアリングとDevOpsプラクティスの実装にも携わっています。



-TDDとBDDの主な違いは何ですか?



Anna Chernysheva :TDDとBDDの方法を理解することは会社によって異なります。アルファラボでのすべての仕組みについて説明します。 両方のアプローチの概念は似ており、最初のテストが実行されてから開発が開始されますが、その目的は完全に異なります。 TDDは、テストが開発者自身によって作成される場合、製品の技術的な実装レベルでのプログラミングとテストに関するものです。 BDDには、テスターまたはアナリストがユーザー定義のスクリプトを自然言語で記述します-そう言えば、ビジネスの言語で記述します。



-BDDは単なる流行語ですか、それともテストによる開発への根本的に新しいアプローチですか? それをTDDと区別するものは、テストを記述するために自然言語を使用していることですか?



Julia Kovaleva: BDDは本当に流行語ですが、誰もが正しく「調理」する方法を知っているわけではありません。 アルファ研究所では、問題解決に包括的にアプローチし、チーム全体の機能の多くの側面を完全に変更する必要がありました。これにより、テストプロセスのコストを大幅に削減できました。 テストシナリオをロシア語で説明できる人を雇う方が、たとえばJavaでこれらのテストを実装できる専門家を見つけるよりもはるかに簡単です。



BDDアプローチとエンジニアリング手法により、無関係な情報を含むレガシードキュメントを破棄し、その場で新しいドキュメントを受け取り、プロジェクトと一緒に保存することができました。これにより、アナリストやテスターをコードに近づけることができました。



-テスターがBDDシナリオの開発に関与しているだけでなく、自動化デバイスの必要性はまだ存在していますか?



Julia Kovaleva:もちろん、自動化せずにテスト担当者だけをチームに任せるのはかなり近視眼的です。 テスターが自分でできない技術的なコンポーネントを実装するには、いくつかのツールとそれを所有する人が必要です。



Anna Chernysheva :テスターが使用できるフレームワークがあるため、テスト自動化の専門家の数に対するチームの必要性が減少します。 自動化により、テストフレームワークに新しい機能が追加され、すべてのチームがすぐに使用できるようになります。



-BDDアプローチを使用する場合、従来のTDD単体テストに加えて、動作テストも実施されます。 これは、テストプロセス間の違いが終わるところですか、それともより複雑ですか?



Anna Chernysheva: BDDはむしろ新機能の実装コストを削減することを目的とするプロセスであるため、すべてがはるかに複雑です。 開発の開始時でさえ、重要なアーティファクトを取得します。 たとえば、サポートが理解できるドキュメント。 このドキュメントは、関係するすべての関係者が、開発の反復中に実装する必要がある製品およびユーザーの行動シナリオについての理解を形成する機会を提供します。 BDDアプローチでは、新しいメンバーがプロジェクトに参加するためのしきい値も下げます。



-多くの人が、BDDは単体テストベースの開発から統合ベースの開発への移行と見なすことができると考えています。 そして、実際にはどのような状況ですか?



ジュリア・コバレバ:そのような実験を行った。 しばらくして開発者が動作テストの作成を拒否したため、BDDツールを使用して単体テストを作成しようとしても失敗しました。 自動化について話すとき、BDDはこのストーリーに完全に適合しますが、この単体テストへのアプローチは価値がなく、メリットはありませんでした。 統合テストでは、BDDの利点が大きくなります。ここでは、製品全体を見ていきます。



-BDDアプローチはどのような場合にテストに使用されますか。なぜ従来のTDDよりも優れているのですか?



Anna Chernysheva: BDDは主にシステムのさまざまなコンポーネントの相互作用をテストするために使用されます。すでに述べたように、統合テストのレベルは動作であり、さまざまなビジネスケースをチェックします。 TDDは、このアプローチでコードを作成するプログラマーによるユニットテストによる開発に直接使用されます。 一般に、単純な方法であれば、TDDはモジュールのみをチェックし、BDDはユーザースクリプトをチェックします。



-なぜ新しいBDDフレームワークが必要なのですか。TDDを記述し、既存のTDDを使用するための一連の推奨事項にBDDをフォーマットする方が簡単ではありませんか?



Julia Kovaleva: BDDは、開発チームをビジネスに近づけ、ビジネス、開発者、テスター間の対話を組織するように見えました。 TDDアプローチでは、正式なプログラミング言語でテストを作成する必要があります。 テストとコードは1か所にあり、保守が非常に難しく、テスターやビジネスアナリストはそこに書いたものをほとんど見ることができません。 最も人気のある2つのBDDフレームワークは、JBehaveとCucumberです。 それらを正しく適用する方法は、次回のHeisenbag 2017 Piterカンファレンスでお知らせします。



Anna Chernysheva: TDDとBDDのこの混乱は、さまざまなアプローチに対する共通のアイデアから生まれました。最初にテストを作成し、次に開発を進めています。 すべての類似点で、それらは異なる目的のために設計されており、さまざまなツールの使用を必要とします。



-つまり、BDDはTDDの拡張と見なすことはできませんか?



Anna Chernysheva:はい、そう思います。 テストモデルの代わりに、開発と同じスプリントで自動化するカスタムスクリプトがあります。 さらに、Alfa Laboratoryでは、BDDアプローチもエンジニアリング手法で有機的に実装されています。



-QAは女性の職業と見なされます。 あなたはどう思いますか、これは何と関係があり、どの程度真実ですか? ITに女性と男性の職業の概念はありますか?



Anna Chernysheva:今、彼らはこれから逃れようとしているが、女性の考え方はより抽象的であり、男性にとって具体的な詳細は重要です-もちろんこれはすべて個人的なものですが、アルファ研究所を採用すると、パーセンテージで言うと女性のテスターがさらに増えます。 たぶんテストには創造的なアプローチが必要で、女の子はもっと創造的な性質を必要とするのでしょうか?



ジュリア・コバレバ:実験を行って、 ハイゼンバッグに来る少女と男性の数を計算できます。



Heisenbug 2017では、ジュリアコバレバとアンナチェルニーシェバがキュウリとJBehaveを比較します。 どのBDDフレームワークにもっと機能がありますか? それらを正しく「調理」する方法と、テスト中にどのような困難に遭遇しますか-アルファラボ自動テストの主要な開発者の競争は、Mortal Kombatの最高の伝統で開催されます。



BDDガールズバトル:キュウリvs. Jbehave



完全な会議プログラムはサイトで入手できます



All Articles