SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

まだまだ使える! WSH

まだまだ使える! WSHプログラミング ~ VBScriptのテストツールの紹介

  • X ポスト
  • このエントリーをはてなブックマークに追加

VBS Testerの使い方

 テスト結果をメールで受信する場合、Address.iniをテキストエディタで開き、当該ファイルにテスト結果を送信したいメールアドレスを登録します。

 登録は、つぎのようにメールアドレスを1行ずつ入力します。   

Address.iniの記述例
mail_address1@gmail.com
mail_address2@gmail.com
mail_address3@gmail.com

 「VBS Tester」のメール送信機能は、メーラーがOutlookの場合のみ有効です。もし、Outlook以外のメーラーを使用されている場合、もしくはメール送信機能が不要であれば、VbsTester.vbsを開き、SendLog()メソッドおよびDeleteLog()メソッドを削除してください。

Outlookによるメール送信機能が不要な場合
Private Sub SendLog()
    Dim olApp
    Set olApp = CreateObject("Outlook.Application")
    Dim myItem
    Set myItem = olApp.CreateItem(0)
    Set olApp = Nothing
    myItem.To = Replace(ReadText(VBS_TESTER_ADR_NAME), vbCrLf, ";")
    myItem.Subject = "From VbsTester"
    myItem.Body = ReadText(VBS_TESTER_LOG_NAME)
    myItem.Send
End Sub

Private Sub DeleteLog()
    Dim fileObj
    Set fileObj = fso.GetFile(VBS_TESTER_LOG_NAME)
    fileObj.Delete
    Set fileObj = Nothing
End Sub

 DeleteLog()メソッドを削除すると、VbsTester.vbsと同じディレクトリに、VbsTester.logというテキストファイルでテスト結果を出力します。

 次に、テストケースを作成します。

 「VBS Tester」では、拡張子が「.inc」となっているファイルをテストケースが記述されているファイルとして認識します。同梱されているTestSample1.incやTestSample2.incを参考にテストケースを作成してください。修正する箇所は、ExecuteText()メソッドのみです。

テストケースのサンプル
Option Explicit

Class Tester
    Private mLog
    Private Sub Class_Initialize()
        mLog = ""
    End Sub
    Public Property Get Log()
        log = mLog
    End Property
    Private Property Let Log(ByVal sLog)
        mLog = sLog
    End Property
    Private Function Include(ByVal fileName)
        Dim fso
        Set fso = CreateObject("Scripting.FileSystemObject")
        Include = fso.OpenTextFile(fileName, 1, False).ReadAll()
        Set fso = Nothing
    End Function
    Private Sub Test(ByVal bIdn, ByVal msg)
        Dim sLog
        If (bIdn) Then
            sLog = msg & " ---> OK"
        Else
            sLog = msg & " ---> NG"
        End If
        If Not (Log = "") Then
            Log = Log & vbCrLf
        End If
        Log = Log & sLog
    End Sub

    '************************************************************
    ' Test Pattern
    '************************************************************
    Public Sub ExecuteTest()
        Execute Include(".\sample_source\Sample1.vbs")

        '+++ Calc1 +++
        Call Test(Calc1(1, 2) = 3, "Calc1")
        Call Test(Calc1(3, 4) = 7, "Calc1")
        Call Test(Calc1(5, 6) = 7, "Calc1")
    End Sub
End Class

 ExecuteTest()メソッド内の1行目で、テストしたいVBSモジュールを指定します。

構文1
Execute Include(Extension)
  • Extension:VBSモジュールのパス

 次に、メソッドのテストケースを記述します。 テストケースは、Test()メソッドで記述します。

 Test()メソッドは、次のように指定します。

構文2
Test(TestCase, TestCaseName)
  • TestCase:テストケース
  • TestCaseName:テストケース名

 Test()メソッドは、パラメータに指定されたテストケースが真(True)となるように記述します。

 このサンプルをみると、「sample_source」フォルダにSample1.vbsというVBSがあります。このVBSには、Calc1()というメソッドがあります。Calc1()メソッドは、パラメータに指定された2つの値を加算します。

 ExecuteTest()メソッド内のテストケースでは、

テストケースのサンプル
Call Test(Calc1(1, 2) = 3, "Calc1")
Call Test(Calc1(3, 4) = 7, "Calc1")
Call Test(Calc1(5, 6) = 7, "Calc1")

 となっていますので、1行目は「1+2=3」で真、2行目も「3+4=7」で真(True)ですが、3行目は「5+6=7」となっていますので、偽(False)です(テストケースが正しいのなら、Calc1()メソッドは、「1+2=3」「3+4=7」「5+6=7」となるメソッドでなくてはならない)。

 テストファイルに記述されているテストケースが、VbsTester.vbsの実行によってテストされます。

メールの一例
件名: From VbsTester
本文:
Calc1 ---> OK
Calc1 ---> OK
Calc1 ---> NG
Calc2 ---> OK
Calc2 ---> OK
Calc2 ---> NG

5. まとめ

 VBScriptは、定型業務を自動化するバッチ処理として使用されることが多く、規模の大きい開発に使用されることは稀でしょう。そのため、わざわざテストケースを書くほどのことではないかも知れません。しかし、大勢の人の目に留まる機会があれば、きっと誰か使ってくださり貴重なフィードバックもいただけるのではないかと思い、今回紹介させていただきました。

 拙いツールではありますが、ご意見・ご要望がありましたら、「フリープログラミング団体 いかちソフトウェア」までご一報いただければ幸いです。

6. 参考資料

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
まだまだ使える! WSH連載記事一覧

もっと読む

この記事の著者

五十嵐貴之(イカラシ タカユキ)

1975年2月生まれ。新潟県長岡市(旧越路町)出身。フリープログラミング団体いかちソフトウェア所属。 著書・これならわかるSQL入門の入門(翔泳社)・Windows自動処理のためのWSHプログラミングガイド(ソシム)・いちばんやさしいデータベースの本(技術評論社)・SQLiteポケットリフ...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/9124 2016/04/09 17:59

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング