Ivrtesting
Ivrtesting
uk/#/
When you are developing functionalities related to IVR (Interactive Voice Response) workflows,
the manual testing process seems nice the first three times. However, when fixing or adding new
settings starts taking more time, one remembers why programmers hate talking on the phone and
prefer to do everything through e-mails. So, here is a solution that makes automation possible.
We all agree that a repetitive task, which requires too much time, drains the energy from the doer.
So, we need an automatic way to test longer or tedious IVR workflows and use this time and
energy for other tasks.
The tool
SIPp is an Open Source testing tool based on SIP (Session Initiation Protocol) protocol generally
used for stress tests. It can emulate call flows in both directions, from UAC (User Agent Client)
to UAS (User Agent Server) or UAS to UAC. A powerful advantage of this tool is that it can
send audio or video RTP (Real-Time Transport Protocol) traffic through RTP echo and
RTP/pcap replay. The tools uses XML files to generate custom calls scenarios in which you can
register a SIP user to either call another user or interact with an IVR.
Context
In order to move along this post, we need to be acquainted with the concepts of SIP messages
sequence. We do not aim to fully explain how PBX and SIP protocols work, but it is important to
mention that SIP is a protocol designed for signaling and controlling multimedia sessions. SIP is
not a transport protocol: it only sends text messages based on HTTP elements and uses
complementary SDP (Session Description Protocol) and RTP to transmit media streams.
For interacting with IVR, we must be able to emulate DTMF (Dual-tone multi-frequency
signaling) signals. With DTMF, each key pressed on your phone or softphone generates tones,
which are made up of adding two specific frequencies.
There are two ways to do that:
By using this, it becomes more flexible to generate a specific sequence of tones or capture all
individual tones and reproduce a sequence tone by tone.
Step 2: Configurations
<!– OK –>
<recv response=”100″ optional=”true”/>
<recv response=”200″ rtd=”true” />
v=0
o=intraway 0 0 IN IP[local_ip_type] [local_ip]
s=intraway
c=IN IP[local_ip_type] [local_ip]
t=0 0
m=audio [media_port] RTP/AVP 8
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-11,16
]]>
</send>
v=0
o=intraway 0 0 IN IP[local_ip_type] [local_ip]
s=intraway
c=IN IP[local_ip_type] [local_ip]
t=0 0
m=audio [media_port] RTP/AVP 8
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-11,16
]]>
</send>
]]>
</send>
<nop>
<action>
<exec play_pcap_audio=”pcap/1.pcap”/>
</action>
</nop>
<!– OK –>
<recv response=”200″ rtd=”true” crlf=”true” />
</scenario>
● -i: Use this IP for Contact:, Via: and From: message headers.
● -sf: Indicates scenario filename to be used on execution.
● -inf: Injects values from an external CSV file during calls into the scenarios.
● -aa: Enables automatic 200 OK answer for INFO, UPDATE and NOTIFY messages.
● -m: The number of processed calls to end the execution.
● -l: Sets the maximum number of simultaneous calls.
If we want to view all SIP messages involved during the test, we only need to
add -trace_msg before <pbx_ip>.
In some OS, superuser privileges are required to create or bind raw socket to send RTP packets.
Getting DTMF signals is not a problem: you can obtain all tones separately – which implies a
more flexible use in other scenarios, or capture an entire input for a specific test. For example,
when activating TV services using a smartcard ID, we can either send each tone isolated or as a
whole capture.
SIPp also allow us to know how complex the flow call is. We can see how long a call lasts or
how many inputs were needed to perform an action, helping us to come up with better ways to
improve the flow.
R feature testing confirms that the IVR system does what it claims to
do and is consistent with the design, typically a Voice User Interface
(VUI) or Visio flowchart. For example, when a customer calls to get
assistance with a particular problem, they're presented with an IVR
system that tells them, through menu options, to say a specific
number that corresponds to their inquiry. When a complete “dialog
traversal” is executed, every possible scenario or route through the
IVR is run. If an IVR menu only offers options 1, 2, and 3, a
comprehensive test also confirms that the IVR responds appropriately
if the caller enters 4 through 9, 0, *, #, or even no input at all.
Comprehensive feature testing is a requirement for any new IVR
application and many companies also validate every possibility
whenever they make any changes in their IVR system. An automated
feature testing process is far more effective and efficient than manual
testing. Automated testing enables more frequent application releases
that are fully vetted before customer traffic hits them.
Verification:
Speech recognition can only do so much, and not all caller inquiries or
problems can be resolved by an IVR system. When a call needs to be
transferred to an agent or a different department, it's important to test
whether it's going to the right area. For example, credit card
payments, and details are security sensitive, and need to be handled
in the correct area.
Correct language:
In this global market, it's important that IVR automation encompasses
a broad selection of languages, and can be tested properly to ensure
that they work with all users.
IVR workflow:
In-depth testing is needed for all end flows in the system, and it's
crucial to validate that all prompts are related to the correct flow. All
too often a customer is misdirected and ends up hearing prompts
unrelated to their initial inquiry. For example, if a caller has lost a credit
card or wants to report a debit or credit card stolen, this is
time-sensitive and serious. The IVR needs to play the prompt related
to that issue so that it can be resolved quickly, or risk serious
ramifications.