SlideShare ist ein Scribd-Unternehmen logo
1 von 13
Downloaden Sie, um offline zu lesen
Raphael Groner 1 / 13
VoiceXML Test-FrameworkVoiceXML Test-Framework
Unit Testing von
sprachbasierten Applikationen
Projektvorstellung
Raphael Groner 2 / 13
Unit Testing
● Elementarer Bestandteil von TDD und BDD
● Wichtig für Extreme Programming und Scrum
● Standards und Normen, ISTQB®
● Komponententest (Entwickler)
● Integrationstest (Neue Idee!)
● JUnit → Assert… Methoden
Raphael Groner 3 / 13
VoiceXML
● Wozu? → Kommunikationstheorie
– Natürliche Sprache
– Interaktion Mensch – Maschine (per Sprache!)
● Eigener W3C Standard, basiert auf XML
– Version 2.1 ist aktuell
– Version 3.0 als Entwurf
● Deployment wie HTML
● Editoren, Generatoren
Raphael Groner 4 / 13
Einsatzgebiete
● Logistik: „Pick by Voice“
– Kommissionieren von Waren und Inventur im Lager
– Sprachgesteuerte Weisung von Arbeitskräften
– Kontrollen durch z.B. Abfrage von Prüfkennungen
● Auskunft per Telefon und Ansagen
– Fahrplan (z.B. Deutsche Bahn), Börse, Wetter, …
– Call Center: Häufig auftretende Prozesse (FAQ)
– Verkehrsleitung bei Navigationsgeräten
Raphael Groner 5 / 13
Frameworks
● Voxeo Phono (Javascript), Prophecy IVR Platform
● OpenVXI (C): BladeWareVXML, publicVoiceXML
● Voice-unit (Java, JUnit)
● JWebUnit, HtmlUnit, HttpUnit (web unit tests)
● Voice Prover, PAGI, Empirix Hammer
(Last/Penetration)
● SoftRobot (Systemtest)
Raphael Groner 6 / 13
VoiceXML + Java = JVoiceXML
● Verschiedene Implementierungen:
– Spracherkennung und -ausgabe, Gestiken
– JSAPI, JTAPI, Marc, Mary, Red5, Kinect, …
● Textschnittstelle (interface TextListener)
Methode Nachricht
started() Server gestartet
connected(InetSocketAddress) Verbindung hergestellt
outputSsml(SsmlDocument) Ausgabe (Parameterwert) empfangen
expectingInput() Bereit für eine Eingabe
inputClosed() Wartezeit für Eingabe überschritten
disconnected() Verbindung beendet
Raphael Groner 7 / 13
Anforderungsanalyse
Raphael Groner 8 / 13
Prototyp (Grobkonzept)
Raphael Groner 9 / 13
Automat
Raphael Groner 10 / 13
Beispiel - VoiceXML
<?xml version="1.0" encoding="UTF-8"?>
<vxml xmlns="http://www.w3.org/2001/vxml" version="2.1">
<form>
<field name="answer">
<grammar src="yesno.srgs" type="application/srgs+xml"/>
<prompt>Do you like this example?</prompt>
<filled>
<if cond="answer=='yes'">
You like this example.
<else/>
You do not like this example.
</if>
</filled>
</field>
</form>
</vxml>
Raphael Groner 11 / 13
Beispiel - TestCase
@Test
public void testInputYes() {
createConversation("yes");
supervisor.process();
}
@Test
public void testInputNoFail() {
createConversation("no");
boolean failed = false;
try {
supervisor.process();
} catch (AssertionFailedError e) {
failed = true;
}
Assert.assertEquals(true,failed);
}
private void createConversation(String answer) {
Conversation conversation = supervisor.init(call);
conversation.addOutput("Do you like this example?");
conversation.addInput(answer);
conversation.addOutput("You like this example.");
}
Raphael Groner 12 / 13
Geplante Erweiterungen
● Synchroner Durchlauf
● Cucumber für BDD
● Hamcrest für Pattern, XPath
● Checkstyle
● Simulation anderer Engines
Raphael Groner 13 / 13
Danke!
Fragen?Fragen?
http://www.jvoicexml.org
 voicexmlunit@email.de

Weitere ähnliche Inhalte

