2. About me
- Rubyist from Italy
- Voice Application
Developer at Mojo
Lingo
venerdì 1 marzo 13
3. ADHEARSION
DICTATION CARRIER
APPLICATIONS CALL APPS
CENTERS CRM
CUSTOMER SUPPORT
ARE
TRANSLATION FUN
DISTRIBUTED
C O M M U N I C A T I O N S
S C H E D U L I N G AND
CONVERGENCE
USEFUL
venerdì 1 marzo 13
9. Our goals for unit
testing:
- Confidence at the class level
- Prevent regression errors
- Promote proper code structure
- Provide CI with something to help us with
venerdì 1 marzo 13
10. Unit testing Ahn apps
- Call Controllers are an application’s core
- RSpec recommended
- Mock at the controller level
- Support classes are just Ruby!
venerdì 1 marzo 13
11. Adding RSpec
- Generated apps are
Gemfile: RSpec ready
group :test do
gem 'rspec'
- Your choice of mocking
end
framework
- Just bundle install
venerdì 1 marzo 13
12. Spec File
require 'spec_helper'
describe DemoController do
let(:mock_call) { mock 'Call' }
subject do
DemoController.new mock_call
end
let(:dtmf) { "1" }
it "should answer, ask for a result, and say it" do
subject.should_receive(:answer).once
subject.should_receive(:ask).with("What is your favorite number?", :timeout =>
10000, :limit => 1).once.and_return(dtmf)
subject.should_receive(:say).with("Your favorite number seems to be #{dtmf}")
subject.run
end
end
venerdì 1 marzo 13
13. Our controller
class DemoController < Adhearsion::CallController
def run
answer
result = ask "What is your favorite number?", :timeout =>
10000, :limit => 1
say "Your favorite number seems to be #{result}"
end
end
venerdì 1 marzo 13
18. ...but here comes
some help!
SIPp
ahn-loadbot
PJSUA
venerdì 1 marzo 13
19. SIPp...
... is about as user friendly as the above lion.
venerdì 1 marzo 13
20. SIPp (seriously)
- http://sipp.sourceforge.net/
- Free and OSS Test tool and traffic
generator
- Can run XML scenarios defined by the user
- Can play audio and interact
- Requires good knowledge of SIP
venerdì 1 marzo 13
21. SIPp sample run
sudo sipp -sn uac -s 1 -l 10 -r 5 -m 100 127.0.0.1
- Built-in scenario
- Audio is PCAP, raw network capture of an
RTP session
- In custom scenarios, PCAP files are built
with Wireshark/tcpdump
- Ability to set call rate, concurrent calls,
maximum number of calls, many other
options
venerdì 1 marzo 13
22. SIPp options
- -trace_err gives you an error log
- -trace_stat outputs a CSV report
- -rtp_echo echoes RTP back to the source
- An XML scenario file can play PCAP, pause,
and perform general call control
venerdì 1 marzo 13
24. Friendly
Neighborhood Robot
venerdì 1 marzo 13
25. The LoadBot
- https://github.com/mojolingo/ahn-loadbot
- Adhearsion 1 plugin
- Drives calls though an Asterisk server
- Can simulate a call, listen for audio, and
record results
- Metrics that can be used: duration of calls,
ASR for presence of audio
venerdì 1 marzo 13
26. Loadbot scenario
config:
agi_server: 127.0.0.1
prefix: SIP/mycarrier
plans:
plan 1:
number: 1231231234
answers:
- 1
- Can be driven through DRb or directly
through the Ahn1 API
venerdì 1 marzo 13
29. PJSUA at a glance
- Can make single or multiple connection to
SIP server
- Can auto-answer, play audio, and record
- Suitable for test support
- Also is a handy tool for QoS
- Does not run a “true” scenario
venerdì 1 marzo 13
31. Functional
takeaways
- Set a specific goal for each scenario
- Take advantage of CDR and APIs to do
integration testing
- Less automated than web functional testing
venerdì 1 marzo 13
34. Load Testing is...
- Running a high amount of concurrent calls
- Decide what you are looking for
- Tool of choice, SIPp or Loadbot
venerdì 1 marzo 13
35. Load testing metrics
- Failed calls
- Average call times getting too long
- Exception tracking, not everything happens
visibly
venerdì 1 marzo 13
36. Thank you!
http://mojolingo.com
https://github.com/polysics
Twitter: lucaprado
XMPP and Email: lpradovera@mojolingo.com
...and please...
NO MAKE KITTY SAD
...go rate my talk at
http:/spkr8.com/17421
venerdì 1 marzo 13