API構築の基礎を学んだ。QConは、開発者コミュニティにおける知識とイノベーションの普及を促進することで、ソフトウェア開発に力を与える。実務者主導のカンファレンスであるQConは、チーム内のイノベーションに影響を与える技術チームのリーダー、アーキテクト、エンジニアリングディレクター、プロジェクトマネージャー向けにデザインされている。Sheehy氏は、人工知能ハイプ時代における責任ある開発者としてのあり方について、洞察に富んだ開会基調講演をした。Grizzanti氏が、「スタッフ・プラス」への道と、それを「科学」というより「芸術」としてとらえ、芸術を創作することとソフトウェアを創作すること、そして組織のダイナミクスに対処することの類似性について語っている。Codeを採用する:確認するべき6つの適性LCNC(ローコード/ノーコード)プラットフォームは、プログラマーだけでなくプログラマーでなくても、最小限のコーディングとワンクリックのデプロイメントで、アプリケーションソフトウェアを開発できるよう設計されている。ドラッグ&ドロップ方式のインターフェースなどを利用することで、開発・デプロイメントプロセスを簡素化し、効率的なアプリケーション開発とデプロイメントを実現する。v2がリリースされた。8のラムダの使用を含む)カスタムリクエストマッチングロジックを作成する能力、gzip圧縮されたリクエスト及びレスポンスボディのサポート、ランダムに分散された遅延(現在は一様分布と対数正規分布がサポートされている)、そしてcookieとbasic認証ヘッダのマッチングを含む。v2の新機能、モダンなアーキテクチャにおけるサービス仮想化が果たす役割、そしてモックと契約の検証との関係について質問した。Akehurstです。日中はロンドンでよりよい技術の構築に関して精力的にクライアントを支援し、夜(と週末)にWireMockをメンテナンスしています。WireMockはAPIモック、もしくはサービス仮想化のツールであると紹介したいと思います。本質的にはアプリケーションが依存するシステムとのHTTPのやりとりをテストのためにスタブ、もしくはモックすることができるものです。以下にいくつかの利点を挙げます。依存しているAPIが未完成、もしくは存在しないときでも生産性を維持できます。テスト環境や第三者のサンドボックスへの依存を軽減できます。実システムを用いたテストと比較して高速なテスト実行ができます。(10倍以上の高速化が可能)TCP接続の切断や突発的な遅延のような泥臭いケースを含む、境界ケースと例外系のテストが容易に行えます。ドキュメントと他の情報はhttp://wiremock.orgで確認することができます。v2はスタブ定義とリクエストの間に"距離"の概念を導入しました。このことにより、マッチしなかったリクエストと検証失敗時のレポートを大きく改善することができました。検証呼び出しがリクエストのマッチに失敗したとき、WireMockは一番近いものを発見してdiffを提供することが出来るようになりました。このことは労力を大きく削減します。POSTに関連した機能をテストするときに一つの文字を大文字にすることを忘れていたことを発見できます。拡張APIもリッチになりました。レスポンストランスフォーマはパラメータを引数に取ること、プロキシされたレスポンス変換することができるようになりました。8ラムダ経由でも使用できます。1.xもAndroid上で動作させることができましたが、動作させるためにはライブラリの非互換性のワークアラウンドのために少しソースを変更したフォーク版をメンテナンスすることが必要でした。Androidコミュニティの数人が助けてくれたおかげで、ビルドファイルに数行付け加えるだけで動作するようになりました。他の特記すべき変更点は以下です。gzip圧縮されたリクエスト及びレスポンスボディのサポートランダムに分散された遅延。現状は一様分布と対数正規分布がサポートされています。9へのアップグレード。これによりパフォーマンス向上、ServletAPI依存問題の軽減とバグ修正が図られます。標準・スタンドアロンJARのMavenアーティファクトとの分離。これにより、スタンドアロンJARに依存したい場合に推移的依存関係に含まれる成果物を除外せずに済むようになりました。Googleトレンドを少し見たところだと、MockitoはWireMockの検索回数の約10倍ですので、(あまり科学的でないところもありますが)サービス仮想化の認知度はオブジェクトモックに追いつく途上だというのが妥当なところでしょう。WireMockのようなツールへの興味はここ1,2年で急激に上昇してきています。この現象に対する説明の一つとしてはマイクロサービスの知名度の急激な上昇があります。マイクロサービスのテストの準備に使用しているWireMockのユーザは増加しており、この領域が間違いなくスイートスポットだと言えます。WireMockが高い価値を付与できる他のユースケースとしては以下のものがあります。ユニットテストに近い速度で単一のサービス・アプリケーションに対する受け入れテストを実行する。オブジェクトモックによりシステム境界の置き換えができますが、WireMockを使用すればHTTPクライアントやリソースプール、シリアライズ/デシリアライズが全て対応できます。ソケットの未接続状態など、障害シナリオへの対応。これらはオブジェクトモックツールでは正確に再現するのがとても難しく、実システム上で模倣するのも同様に困難です。単一のコンポーネントのパフォーマンスを計測する。ここでもまた、オブジェクトモックはシステム境界を置き換えることができますが、この結果はHTTPクライアント、コネクションプール、スレッド構成の影響を無視した形に歪曲されます。WireMockユーザとの会話とクライアントとの業務で学んだことが少しあります。UI自動ツールのような記録/再生ツールの使用は控えめにすること。変わってしまう事象を記録すると大量の維持コストが発生します。UIテストのために作成したページオブジェクトの数と同じくらい、スタブや検証コード周辺にビルダやサービスラッパを作成すること。これは最初は手間が掛かりますが、長い期間で見ると維持や読みやすさの面から役に立つでしょう。セッションの切断や5xxのレスポンス、ソケットタイムアウトを引き起こす遅延の付加など。夜中にあなたを叩き起こすような問題を捕まえるだけでなく、動作が正常かの確認や監視を行うこともできます。JVM(もしくはAndroid)上で実行しているなら、ユニットテストと同様の速度で全方位のサービス回復に関するリスクへのフィードバックを受け取ることができます。monkeyを確実に打ち破るでしょう!WireMockはBDDツールと組み合わせてもうまく使えます。私が見たことも使用したこともある良い方法としては、シナリオの"Given"の部分でスタブを設定し、それから"Then"の部分でやりとりを検証するやりかたがあります。私も最近になって考え始めたところですので責任をもって多くを主張できませんが、機械が解読可能な仕様(例えばSwaggerやRAML)はスタブ定義と実態との乖離を検知する問題を解決するためのとても有力な手段に思えます。Verifierを使用することがあります。これは、クライアントが隔離してテストできるようにするために契約の仕様からWireMockスタブ定義を生成するものです。!パフォーマンス、回復性、セキュリティといった特性については私はWireMockを使用してテストしていますし、テストされていることを見たことがあります。例を挙げると、先に挙げたランダムな遅延機能はWireMockを使用しているチームが作成したプルリクエストが元になっており、彼らのマイクロサービスの継続的パフォーマンステストを行うためのものでした。彼らのデリバリパイプラインは、共有環境に移行する前に、各サービスが隔離された環境でのパフォーマンスベンチマークを通過していることを保証しています。回復性の観点では、アプリケーションを第三者のシステムがプロキシエラーを返却したときにコネクションプールが徐々にリークする、というデモするためのテストを、フォルトインジェクションにより書いたことがあります。WireMockのWebサイトではMockLabというSaaSを作成したことに触れられています。最近、私はWireMockを一からセットアップする際にどんどん複雑さが増す状況に直面しています。WireMockのインスタンス群を配置・管理するためにかなりの労力を費やし、予備的なテストとデモを補助するために専用のUIを構築している状況を認識しています。MockLabはWireMockインスタンス群を管理するための努力を劇的に削減し、数クリックでモックサービスを配置可能とすることを目的としており、テストのセットアップやコードに直接関わらない人々へ解析結果を公開することもできます。モバイルアプリ、マイクロサービスや第三者のAPIに依存したシステムを構築(もしくはテストを!)しているのであれば、一度確認していることを強くお勧めします。詳細な情報を知りたい場合やMockLabが使用可能になった時に通知を受け取り場合は、稼働準備中のページ(http://get.mocklab.io)を確認してください。本日はInfoQのためにお話し頂きありがとうございました。v2をリリースするために支援して下さった全ての方々にお礼を言いたいです。Hill氏を挙げたいと思います。v2に関する追加情報はプロジェクトのWebサイトで確認できる。Akehurst氏のGitHubアカウントにアップロードされている。毎週火曜日に前週のまとめコンテンツをお送りいたします。(日本語版は不定期リリース)25万人のシニアな開発者コミュニティーにぜひご参加ください。サンプルを見るあなたのメールアドレスはこちら国を選んでください。プライバシーポリシーに従って私の個人情報を扱うことに同意します。毎週火曜日に前週のまとめコンテンツをお送りいたします。(日本語版は不定期リリース)25万人のシニアな開発者コミュニティーにぜひご参加ください。サンプルを見る様々なイノベーターとアーリーアダプターがお送りするテクノロジーの概要を見る。自分がまだ知らないことに気づいていないと知るあなたが興味のあるトピックスをいつでも最新な情報に。あなたのメールアドレスはこちら国を選んでください。プライバシーポリシーに従って私の個人情報を扱うことに同意します。Inc.プライバシーBT。