Ähnlich wie Projektvorstellung VoiceXML Test Framework

Klappe auf! Was macht die JVM denn da? [Ger]
Klappe auf! Was macht die JVM denn da? [Ger]Klappe auf! Was macht die JVM denn da? [Ger]
Klappe auf! Was macht die JVM denn da? [Ger]Tobias Frech
 
Bug bites elephant? Testgetriebene QS in der Big-Data-Entwicklung
Bug bites elephant? Testgetriebene QS in der Big-Data-EntwicklungBug bites elephant? Testgetriebene QS in der Big-Data-Entwicklung
Bug bites elephant? Testgetriebene QS in der Big-Data-Entwicklunginovex GmbH
 
GTD 2013 Stephan Wiesner - Wenn Tester Apps entwickeln
GTD 2013 Stephan Wiesner - Wenn Tester Apps entwickelnGTD 2013 Stephan Wiesner - Wenn Tester Apps entwickeln
GTD 2013 Stephan Wiesner - Wenn Tester Apps entwickelnSwissQ Consulting AG
 
10 Auswahlkriterien für PHP Frameworks
10 Auswahlkriterien für PHP Frameworks 10 Auswahlkriterien für PHP Frameworks
10 Auswahlkriterien für PHP Frameworks Ralf Eggert
 
Domain-Specific Languages (DSLs) entwickeln und anwenden
Domain-Specific Languages (DSLs) entwickeln und anwendenDomain-Specific Languages (DSLs) entwickeln und anwenden
Domain-Specific Languages (DSLs) entwickeln und anwendenRoland Ewald
 
Top 10 Internet Trends 2003
Top 10 Internet Trends 2003Top 10 Internet Trends 2003
Top 10 Internet Trends 2003Jürg Stuker
 
IfN Studienarbeit Abschlusspres 18.9.2007
IfN Studienarbeit Abschlusspres 18.9.2007IfN Studienarbeit Abschlusspres 18.9.2007
IfN Studienarbeit Abschlusspres 18.9.2007derDoc
 
Java & Notes - Mit Eclipse neue Features für Notes entwickeln | C.Habermueller
Java & Notes - Mit Eclipse neue Features für Notes entwickeln | C.HabermuellerJava & Notes - Mit Eclipse neue Features für Notes entwickeln | C.Habermueller
Java & Notes - Mit Eclipse neue Features für Notes entwickeln | C.HabermuellerChristian Habermueller
 
Maemo 5 Developer Workshop @ Metalab
Maemo 5 Developer Workshop @ MetalabMaemo 5 Developer Workshop @ Metalab
Maemo 5 Developer Workshop @ Metalabthp4
 
Framework Auswahlkriterin, PHP Unconference 2009 in Hamburg
Framework Auswahlkriterin, PHP Unconference 2009 in Hamburg Framework Auswahlkriterin, PHP Unconference 2009 in Hamburg
Framework Auswahlkriterin, PHP Unconference 2009 in Hamburg Ralf Eggert
 
Testmanagement mit Visual Studio 2013
Testmanagement mit Visual Studio 2013Testmanagement mit Visual Studio 2013
Testmanagement mit Visual Studio 2013Nico Orschel
 
A Day in the Life of a Bug --- sinnvoll zu Open Source Projekten beitragen
A Day in the Life of a Bug --- sinnvoll zu Open Source Projekten beitragenA Day in the Life of a Bug --- sinnvoll zu Open Source Projekten beitragen
A Day in the Life of a Bug --- sinnvoll zu Open Source Projekten beitragenRoland Ewald
 
Test-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der Zukunft
Test-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der ZukunftTest-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der Zukunft
Test-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der ZukunftChristian Drumm
 
Die sieben Projektphasen für Voice Projekte
Die sieben Projektphasen für Voice ProjekteDie sieben Projektphasen für Voice Projekte
Die sieben Projektphasen für Voice ProjekteRalf Eggert
 
Fortgeschrittene Techniken für erfolgreiche Sprachanwendungen
Fortgeschrittene Techniken für erfolgreiche SprachanwendungenFortgeschrittene Techniken für erfolgreiche Sprachanwendungen
Fortgeschrittene Techniken für erfolgreiche SprachanwendungenRalf Eggert
 
JBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source Java
JBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source JavaJBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source Java
JBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source Javacamunda services GmbH
 

Ähnlich wie Projektvorstellung VoiceXML Test Framework (16)

Klappe auf! Was macht die JVM denn da? [Ger]
Klappe auf! Was macht die JVM denn da? [Ger]Klappe auf! Was macht die JVM denn da? [Ger]
Klappe auf! Was macht die JVM denn da? [Ger]
 
Bug bites elephant? Testgetriebene QS in der Big-Data-Entwicklung
Bug bites elephant? Testgetriebene QS in der Big-Data-EntwicklungBug bites elephant? Testgetriebene QS in der Big-Data-Entwicklung
Bug bites elephant? Testgetriebene QS in der Big-Data-Entwicklung
 
GTD 2013 Stephan Wiesner - Wenn Tester Apps entwickeln
GTD 2013 Stephan Wiesner - Wenn Tester Apps entwickelnGTD 2013 Stephan Wiesner - Wenn Tester Apps entwickeln
GTD 2013 Stephan Wiesner - Wenn Tester Apps entwickeln
 
10 Auswahlkriterien für PHP Frameworks
10 Auswahlkriterien für PHP Frameworks 10 Auswahlkriterien für PHP Frameworks
10 Auswahlkriterien für PHP Frameworks
 
Domain-Specific Languages (DSLs) entwickeln und anwenden
Domain-Specific Languages (DSLs) entwickeln und anwendenDomain-Specific Languages (DSLs) entwickeln und anwenden
Domain-Specific Languages (DSLs) entwickeln und anwenden
 
Top 10 Internet Trends 2003
Top 10 Internet Trends 2003Top 10 Internet Trends 2003
Top 10 Internet Trends 2003
 
IfN Studienarbeit Abschlusspres 18.9.2007
IfN Studienarbeit Abschlusspres 18.9.2007IfN Studienarbeit Abschlusspres 18.9.2007
IfN Studienarbeit Abschlusspres 18.9.2007
 
Java & Notes - Mit Eclipse neue Features für Notes entwickeln | C.Habermueller
Java & Notes - Mit Eclipse neue Features für Notes entwickeln | C.HabermuellerJava & Notes - Mit Eclipse neue Features für Notes entwickeln | C.Habermueller
Java & Notes - Mit Eclipse neue Features für Notes entwickeln | C.Habermueller
 
Maemo 5 Developer Workshop @ Metalab
Maemo 5 Developer Workshop @ MetalabMaemo 5 Developer Workshop @ Metalab
Maemo 5 Developer Workshop @ Metalab
 
Framework Auswahlkriterin, PHP Unconference 2009 in Hamburg
Framework Auswahlkriterin, PHP Unconference 2009 in Hamburg Framework Auswahlkriterin, PHP Unconference 2009 in Hamburg
Framework Auswahlkriterin, PHP Unconference 2009 in Hamburg
 
Testmanagement mit Visual Studio 2013
Testmanagement mit Visual Studio 2013Testmanagement mit Visual Studio 2013
Testmanagement mit Visual Studio 2013
 
A Day in the Life of a Bug --- sinnvoll zu Open Source Projekten beitragen
A Day in the Life of a Bug --- sinnvoll zu Open Source Projekten beitragenA Day in the Life of a Bug --- sinnvoll zu Open Source Projekten beitragen
A Day in the Life of a Bug --- sinnvoll zu Open Source Projekten beitragen
 
Test-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der Zukunft
Test-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der ZukunftTest-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der Zukunft
Test-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der Zukunft
 
Die sieben Projektphasen für Voice Projekte
Die sieben Projektphasen für Voice ProjekteDie sieben Projektphasen für Voice Projekte
Die sieben Projektphasen für Voice Projekte
 
Fortgeschrittene Techniken für erfolgreiche Sprachanwendungen
Fortgeschrittene Techniken für erfolgreiche SprachanwendungenFortgeschrittene Techniken für erfolgreiche Sprachanwendungen
Fortgeschrittene Techniken für erfolgreiche Sprachanwendungen
 
JBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source Java
JBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source JavaJBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source Java
JBoss jBPM und Drools - Geschäftsprozesse und Regeln mit Open Source Java
 

