Как вы проводите стресс-тестирование своего собственного программного обеспечения?

Я сам работал над приложением, и я нахожусь на этапе, когда все отлично работает - пока пользователь делает все, что он или она должен делать.:-) Программное обеспечение нуждается в дополнительном тестировании, чтобы увидеть, насколько оно надежно, насколько хорошо оно работает, когда люди делают такие вещи, как неоднократное нажатие одной и той же кнопки, попытка открыть неправильный тип файлов, поместить данные в неправильные места и т. Д.

У меня есть небольшая проблема с этим, потому что мне немного трудно думать с точки зрения неправильного использования приложения. Это все крайние случаи для меня. Тем не менее, я бы хотел, чтобы приложение было как можно более стабильным и хорошо протестированным, прежде чем я начну давать его бета-тестерам. Предполагая, что я сейчас не говорю о найме профессиональных тестировщиков, мне любопытно, есть ли у вас какие-либо советы или систематические способы решения этой задачи.

Спасибо как всегда

3 ответа

Решение

Похоже, вы говорите о двух разных вещах: "Проверка работоспособности вашего приложения" и "Стресс-тестирование"(это название вашего вопроса)

Стресс-тестирование - это когда у вас есть веб-сайт, и вы хотите проверить, что он может одновременно обслуживать 100000 человек. Видя, как ваше приложение работает в условиях стресса. Вы можете сделать это несколькими способами, например, записав некоторые действия, а затем заставив несколько машин-агентов одновременно поразить ваше приложение.

Этот вопрос звучит больше как вопрос обеспечения качества. Вот для чего нужны тестеры / бета-тестеры. Но есть вещи, которые вы можете сделать сами, чтобы проверить, работает ли ваше приложение наилучшим образом.

Модульное тестирование вашего кода было бы хорошим началом, оно поможет вам попытаться найти эти крайние случаи. Если ваш метод принимает такие вещи, как int, попробуйте передать int.max, int.min и посмотреть, что взорвется. Передайте нули во все. Если вы используете.Net, возможно, вы захотите взглянуть на PEX, он будет проходить через все ветви / кодовые пути, которые есть в вашем приложении. Это может помочь вам улучшить ваши модульные тесты, чтобы протестировать ваше приложение как можно лучше.

Интеграционные тесты, посмотрите, что происходит от начала до конца для некоторых из ваших обычных вещей. Это поможет вам "находить ошибки" по мере разработки позже.

Это несколько быстрых советов о том, что вы можете сделать сами, чтобы найти наиболее подходящие случаи, которые вы, возможно, пропустили. Но да, в конце концов вам нужно будет передать свое приложение кому-то другому для тестирования. Просто убедитесь, что вы прикрыли как можно больше, прежде чем он попадет в них:-)

Убедитесь, что у вас есть достаточный охват кода в ваших модульных тестах и ​​интеграционных тестах.

Используйте соответствующую проверку пользовательского интерфейса и тестируйте комбинации, которые могут его сломать.

Я обнаружил, что хорошо спроектированное приложение, которое уменьшает количество возможных перестановок в пользовательском интерфейсе (способы, которыми пользователь может его сломать), очень помогает. Шаблоны проектирования, такие как MVC, могут быть особенно полезны в этом отношении, поскольку они делают ваш шпон UI максимально тонким.

Автоматизация.

(Re) Разложите код так, чтобы другая программа могла генерировать в нем пользовательские события. Создавайте простые сценарии пользовательских событий и воспроизводите их в своей программе. Захват событий от бета-пользователей и сохранение их в виде тестовых сценариев (полезно для воспроизведения проблем и проверки регрессий). Напишите fuzz-тестер, который применяет небольшие случайные изменения к сценариям, и попробуйте их также в отношении вашей программы.

С помощью этого вида автоматизации вы можете напрягать и прикладывать усилия, а также обнаруживать явные проблемы, такие как кеши и утечки памяти. Это не будет проверять фактическую функциональность. Для функциональности могут быть полезны юнит-тесты. Есть тонна фреймворков для модульного тестирования. Выберите что-нибудь полезное, научитесь писать хорошие тесты и интегрируйте их в процесс сборки.

Другие вопросы по тегам