Есть ли хитрость для такого рода испытаний?
Вы сказали: «У нас есть тестеры, которые проводят ежемесячные регрессионные тесты по несколько часов в одном приложении каждый месяц, чтобы быть в курсе небольших проблем».
Я предполагаю, что под "регрессионным тестированием" вы подразумеваете "ручное использование старых функций".
Вы должны решить, ищите ли вы старые ошибки, которые никогда не были обнаружены ранее (что означает запуск тестов, которые вы никогда раньше не выполняли); или , повторяете ли вы ранее выполненные тесты, чтобы убедиться, что ранее протестированная функциональность не изменилась. Это две противоположные вещи.
«Регрессионное тестирование» означает для меня, что вы делаете последнее.
Если проблема заключается в том, что «клиенты находят несколько старых проблем с нашим программным обеспечением», то либо ваши клиенты проводят тесты, которые вы никогда раньше не выполняли (в этом случае, чтобы найти эти проблемы, вам нужно запустить new тесты старого программного обеспечения), или они находят ошибки, которые вы имели , ранее проверенные и найденные, но которые вы, очевидно, никогда не исправляли после того, как нашли их.
Нужно ли указывать одну конкретную функцию за раз?
Что вы пытаетесь сделать, именно:
- Нашли ошибки до того, как клиенты их найдут?
- Убедите клиентов, что с новой новой разработкой все в порядке?
- Потратьте как можно меньше времени на тестирование?
Очень общий совет заключается в том, что жуки живут в семьях: поэтому, когда вы найдете жука, найдите его родителей, братьев и сестер и двоюродных братьев, например:
- Возможно, у вас точно такая же ошибка в других модулях
- Этот модуль может работать с ошибками по сравнению с другими модулями (возможно, написанными somone в выходной день), поэтому поищите все другие ошибки в этом модуле
- Возможно, это одна из класса проблем (проблем с производительностью или проблем с нехваткой памяти), которая предлагает целую область (или целый тип требований), которая нуждается в улучшенном тестовом покрытии
Другой совет заключается в том, что это связано с управлением ожиданиями клиентов: вы сказали: «Похоже, что в каждом выпуске есть множество ошибок, тогда как на самом деле наш новый код в целом надежен», как если бы реальной проблемой было ошибочное восприятие, ошибка недавно написана.
это похоже на очень запоздалый процесс, так как всегда есть новый код для записи
Разработка программного обеспечения не происходит в фоновом режиме, на заднем плане: либо кто-то работает над этим, либо нет. Руководство должно решить, следует ли назначать кого-либо для выполнения этой задачи (то есть искать существующие ранее обнаруженные ошибки или исправлять ранее обнаруженные, но еще не обнаруженные ошибки), или же они предпочитают сосредоточиться на новой разработке и позволить клиенты обнаруживают ошибки.
Редактировать: Стоит отметить, что тестирование - не единственный способ найти ошибки. Там же:
- Неофициальные отзывы о дизайне (35%)
- Формальные проектные проверки (55%)
- Неофициальные коды отзывов (25%)
- Официальные проверки кодов (60%)
- Персональная проверка кода (40%)
- Юнит тест (30%)
- Проверка компонентов (30%)
- Интеграционный тест (35%)
- Регрессионный тест (25%)
- Системный тест (40%)
- Бета-тест малого объема (<10 сайтов) (35%) </li>
- Бета-тест большого объема (> 1000 сайтов) (70%)
Процент, который я ставлю рядом с каждым, является мерой скорости устранения дефектов для каждого метода (взят со страницы 243 книги Макконнела Оценка программного обеспечения ). Похоже, что двумя наиболее эффективными методами являются формальная проверка кода и бета-тестирование большого объема.
Так что, возможно, было бы неплохо ввести формальные проверки кода: это могло бы быть лучше при обнаружении дефектов, чем тестирование черного ящика.