Projektvorstellung VoiceXML Test Framework

  • 1. Raphael Groner 1 / 13 VoiceXML Test-FrameworkVoiceXML Test-Framework Unit Testing von sprachbasierten Applikationen Projektvorstellung
  • 2. Raphael Groner 2 / 13 Unit Testing ● Elementarer Bestandteil von TDD und BDD ● Wichtig für Extreme Programming und Scrum ● Standards und Normen, ISTQB® ● Komponententest (Entwickler) ● Integrationstest (Neue Idee!) ● JUnit → Assert… Methoden
  • 3. Raphael Groner 3 / 13 VoiceXML ● Wozu? → Kommunikationstheorie – Natürliche Sprache – Interaktion Mensch – Maschine (per Sprache!) ● Eigener W3C Standard, basiert auf XML – Version 2.1 ist aktuell – Version 3.0 als Entwurf ● Deployment wie HTML ● Editoren, Generatoren
  • 4. Raphael Groner 4 / 13 Einsatzgebiete ● Logistik: „Pick by Voice“ – Kommissionieren von Waren und Inventur im Lager – Sprachgesteuerte Weisung von Arbeitskräften – Kontrollen durch z.B. Abfrage von Prüfkennungen ● Auskunft per Telefon und Ansagen – Fahrplan (z.B. Deutsche Bahn), Börse, Wetter, … – Call Center: Häufig auftretende Prozesse (FAQ) – Verkehrsleitung bei Navigationsgeräten
  • 5. Raphael Groner 5 / 13 Frameworks ● Voxeo Phono (Javascript), Prophecy IVR Platform ● OpenVXI (C): BladeWareVXML, publicVoiceXML ● Voice-unit (Java, JUnit) ● JWebUnit, HtmlUnit, HttpUnit (web unit tests) ● Voice Prover, PAGI, Empirix Hammer (Last/Penetration) ● SoftRobot (Systemtest)
  • 6. Raphael Groner 6 / 13 VoiceXML + Java = JVoiceXML ● Verschiedene Implementierungen: – Spracherkennung und -ausgabe, Gestiken – JSAPI, JTAPI, Marc, Mary, Red5, Kinect, … ● Textschnittstelle (interface TextListener) Methode Nachricht started() Server gestartet connected(InetSocketAddress) Verbindung hergestellt outputSsml(SsmlDocument) Ausgabe (Parameterwert) empfangen expectingInput() Bereit für eine Eingabe inputClosed() Wartezeit für Eingabe überschritten disconnected() Verbindung beendet
  • 7. Raphael Groner 7 / 13 Anforderungsanalyse
  • 8. Raphael Groner 8 / 13 Prototyp (Grobkonzept)
  • 9. Raphael Groner 9 / 13 Automat
  • 10. Raphael Groner 10 / 13 Beispiel - VoiceXML <?xml version="1.0" encoding="UTF-8"?> <vxml xmlns="http://www.w3.org/2001/vxml" version="2.1"> <form> <field name="answer"> <grammar src="yesno.srgs" type="application/srgs+xml"/> <prompt>Do you like this example?</prompt> <filled> <if cond="answer=='yes'"> You like this example. <else/> You do not like this example. </if> </filled> </field> </form> </vxml>
  • 11. Raphael Groner 11 / 13 Beispiel - TestCase @Test public void testInputYes() { createConversation("yes"); supervisor.process(); } @Test public void testInputNoFail() { createConversation("no"); boolean failed = false; try { supervisor.process(); } catch (AssertionFailedError e) { failed = true; } Assert.assertEquals(true,failed); } private void createConversation(String answer) { Conversation conversation = supervisor.init(call); conversation.addOutput("Do you like this example?"); conversation.addInput(answer); conversation.addOutput("You like this example."); }
  • 12. Raphael Groner 12 / 13 Geplante Erweiterungen ● Synchroner Durchlauf ● Cucumber für BDD ● Hamcrest für Pattern, XPath ● Checkstyle ● Simulation anderer Engines
  • 13. Raphael Groner 13 / 13 Danke! Fragen?Fragen? http://www.jvoicexml.org  voicexmlunit@email.de