REL 3: How are you testing the multi-tenant capabilities of your SaaS application?

Introduce automated testing that exercises and validates use cases specific to multi-tenant workloads. Focus on simulating tenant workloads and user experiences that are essential to the stability of your multi-tenant architecture.

Resources

Testing SaaS Solutions on AWS

Best Practices:

Improvement Plan

Validate “noisy neighbor” scale and availability

  • Create tests that simulate various noisy neighbor tenant scenarios for various tenant personas, validating that availability policies are successfully applied to different tenant profiles and tiers.
  • Validate that the noisy neighbor tests exercise the throttling and scaling policies of your system, ensuring that individual tenants won’t impact the availability of your system.
  • Validate that the SLAs associated with tenant tiers are enforced by the SLA and scaling policies of your system.
  • For systems that have public APIs, validate that tenants cannot saturate the API and impact the availability of your system.
  • Validate tenant isolation

  • Create tests to verify that the application is enforcing the tenant isolation policies of your system. These tests should search for potential opportunities to subvert the isolation model and ensure that misbehaved users cannot cross a tenant boundary.
  • Inject tenant tokens that attempt to simulate a SaaS identity.
  • For applications that are using shared libraries or frameworks to enforce isolation across the system, introduce tests to exercise these frameworks and validate that they accurately apply tenant isolation policies.
  • Create tests that attempt to change the tenant context by injecting a new tenant identifier. Verify that the injection is blocked from crossing a tenant boundary.
  • Exercise key workflows under multi-tenant load

  • Create tests that validate that key workflows of your system respond effectively to the continually evolving load profile of your multi-tenant environment.
  • Simulate multi-tenant load patterns for key system workflows, ensuring that tenant experience and SLAs are not impacted during different scaling states.
  • Validate that the SLAs continue to be met even as the system is scaling up or down to meet the demands of a shifting multi-tenant load.
  • Validate the scale and repeatability of tenant onboarding

  • Enable operations to configure tenant alerts and alarms
  • Create tests to validate that the automation of onboarding is successfully provisioning new tenants with the appropriate infrastructure, configuration, isolation policies, identity footprint, and so on.
  • For systems with specific onboarding SLAs, introduce tests that verify that the onboarding of various tenant configurations will meet your target onboarding SLA requirements.
  • For systems that require tenant validation as part of onboarding, create tests that exercise this validation process and ensure that messaging and first-time entry of the tenant function as required.
  • Ensure that tenancy configuration changes are successfully propagated

  • Create tests to validate that changes in a tenant’s state are properly applied to the running system.
  • Validate that the disabling and reenabling of tenants is successfully enforced as tenants attempt to access your system.
  • Validate that changes to a tenant’s tier is successfully detected and applied to the system, enabling or disabling access to capabilities associated with the tier boundary.
  • Introduce tests that ensure that the limits and policies associated with each tenant tier are being enforced by the system.
  • Validate that deleted tenants are correctly processed by the system (decommissioned, data archived, etc.)