Software testing may be done with separate parts of the software, with a group of these parts, or with the entire software. Software testing may be done by allowing the software to be used by a small number of people who the software is meant for, under controlled settings. It is then tested with a larger group of people under less controlled settings (beta testing).