Heisenbugの先:テストのグリッドダイナミクス





テストが会社にとって重要であることに気付くにはどうすればよいですか? 会社が会議を主催し、従業員がそこでレポートを作成する場合、それは重要です。 Grid DynamicsとHeisenbag会議の場合、まさにこれに該当します。会議の前に、会社の2人の従業員に質問することにしました。







エフゲニー・ホロホリン



-誰もがGrid Dynamicsを知っているわけではありません-会社が何をするのか簡単に教えてください。



-私たちは、電子商取引、金融、その他のビジネス分野のハイテクスケーラブルソリューションの構築に取り組んでいます。 主な重点分野は、eコマースでのマルチチャネルプラットフォームの構築、検索とパーソナライズの開発、継続的な統合プロセスとクラウドソリューションの構築です。



Google、アメリカンイーグル、eBay、Microsoft、VMware、PayPal、Yahoo!、Macy'sなどの企業がお客様です。



-どの都市にオフィスがあり、どのくらいの大きさですか? あなたの本社はシリコンバレーにあります-ロシアの従業員は労働時間に適応する必要がありますか?



-2006年に設立され、現在では世界中の6つの都市に700人以上の人々がいます。 ウクライナ(ハリコフとリヴィウ)とポーランド(クラクフ)に事務所があり、最大の数はサンクトペテルブルクにあり、現在250人以上がそこで働いています。 ロシアにはサラトフ(170人)という別のオフィスもあります。



勤務スケジュールは、米国の本社と顧客との確実な時差(-10時間)を考慮して作成されます。 従業員には最も柔軟なスケジュールがあります。 私たちにとっての主なものは結果です。 オフィスは24時間利用可能です。 それでも、すべての作業会議(会議)に出席する必要があります。ビジネスコールを忘れず、時間通りにタスクを完了する必要があります。



-そして、テストで正確に何を-あなたはそれに関連付けられているより多くの人々を持っているどの都市で、あなたはそれらの何を伝えることができますか?



-サンクトペテルブルクのQAエンジニアの最大数は54人です。 ハリコフの面で2位-42人。 上位3人は米国のサラトフとメンロパークによって閉鎖されており、QAエンジニアの数はそれぞれほぼ24人と23人です。 もちろん、私たちはそこで止まるつもりはありません-私たちのチームは各場所で積極的に成長しています。



イリヤ・コロビトシン



-グリッドダイナミクスでは正確に何をしていますか?



-まず、通常のテスト自動化:Javaでサービス(ほとんどの場合REST)のテストを作成するか、JavaScriptでUIテストを作成します。ここでは珍しいことは何もありません。 第二に、あまり一般的でないプロジェクトに出くわします。 第三に、いくつかの問題を解決するためのヒント(「1つのSQLクエリでこれを記述する方法」、「Mavenモジュールを整理する方法」、「JSでこれを記述する最適な方法」など)私はコードレビューをします。 そして最後に、面接を実施し、候補者を選別するために行うテストを開発し、あらゆる種類の内部タスクを実行しています。



-「あまり一般的ではないプロジェクト」についての言葉は興味深いものです。 例がありますか?



-たとえば、最近、顧客が別の会社を買収し、統合プロセスが進行していました。 1つのCRMシステム(クライアントリレーションシップマネジメント、誕生日、妻の名前、愛犬の名前など、あらゆる種類の個人データ)から約100,000人のクライアントに関する情報を別のシステムに転送する必要がありました。変換、無効なデータのフィルタリングなど。 転送中に何も失われたり損なわれたりしないことを確認するテストを作成しました。



-テストと開発、JavaとJavaScriptを一度に複数の世界の境界にいることを理解していますか? そこに住んでいるのはどうですか? :)



-はい、私はテストに携わっていますが、私と開発者は劣っていません。 たとえば、コンポーネントレベルのテストを作成する場合、メインアプリケーションからSpringおよびHibernateと統合するため、開発者ほど悪くないことをすべて理解する必要があります。 さらに、悪名高い「異常な」タスクの場合、現在適している既製のソリューションがないため、多くの場合、ゼロから新しいものを作成する必要があります。



