clr/h 第99回勉強会ライトニングトーク

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

Upload: jun-ichi-sakamoto

Post on 11-Apr-2017

565 views

Category:

Software


1 download

TRANSCRIPT

メールを送信するアプリの自動E2Eテストのための

SMTPサーバーとその実装

自己紹介

メール送信するアプリの自動E2Eテストにリアルなメールサーバー使うと...

• そのようなメールサーバーの選定や手配が手間

• メールボックスどうやって使い分ける?

• テスト対象プログラムが送信したメールをどう

やってAssertする?

...なので、専用のモックサーバーを使いましょう。

でも、自動化されたE2Eテストに使える、気に入ったものがない...

• Black Jumbo Dog を活用してた時期もあったのですが。

で、自作した。 ( http://j.mp/smtp4test )

特徴

• SMTP をしゃべって SMTP サーバーを模擬す

るだけでなく、HTTP もしゃべる。

• HTTP 経由で各種設定・制御を行う。

• いわゆる Web API

Demonstration

Web API 経由で各種設定・制御を行うことにより...

テストの自動化が捗る!

• メールが正しく送信されたかどうか、テストプロ

グラムが HTTP 経由で Assert 可能。

• 1テストシナリオが終了するごとに、メールボック

スの清掃を、テストプログラムが実行可能。

• (異常系の再現のために) SMTP 認証の有無や、

サービス不能状態の模擬といった構成を、テスト

プログラムが実行可能。

Web アプリとしてUIを実装可能

• Web API を呼び出す HTML/JavaScript を書けば UI

が作れる。

• UI があれば、テストがコケたときなどに、ささっと状

況を確認できる。

• MacOS や Linux はもちろん、ARM CPU な

Raspberry Pi 上でも動作するよう実装できる

• .NET系で実装する場合、今回は Windows のタスクトレイに常駐する

WinForms アプリとして作ったが、コンソールアプリ、または Mono

XSP上で動く ASP.NET アプリとして作ればよい。

補足 – 実は...

• ここまでやりきって、力尽きたというか、飽きたというか。

• 2年くらい保守してません。

• API ドキュメントすらないw• 他の人使えないじゃん!

• かくいう自分も、API 仕様かなり忘れてた (汗

• そんな状況なので、このアプリの存在もほとんど宣伝してません。

• いちおうGPLなオープンソース。

まとめ: 言いたかったこと x 2つ

• テストあきらめないで!

• “メール送信部分を DI 化して...” とかできなくても、

模擬サーバーでも十二分に自動化テストできるよ!

• Web API で作っておけば、UI も Web で作れ

るよ → Gtk+ とか Electron とか Mono でWinForms とか頑

張らなくても、UI を持つ マルチプラットフォーム

な C# アプリを作れるよ!