Gleyzer両氏によって共同開発されました。2019で、同言語の発表を行いました。InfoQはPurdy氏に言語と、氏らが解決を目指した問題について聞きました。設計/アーキテクチャアジャイルマニュフェスト:ソフトウェアアーキテクトの視点ソフトウェアアーキテクトの役割と責任はアジャイルソフトウェア開発のためのマニフェストの価値と矛盾していると見えますが、優れたアーキテクトはアジャイル開発チームをサポートするテクニックを見つけています。Streamingは、ストリーミングデータのためのSQLライクなインターフェースを提供します。Streamsによって、Redisがストリーミングデータを複数のプロデューサとコンシューマの間で消費、保持、配信することができるようになります。ソフトウェア開発のマニフェストたゆまず息もつかずに市場に突進することで、会社を静かに消滅の崖っぷちへと追い込みます。それは設計してコードを書く方法を再考する時です。簡単さへの投資は、速さへの投資です。簡単さは知的財産の主鉱脈でもあります。競争上の優位性は、一度失ったら、もう一度手に入れることはほとんど不可能です。Buytaerts氏が過去10年間にわたって、企業がDevOps採用のハイプサイクルをくぐり抜け、変革に対する誤解を解消する過程を支援してきた経験について語ります。一般的なオンラインストアでは、買い物を完了するために多くのプロセスでユーザからの入力を必要とします。ソフトウェア開発者は自分の実装の品質と正しさをどうやって確認すればよいでしょうか?それは、生活のためにWEBアプリケーションを開発している人たちがよくぶつかる疑問です。アプリケーションの機能をテストすることができれば本当に便利です。やってそれを実現すればよいでしょう?Selenium(source)はThoughtWorksによって書かれたWEBアプリケーション専門のテスティングツールです。Seleniumのテストは実際のユーザがやるのと同じように直接ブラウザ上で実行されます。Explorer、Mozilla、Firefoxで動作します。関連スポンサーコンテンツ実際に動作しているSeleniumをオンラインデモ(source)で確認してみてください。右上の角にある「All」ボタンをクリックしてテストケースを実行します。うまくいけば、テストにパスしてきれいな緑色のバーが表示されるはずです。actionはassertよりも淡い緑色で表示されることに注目してください。これは何故かというと、actionはverifyコマンドやassertコマンドのように実際に何かをテストしているわけではないからです。assertが失敗すると、失敗したコマンドは赤くなり、Seleniumは処理を中止します。verifyコマンドが失敗すると、やはり赤くなりますがテストは中止されません。SeleniumのテストケースとテストスイートはHTMLで記述します。実際それらはただのHTMLの<table>要素に過ぎません。テストスイートの各行は次に示すようにテストケースへの参照です。href="MyTest.html">MyTest</a></td></tr>テストケースは「Selenese」と呼ばれる形式で書かれたHTMLドキュメントとして表現され、そこにはコマンドと二つの引数のための十分なスペースをもった3カラムのテーブルがあります。典型的なテストケースは次のようになります。「All」ボタンを押すなどしてテストを開始すると、SeleniumのテストランナーがHTMLのテストケースドキュメントを解釈し、一番下のフレームに表示されるWEBアプリケーションを動かします。ユーザのアクションをシミュレートすることで、Seleniumはユーザインターフェースを通じたアプリケーションのテストを可能にします。単体テストの代わりにはなりませんが、私たちはWEBアプリケーションの受け入れテストを自動化するためによく使用します。定期的な再帰テストを自動化するために継続的インテグレーションにおけるビルドに組み込むこともできます。Usage」を参照(サイト・英語)してください。AjaxSeleniumはWEBアプリケーションの機能のいくつかがJavaScriptを使ってブラウザ上で実装されているときに特に便利です。XMLの略)は、インタラクティブなWEBアプリケーションを制作するための開発テクニックです。ページの背後にあるサーバと小さなデータをやりとりすることでユーザが変更を行うたびにWEBページ全体をリロードする必要をなくし、WEBページの反応をより良く感じさせることを意図しています。WEBページの双方向性や速度、ユーザビリティが高まることを意味します。「Loading」というメッセージはAjaxで表示されているAjaxの技術的な定義はそういうことですが、大部分の人にとってのAjaxとはGMailやFlickrのように動作するWEBページのことです。リンクをクリックしてもページのリロードが起こらず、代わりにブラウザはサーバと通信を行い、表示中のページの一部だけを更新します。この、リンクをクリックしてから結果を確認するまでの待ち時間がことをややこしくするのです。テキストフィールドとボタンを一つずつもっているWEBページがあるとしましょう。テキストフィールドの初期値は「oldValue」です。ボタンをクリックするとAjaxの魔法が発動して、テキストフィールドの値はページがリロードされることなく「newValue」に変わります。明らかなアプローチは、ページを開いてボタンをクリックし、テキストフィールドの値を確認することです。Seleniumを使ってそれを行うと、テストケースは失敗してしまうのです。テストが失敗する理由は恐らくそんなに明白ではありません。Ajax呼び出しは非同期な性質をもっており、結果はサーバからすぐに返ってくるわけではありません。フィールドの値はボタンをクリックした数秒後に変更されたのですが、Seleniumはすぐに値をチェックして古い値を見てしまったのです。この問題を解決する方法の一つはclickの代わりにclickAndWaitコマンドを使うことです。この「AndWait」というサフィックスは、Seleniumがページのリロードを待つ必要があることを示しています。これはうまく動作するように思えるかもしれませんが、ここには落とし穴があります。ページはリロードされないので、clickAndWaitはSeleniumを永遠に待たせ続けることになります。これでは駄目なのは明らかです。一つの可能性はclickとassertValueの間に小休止をはさむことです。サーバが応答するのに十分な時間を与えるため、間で5秒間止めてみましょう。このアプローチなら大抵の場合はうまく動作しますが、サーバが応答に5秒以上かけると失敗してしまいます。これは様々な理由によって起こり得ます。ネットワークの遅延やテストマシンの過負荷など。結果を確認する前の一時停止期間をどんどん延ばしていってもよいですが、そうするとテストの実行もどんどん遅くなります。これもベストな解決策ではありません。動くことが保証されませんし、テストは必要以上に遅くなってしまいますから。ありがたいことに、Seleniumはまさに私たちが求めていることを行うためのサポートを提供してくれています。表示中のページでフィールド値が変更される場合、waitForValueコマンドを使えば、期待している値が表示されるまでSeleniumを待たせることができます。失敗しているテストを成功させるため、失敗するassertValueコマンドを次のように置き換えなければなりません。このコマンドを実行すると、Seleniumは現在のテストケースの実行を一時停止し、期待している値を待ちます。「newValue」という文字列がテキストフィールドに表示されると、停止していたテストが再開します。Seleniumは30秒間待ってタイムアウトするので、覚えておいてください。あなたが多分すでに予想しているとおり、Ajaxの作用をテストするために利用できるコマンドはたくさんあります。Ajaxで更新されたプレーンテキストをチェックしたいならwaitForText、現在ページのタイトルをチェックしたいならwaitForTitle、HTML要素が削除されたことを検証したいならwaitForElementNotPresentなど。Accessor(サイト・英語)それぞれに対して対応するwaitForXxxxコマンドとwaitForNotXxxxコマンドがあります。何かをチェックためのverifyXxxxやassertXxxxがあるなら、非同期効果をテストするためのwaitForXxxxが必ず存在します。いう場合のためにwaitForConditionがあります。これを使えば、JavaScriptで書かれたBoolean式を定義して、その式を評価した結果がtrueになるまでSeleniumを待たせることができます。ms)これは、もっと複雑なAjax作用をテストするときに役に立つはずです。実は、Seleniumのソースコードの中を漁れば、waitForConditionを使って実装された事前定義のwaitForXxxxとwaitForNotXxxxシリーズが全部見つかります。waitForCondition(source)」という素晴らしいブログエントリを書いています。彼がエントリを書いたとき、waitForConditionはただのSeleniumのユーザ拡張に過ぎませんでした(サイト・英語)が、今やそれはSeleniumコアの一部となっています。まとめこの手短な記事の中で、私たちはSeleniumというWEB受け入れテストツールを紹介しました。waitForXxxxというSeleniumのコマンドを使ったAjaxアプリケーションのテストの仕方について議論し、非同期なテキストの更新というシンプルなAjax作用をSeleniumでテストする方法を実例で示しました。Editorやオートコンプリート、ドラッグ・アンド・ドロップなどの一般的なAjax作用をテストする方法を教えてくれるサンプルテストケース(サイト・英語)がSeleniumの開発者によって提供されています。これらのサンプルはscript.aculo.usで作成されています。ご存知かもしれませんが、script.aculo.usは有名なAjaxライブラリです。ThoughtWorks勤務。アプリケーション・デベロッパーとして大規模エンタープライズアプリケーションの開発や異種システムの統合に4年の経験をもつ。15年の業界経験をもつシニア・デベロッパー。Javaの経験のほか、動的スクリプト言語の熱心なユーザでもある。ThoughtWorks勤務。JavaとJ2EEによる8年間のエンタープライズシステム構築経験がある。毎週火曜日に前週のまとめコンテンツがお送りいたします。25万人ものシニアデベロッパーのコミュニティーにぜひご参加ください。サンプルを見るあなたのメールアドレスはこちら国を選んでください。プライバシーポリシーに従って私の個人情報を扱うことに同意します。登録するとさまざまなことができます。アカウント登録をしてInfoQをお楽しみください。あなたの意見をお聞かせください。毎週火曜日に前週のまとめコンテンツがお送りいたします。25万人ものシニアデベロッパーのコミュニティーにぜひご参加ください。サンプルを見る様々なイノベーターとアーリーアダプターがお送りするテクノロジーの概要を見る。自分がまだ知らないことに気づいていないと知るあなたが興味のあるトピックスをいつでも最新な情報に。あなたのメールアドレスはこちら国を選んでください。プライバシーポリシーに従って私の個人情報を扱うことに同意します。よい世界へ私たちが暮らす世界を大切に思い、よりよいものにしたいと考えています。人のためのソフトウェア開発を加速し私たちのミッションを実現することで、この思いを成し遂げようとしています。私たちは利益の1%をさまざまな慈善団体に寄付しています。会社として、また従業員��して、そうしたことの価値を強く信じているからです。with.プライバシーBTあなたのプロファイルは最新ですか?プロフィールを確認してアップデートしてください。アドレス*Eメールを変更すると確認のメールが配信されます。会社名:現在の会社名をご入力ください。Other組織規模:現在の組織規模をご入力ください。2,501+国:現在の国を設定してください。Zimbabwe都道府県:現在の都道府県に設定してください。次の都道府県にアップデートする:ニュースレターを購読しますか?インダストリーメールを購読しますか?本Eメールに登録すると、以前より関心のあったトピックの関連情報をお送りする場合がございます。詳細はこちらのプライバシーポリシーをご覧ください。newsletter?新しいメールアドレスに確認用のメールを送信します。このポップアップ画面は自動的に閉じられます。