Typically a software company will release a beta version of their product (a few months to a few weeks before production release, depending on the size and complexity of the product). These beta versions might have metrics built-in to monitor and report to a server the performance of the application relative to the system specs. That, or they will simply rely on these beta testers to report back faithfully with their system specs and perceived performance.