Ferni Developers
Open Console
Developer Blog

Week 3: Testing, Deployment, and Going to Production

Week 3: Testing, Deployment, and Going to Production

You've built your voice AI. Now let's ship it.

Week 3 is all about production readiness.

Monday: Unit Testing Voice Agents

Testing voice AI is different. You can't just assert on strings.

// Preview: Testing conversation flows
describe('booking flow', () => {
  it('handles ambiguous dates gracefully', async () => {
    const session = createTestSession();

    await session.say("Book a flight for next weekend");

    expect(session.response).toMatch(/Saturday.*Sunday/);
    expect(session.state.clarificationNeeded).toBe(true);
    expect(session.intent).toBe('booking.clarify_dates');
  });
});

We'll cover:

  • Mocking voice input/output
  • Testing conversation state machines
  • Fuzzy matching for natural language
  • Snapshot testing for prompts

Tuesday: Integration Testing with Mock Voices

End-to-end testing without hitting production APIs:

// Preview: Full conversation simulation
const simulator = new VoiceSimulator({
  mockSTT: true,
  mockTTS: true,
  mockLLM: 'deterministic',
});

const result = await simulator.runConversation([
  { user: "What's my account balance?" },
  { expect: { intent: 'account.balance', tool: 'get_balance' } },
  { user: "Transfer fifty dollars to savings" },
  { expect: { intent: 'transfer', confirmation: true } },
  { user: "Yes, confirm" },
  { expect: { success: true } },
]);

Wednesday: Changelog

Automated release notes from the week's deployments.

Thursday: Deployment Patterns

Zero-downtime deployments for voice services:

# Preview: Blue-green deployment
deployment:
  strategy: blue-green
  healthCheck:
    endpoint: /health
    interval: 5s
    threshold: 3
  rollback:
    automatic: true
    trigger: error_rate > 1%

Topics:

  • Blue-green deployments
  • Canary releases
  • Feature flags for voice
  • Rollback strategies

Friday: Production Monitoring

What to watch when your voice AI goes live:

// Preview: Key metrics
const metrics = {
  // Latency (p50, p95, p99)
  'voice.response_latency': histogram(),

  // Success rates
  'voice.completion_rate': gauge(),
  'voice.intent_success_rate': gauge(),

  // User experience
  'voice.retry_rate': counter(),
  'voice.escalation_rate': counter(),

  // Business metrics
  'voice.task_completion': counter(),
  'voice.user_satisfaction': gauge(),
};

Saturday: Scaling Voice AI

From 10 users to 10,000:

  • Horizontal scaling strategies
  • Connection pooling
  • Geographic distribution
  • Cost optimization

Sunday: Month 1 Recap

What we've covered:

  • Platform fundamentals
  • Authentication & security
  • Performance optimization
  • Testing & deployment

And a preview of Month 2: Advanced integrations.


This Week's Highlights

In case you missed them:


Get Involved

  • Join Discord: discord.gg/ferni
  • Contribute: We're looking for community writers
  • Feedback: What topics should we cover? Reply in Discord

See you Monday!