Вы говорите о двух разных вещах:
Тестирование дефектов и юзабилити.
Или я думаю, что вы можете быть. Другие ответы касаются тестирования дефектов, ваш подход звучит как тестирование юзабилити - или сочетание того и другого.
Тестирование дефектов - это поиск ошибок в вашем коде. Другие люди ответили об этом:
- Есть юнит-тесты, но не полагайтесь на них
- Пользовательское тестирование - во-первых, вами. Подумайте о своем коде и о том, что может его сломать. Нажмите на элементы управления, вставьте миллион строк текста в ваши правки
- Пусть другие люди, которые не знакомы с кодом, используют приложение
- использовать инструменты типа ObjectAlloc и clang для поиска нефункциональных дефектов
По-моему, тестирование - это не инструменты, а отношение. Как сильно вы ищете дефекты и насколько честно вы сообщаете о своих собственных дефектах.
У вас также должна быть хорошая система отслеживания дефектов, чтобы держать их под контролем.
Юзабилити-тестирование сложнее. Люди не понимают свой собственный мыслительный процесс при взаимодействии с программным обеспечением.
Хороший (дешевый) подход - дать софтвара своему другу, а затем попросить его сказать вслух то, что он думает. Затем вы получаете сообщения типа «Я вижу этот экран, но я не знаю, что нажимать (вам нужно добавить справку или подсказки). Я не уверен, что это сработало (нужно добавить отзыв). И т.д.
Вы можете купить очень сложные инструменты, чтобы помочь с пользовательским тестированием, но этот подход далек от этого.