とにかく、使用するすべてのツールを十分に理解する必要があると思います。また、常に何か新しいことを学ぶ必要があります。知識は、すぐに役に立たなくても、まだ役立っています。 視野が広くなればなるほど、なじみのない領域で見慣れた「パターン」(GoFの意味ではない)が見やすくなります。



-DevOpsの場合、開発者はより多くの管理者タスクを取得します-テストの自動化により、テスターはますます「開発者」になりますか? それはすべて何になりますか?



-テストは、品質保証だけでなく、開発およびサポートコストの削減についても行われます。 自動化が不利なタスク(テストの開発と保守が難しい)があり、これらの条件付き5〜10%は依然として手動でチェックされ、これは合理的です。 オートメーションの残りの部分は、開発プロセスの現在のビジョンに完全に適合しています。パイプラインを介してアプリケーションを迅速に実行でき、開発者は変更にある程度の自信を持ってフィードバックを受け取ります。 別のテスターは、他の側からタスクを確認し、アプリケーションの正確なアーキテクチャのメンタルモデルに干渉しないため、制限を課し、一部のケースを考慮することができないため、常に役立ちます。



-以前の別のレポートでは、JsonWireプロトコルの「内部を見る」ように求めていました。 そして、あなたの意見では、テスト自動化ツールの「内部に登る」ことはどれくらい重要ですか?これは資格を大幅に高めますか、それとも単に「持っているだけ」ですか?



-抽象化は素晴らしいものであり、抽象化なしでは複雑なプログラムを書くことはできません。 シリコンといくつかの高レベルのフレームワークの間にこれらのレイヤーがいくつあるか想像するのは恐ろしいことです。 このような面白いページがありますが、すべてが網羅されているわけではありません。



残念ながら、抽象化は「リーク」する傾向があり、ほとんどの場合、これは何かが壊れたときに起こります。 一方で、私は下層を知りたくないし、考えたくないが、一方で、私はしなければならない。 これらは物です。 内部を見ると、下にあるレイヤーによってどのような制限が課せられ、そこで何がうまくいかないかを理解するのに役立ちます。 これもまた、すべてが次のように見える場合、ある種の「WAT」問題にすばやく対処するのに役立ちます。







-最後に、私はKotlinについてますます頻繁に耳にします-そして、テストの自動化では、それ自体が感じられますか? Grid Dynamicsのテストに使用されるJVM言語は何ですか?



-これまでのところ、実際にはそうではありませんが、私には彼の時間が来るようです。 JVMファミリーには、Groovyと少しのScala(ガトリングテスト用)がありますが、Kotlinには場所があります。



-テストに関して、コミュニティに伝えたい一般的なアイデアはありますか?



-次のことを伝えたい:適切なツールを使用する価値があるさまざまなタスクについて、これは時間と労力の両方を節約するのに役立ちます。 そのため、幅広い見通しと物事の構造を理解する能力が役立ちます。ツール自体を適用できなくても、その仕組みから何か有用なことを学ぶことができます。 特定のプロジェクトに適したものに応じて、Java、JS、Groovyでテストを行うのはこのためです。



もちろん、極端なことをしないでください。タスクが小さくて1回限りの場合は、すべてを手で行って忘れる方が速い場合があります。



-ツールの質問:あなたの仕事に欠けているものはありますか、それとも今、あなたのすべてのニーズがすでにカバーされていると感じていますか?



-現代のフロントエンド開発では、ほとんどのフレームワークが個々のコンポーネントからインターフェースを組み立てるようになりました。 UIテスト用のページオブジェクトは、これらのコンポーネントから自動的に生成できると感じていますが、これまでのところ、適切なツールを見つけることができず、それら自体を書くことができませんでした。



-ハイゼンバグで話したいことを簡単に教えてください。



-私のレポートは主に、AngularアプリケーションのUIテストを作成する人、およびSeleniumテストをJavaまたはPythonで作成したが、JavaScriptで作成したことのない人に興味があります。 Angular開発者がテスターを支援する特別なProtractorフレームワークを作成することにした理由と、JSを実際に理解せずにテストを急いで作成した場合に遭遇するWTFの瞬間について説明します(利点は単純な言語です)。 そして最後に、私の意見では、最も興味深いものがあります。私たちは、Protractorの内部を調べて、彼がどのように魔法を使うかを理解し、それをJavaテストに転送しようとします。



All Articles