私は、テスト自動化のためにnodejsとnighwatchを使用するプロジェクトに取り組んでいます。ここでの問題は、テストが信頼できるものではなく、誤検出が多いことです。私はそれらを安定させ、まだエラーを得るためにすべてをやった。私はhttps://bocoup.com/blog/a-day-at-the-racesのようないくつかのブログに行き、いくつかのコードリファクタリングを行った。この問題を解決するための提案がありましたか?この瞬間に私は2つの選択肢があります。Javaでコードを書き直すか(ソリューションからnodejとnightwatchを取り除くか、私はJavaとJavaの方がはるかに快適だからです)、ほとんどの場合、Javascriptの非ブロック性と闘います。スナップショット/アプリケーションログのレビュー/一度に1つのテストを実行します。テストサーバー上でのセレンテストのランダムな失敗
テスト環境: -
- サーバー-Linux
- ディスプレイ - フレームバッファ
- 総VMの-9セレンノードが並行してテストを実行しています。
- ブラウザ - クロム 私は見られない要素であり得るエラーの
タイプ。ほとんどの場合、ページがロードされるとすぐにテストが失敗します。私はすでに時間切れのために80秒を設定しているので、時間は問題にならない。テストは並行して実行されていますが、別々のVM上で実行されているため、問題が発生するかどうかはわかりません。
編集1: - 根本的な原因を知るためにこれを進めていました。私はランダムな失敗を排除するために以下のことをしました: - a。 --suiteRetriesを追加して、失敗したケースを再試行します。 b。エラーのスクリーンショットとDOMソースを調べました。すべてがうまく見えます。 c。 browser.pauseを明示的な待機に置き換えました
また、デバッグ中に1つの問題が発生しましたが、これはランダムなエラーの原因となる問題かもしれません。ここでは、コードスニペット
for (var i = 0; i < apiResponse.data.length; i++) {
var name = apiResponse.data[i];
browser.useXpath().waitForElementVisible(pageObject.getDynamicElement("@topicTextLabel", name.trim()), 5000, false);
browser.useCss().assert.containsText(
pageObject.getDynamicElement("@topicText", i + 1),
name.trim(),
util.format(issueCats.WRONG_DATA)
);
}
私はそのテキストが表示されるのに十分な待っているかどうかを検証するためのXPathのチェックを追加したのです。私は目に見えるアサーションが渡されているのを観察しましたが、次のアサーションでは@topicTextが以前の値またはnullになっています。これは断続的な問題ですが、テストサーバーで頻繁に発生します。
エラー・スタック・トレースとともにコード・トライアルを共有できますか? – DebanjanB
"80秒でタイムアウト"とはどういう意味ですか? 80秒後に失敗したページでターゲットとする最初の要素を明示的に待ちますか?あるいは、あなたはいつも80秒待つのですか? – danidiaz
@danidiaz - はい私は明示的な待機を実行しており、最大タイムアウトは80秒です。 –