金高真悟の奇天烈(キテレツ)大百科

日々徒然なるままに

株式会社ニコシスの新入社員が毎日のあれやこれやを語ります。

テストデータ作成の工数見積もりをミスった・・・・結構大変なのね。(´д`ι)

今日はひたすらコーディング!!

こんばんは。
キテレツです。

今日はひたすらコーディングと小さなソフト作っての動作テスト。
動作テストは、C#からメールを送信するコードの動作確認。

今日は一日、DBアクセス部分とメール送信部分制作で終了。
メールは非同期で送信したい。

ものすごく久しぶりにメモ的なコードを。
Windowsフォームにボタンを2つ配置。
片方は送信で、もう片方はキャンセル

以下、メモコード抜粋。

//SmtpClientオブジェクト
System.Net.Mail.SmtpClient sc = null;

//Button1のClickイベントハンドラ
private void Button1_Click(object sender, EventArgs e)
{
    //MailMessageの作成
    System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage(
        "sender@xxx.xxx", "recipient@xxx.xxx", "題名", "本文");

    //SmtpClientの作成
    if (sc == null)
    {
        sc = new System.Net.Mail.SmtpClient();
        //イベントハンドラの追加
        sc.SendCompleted +=
            new System.Net.Mail.SendCompletedEventHandler(sc_SendCompleted);
    }

    //SMTPサーバーなどを設定する
    sc.Host = "localhost";
    sc.Port = 25;
    sc.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;

    //メールを送信する
    //MailMessageをSendCompletedイベントハンドラで取得できるようにする
    sc.SendAsync(msg, msg);
}

//Button2のClickイベントハンドラ
private void Button2_Click(object sender, EventArgs e)
{
    //メールの送信をキャンセルする
    if (sc != null)
        sc.SendAsyncCancel();
}

//メール送信が完了したとき
private void sc_SendCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
    //SendAsyncで指定されたMailMessageを取得する
    using (System.Net.Mail.MailMessage msg = (System.Net.Mail.MailMessage)e.UserState)
    {
        if (e.Cancelled)
        {   
            Console.WriteLine("[{0}]の送信はキャンセルされました。", msg.Subject);
        }
        else if (e.Error != null)
        {
            Console.WriteLine("[{0}]の送信でエラーが発生しました。", msg.Subject);
            Console.WriteLine(e.Error.Message);
        }
        else
        {
            Console.WriteLine("[{0}]の送信が完了しました。", msg.Subject);
        }
    }
}

ざっくりとこんな感じでコーディング。
カンマで区切ってあげれば、送信先を複数にすることも可能。
マイクロソフトのコードをそのまま持ってきて動作させてみたら動きました。
ありがたいことです。
タイムアウトの処理は???ってのに気がついていますが、、、後ほど導入しよう。

DBアクセスは・・・・

プログラミング以外のところで時間を使ってしまいました。
何かと申しますと・・・

(´д`ι) テストデータ作るのがめんどい!!

んです。
リレーションシップで関連付けて設計されているテーブルデータを、辻褄が合うように突っ込まなければならないんですが、たった数件のテストデータを作るだけで2時間くらいかかってしまいました。
入力しなければならないカラムの数が沢山。。。まぁ、業務ソフトウェアならこんなの当たり前なのかもしれませんが。

明日は機能テストまで

やりたいですね。
単体で動作しているやつを組み合わせて、必要な機能を実現します。

想定される今後の課題

おそらく、、、テストしなければならないデータのパターンを網羅できていません。
運用側から、データのパターンについて取材させてもらいましたが、きっとまだ想定外のデータとかあるはずです。。。