2016-12-27 38 views
6

Pracuję teraz nad moim pierwszym botem z Microsoft Bot Framework, z ASP.NET.Auto testowanie dla Microsoft Bot Framework

Po ręcznym testowaniu emulatora bota, szukam najlepszej metody tworzenia automatycznego testowania bota.

Biorąc pod uwagę dwa problemy:

  1. Co jest najlepszym narzędziem do automatyzacji takich testów?
  2. Jaka jest najlepsza metoda testowania okna dialogowego, które może zwrócić różne odpowiedzi na to samo wejście?

Odpowiedz

7

Jedną z alternatyw jest wykonywanie testów funkcjonalnych za pomocą linii DirectLine. Ograniczeniem jest to, że bot musi być hostowany, ale jest potężny. Sprawdź numer AzureBot tests project, aby zobaczyć, jak to działa.

Inna alternatywa, robi to, co zespół BotFramework robi dla niektórych testów jednostkowych.

Jeśli korzystasz z Okna dialogowego, możesz spojrzeć na numer EchoBot unit tests, ponieważ są one łatwe do naśladowania.

Jeśli używasz łańcucha, sprawdź, jak używają metody AssertScriptAsync.

Jeśli szukasz sposobu na makiety Luis serwisowym, patrz this.

+0

Rzeczywiście ten link https://github.com/Microsoft/BotBuilder/tree/master/CSharp/Tests/Microsoft.Bot. Sample.Tests lepiej jest pokazać testowanie jednostkowe, ponieważ zawiera kilka rzeczywistych przykładów. – OmG

3

Być może zechcesz wziąć pod uwagę Selenium. Selenium to oprogramowanie do automatyzacji przeglądarki internetowej umożliwiające pisanie testów, które programowo odczytują i zapisują w DOM strony internetowej. Ze skryptu selenu można:

  • logowania na każdym kanale, który dostarcza klientowi internetowej (i większość z nich zrobić: webchat, Telegram, Skype, Facebook, na przykład)
  • rozpocząć rozmowę z botem
  • wykonuj operacje takie jak wysłanie wiadomości na czat i poczekaj na odpowiedź
  • sprawdź, czy odpowiedź jest zgodna z oczekiwaniami.
1

Do zautomatyzowanego testowania botów w Node.js, używanie ConsoleConnector w taki sam sposób jak testy w BotBuilder na GitHub działa dobrze, np. spojrzeć na https://github.com/Microsoft/BotBuilder/blob/master/Node/core/tests/localization.js:

var assert = require('assert'); 
var builder = require('../'); 

describe('localization', function() { 
this.timeout(5000); 
it('should return localized prompt when found', function (done) { 
    var connector = new builder.ConsoleConnector();  
    var bot = new builder.UniversalBot(connector); 
    bot.dialog('/', function (session, args) { 
     session.send('id1'); 
    }); 
    bot.on('send', function (message) { 
     assert(message.text === 'index-en1'); 
     done(); 
    }); 
    connector.processMessage('test'); 
}); 

... etc ...