Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

CLR/H 第99回勉強会ライトニングトーク

857 views

Published on

メールを送信するアプリの自動E2EテストのためのSMTPサーバーとその実装

Published in: Software
  • Be the first to comment

CLR/H 第99回勉強会ライトニングトーク

  1. 1. メールを送信するアプリの 自動E2Eテストのための SMTPサーバーとその実装
  2. 2. 自己紹介
  3. 3. メール送信するアプリの自動E2Eテストに リアルなメールサーバー使うと... • そのようなメールサーバーの選定や手配が手間 • メールボックスどうやって使い分ける? • テスト対象プログラムが送信したメールをどう やってAssertする?
  4. 4. ...なので、専用のモックサー バーを使いましょう。
  5. 5. でも、自動化されたE2Eテストに 使える、気に入ったものがない... • Black Jumbo Dog を活用してた時期もあった のですが。
  6. 6. で、自作した。 ( http://j.mp/smtp4test )
  7. 7. 特徴 • SMTP をしゃべって SMTP サーバーを模擬す るだけでなく、HTTP もしゃべる。 • HTTP 経由で各種設定・制御を行う。 • いわゆる Web API
  8. 8. Demonstration
  9. 9. Web API 経由で各種設定・制 御を行うことにより...
  10. 10. テストの自動化が捗る! • メールが正しく送信されたかどうか、テストプロ グラムが HTTP 経由で Assert 可能。 • 1テストシナリオが終了するごとに、メールボック スの清掃を、テストプログラムが実行可能。 • (異常系の再現のために) SMTP 認証の有無や、 サービス不能状態の模擬といった構成を、テスト プログラムが実行可能。
  11. 11. Web アプリとしてUIを実装可能 • Web API を呼び出す HTML/JavaScript を書けば UI が作れる。 • UI があれば、テストがコケたときなどに、ささっと状 況を確認できる。 • MacOS や Linux はもちろん、ARM CPU な Raspberry Pi 上でも動作するよう実装できる • .NET系で実装する場合、今回は Windows のタスクトレイに常駐する WinForms アプリとして作ったが、コンソールアプリ、または Mono XSP上で動く ASP.NET アプリとして作ればよい。
  12. 12. 補足 – 実は... • ここまでやりきって、力尽きたというか、飽き たというか。 • 2年くらい保守してません。 • API ドキュメントすらないw • 他の人使えないじゃん! • かくいう自分も、API 仕様かなり忘れてた (汗 • そんな状況なので、このアプリの存在もほとん ど宣伝してません。 • いちおうGPLなオープンソース。
  13. 13. まとめ: 言いたかったこと x 2つ • テストあきらめないで! • “メール送信部分を DI 化して...” とかできなくても、 模擬サーバーでも十二分に自動化テストできるよ! • Web API で作っておけば、UI も Web で作れ るよ → Gtk+ とか Electron とか Mono でWinForms とか頑 張らなくても、UI を持つ マルチプラットフォーム な C# アプリを作れるよ!

×