Как использовать автоматизацию для тестирования приложений, включающих очень сложные вычисления?

StackOverflow https://stackoverflow.com/questions/545842

Вопрос

Я хочу выполнить следующие действия для тестирования приложения, включающего сложные вычисления:

  1. Как использовать инструменты автоматизации тестирования для расчетов тестирования? (с помощью инструментов автоматизации, таких как QTP, или инструментов с открытым исходным кодом)
  2. Как определить покрытие при тестировании расчетов, как разработать тестовые примеры?

Заранее спасибо, Тестманн

Это было полезно?

Решение

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

У нас был код на C#, выполняющий ОЧЕНЬ сложные вычисления.Итак, мы написали тестовую программу в FitNesse, а затем предоставили ей множество тестовых данных.Мы очень усердно работали, чтобы охватить все случаи, поэтому использовали своего рода внутреннюю таблицу истинности, чтобы гарантировать получение всех возможных комбинаций входных данных.

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

Другие советы

Иногда вам нужно оценить ожидаемый результат, а затем заполнить тестовый пример на основе запуска программы.

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

А для покрытия?Охватите каждую ветвь хотя бы один раз (то есть любые операторы if или цикла).Покройте каждый порог, обе стороны от него (для целочисленного деления это будут -1, 0 и 1 в качестве знаменателей).Затем добавьте еще несколько для пущего удобства.

Чтобы протестировать существующий код, вы должны предположить, что он (в основном) корректен.Итак, вы просто передаете ему некоторые данные, запускаете его и записываете результат.Затем используйте этот записанный результат в тестовом примере.

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

Таким образом, вы можете накопить знания о неизвестной системе.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top