
Overview
Concurrency quality is the ability to complete multiple tasks reasonably in parallel, including similar or different tasks and either single or multiple users. Concurrency quality derives simultaneous functionality and is important as certain operations may block other operations or software may only be designed to allow users to perform one operation at a time. This can severely limit the usefulness and value of an application. Concurrency quality can relate to performance quality, in particular load testing, however they’re not the same thing. While the latter can involve performing multiple concurrent user operations, it’s ultimately about deriving value from low wait times and system resource usage, whereas concurrency quality as a dimension described here is about the design and architecture of the application and its capability to perform multiple concurrent operations, for example, via capability to perform long-running background tasks or use of threading.Metrics
Key supporting metrics may include:- What functionalities can and cannot be performed in parallel with other functionalities producing a matrix-score.
Example
An application that allows multiple large files to be uploaded to a system. The user wants to upload many files, and while one file it uploading, they can go and find more files to add to the queue or perform other operations in the application while it’s doing so. They don’t need to wait until the file upload operation has been completed. Other users can also log onto the system and upload their own files, and while it may cause a performance slow down, they don’t have to wait until the other user has finished, the software allows multiple simultaneous uploads while users can also go off and do other things. Examples of threats to concurrency value include:- Fore/background: an application doesn’t allow long-running tasks to be performed in the background
- Blocking: One operation may prevent many others from being performed until complete, including from different users
- Threads: Lack of multi-threading in software server operations preventing concurrent operations and performance issues
Methods
Heuristics to test for concurrency quality may include:There are currently no methods listed