Load testing: Use cases

This initial effort is to discuss use cases and come up with load testing scenarios.
A code repository with a load testing tool will be setup soon.

Load testing: Simulation of system performance when subjected to various use cases, usually done to estimate system requirements.

Disclaimer: This page is intended to guide load testing and capacity estimation efforts for FreedomBox deployments. This is not a promise that the FreedomBox development team will load test every case. A guide and a bootstrap code repository for your own load testing might be provided.

The use cases discussed below only have relevance for load testing. This is not general enough to guide the writing of user stories (see user personae on the wiki).

User Classification

Three kinds of users are considered here - basic, average and power.
This classification is based on how much of the server’s resources they expend.
Resource expenditure on clients is irrelevant. For example, a power user of spreadsheets who is simply syncing a spreadsheet to the server using Syncthing is considered an average user.

Basic users

A basic user

  • uses the apps that someone has installed for them
  • needs to be introduced to new apps
  • mostly uses the one primary feature of the apps that they have
  • gradually discovers other major features over time or with help
  • might use the primary features of one or two apps heavily
  • might use apps less efficiently because of lack of technical knowledge
  • might use a less efficient app for a given purpose
    an extreme case of this is learning only one app and using it for everything!
    • e.g. using a Matrix channel as a shared drop box for files
    • e.g. creating a Matrix channel instead of sending an email to multiple recipients
  • is usually not an administrator on their FreedomBox

Average users

An average user

  • knows which app to use for what purpose
  • might have administrator access
  • knows most of major features of a few apps that they use
  • mostly uses client apps
  • doesn’t use the FreedomBox web interface often even if they’re an administrator
  • likes to set it up once and forget about it

Power users

A power user

  • may or may not have administrator access
  • knows almost all the features of their FreedomBox server
  • uses most of the apps available to them
  • reads the manual pages of the apps they use
  • explores and finds obscure features
  • knows advanced use cases that require wiring up multiple apps
    e.g. sharing Transmission downloads using a Samba share

System administrators

A user who has system administration skills, who can manually install additional apps and can perform advanced customization. Mostly relevant to community deployments.

Assumptions:
In general, a user with more knowledge is expected to produce more load on server, except when apps are used inefficiently or for the wrong purposes.
A FreedomBox administrator is expected to be an average user or above.

Use cases

Home server

In this use case, only a single-digit number of users are expected to be accessing the FreedomBox server at any given time. However, each user might be using multiple client devices.

This use case is expected to have one administrator user.

Single user

This user is also the administrator of the FreedomBox server. This use case is characterized by low concurrent access. A person is expected to be using only one or two FreedomBox applications at the same time. Some client apps like Riot or Syncthing could be syncing in the background.

Family

One or more average/power user and basic users.
Multiple people accessing apps at the same time.
Surges during certain periods.
8 to 15 devices connected to the FreedomBox.

Community server

See the WikiBook for a good overview of this use case.

Foreground access: A large number of users might be accessing any number of applications at the same time.

Background access: Multiple client devices might be accessing multiple applications running on the FreedomBox community server in the background.

Community use cases usually have multiple administrators.

Village

This use case has already been tried out in Indian villages.

The people who do the deployments are at a system administrator level but they don’t stay in the village.
Most users in this use case are basic users. Villages usually have only a school and no college. Hence the number of average and power users is low.

Most users in this use case have a low-end smartphone as their only computer. Only schools and offices have desktop PCs.

Most used applications:

  • Audio calls
    • surge during the evenings
  • Music streaming
    • while working during the day
  • Video streaming
    • this is the most expensive use case in terms of network bandwidth and server capacity

Small community

A small privacy-conscious community who deployed a community FreedomBox server for their own use.
One or more system administrators maintain the installation. Most users are expected to be in the basic and average groups.

Communities usually adopt FreedomBox to use a single big application like MediaWiki or Matrix Synapse. They might discover and use other apps over time.

University

Most users are young and tech-savvy. Most users are average with a few power users and a handful of system administrators.

(will add my findings in March 2020)


A college of engineering or a hackerspace might be the most extreme use case in terms usage of server resources.