Как справиться с такими сценариями? - PullRequest
0 голосов
/ 09 марта 2010

Когда разрабатывается программное обеспечение, выполняются различные типы тестирования - модульное, интеграционное, функциональное, ручное. В моем текущем проекте (winforms с sql server), в котором есть устаревший код (без тестов), у нас действительно много ошибок , Мы пытаемся удалить их, используя комбинацию ручных + тестов (в основном интеграция)

Но все же некоторые ошибки могут уйти.

Например (гипотетический сценарий) - если покупатель приобрел какую-то сумму товара за последние 6 месяцев, ему должна быть предоставлена ​​некоторая скидка на покупки, которые он совершает по истечении 6 месяцев. Его статус должен быть обновлен до привилегии.

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

Мысли

Ответы [ 2 ]

1 голос
/ 09 марта 2010

«Если у нас в базе данных запущен скрипт, который ищет сценарии, подобные описанным?»

Вы имеете в виду «поместить скрипт в базу данных, чтобы исправить проблему», тогда нет .

NO.Никогда.Ни при каких условиях.Обойти ошибку, добавив своеобразную логику для особых случаев, на самом деле очень плохая идея.

  1. Когда эта особенная логика особого случая имеет свои собственные ошибки, вы добавили ошибочный код, чтобы попытаться исправить ошибочный код.Чистый убыток.

  2. Когда вы пытаетесь улучшить систему, у вас есть эта особая логика особого случая, которая не имеет никакого смысла.

    а.Если вам повезет, вы исправили ошибку, которую он должен был обойти, и она будет избыточной.Что теперь?Какую копию удалить?

    b.В противном случае это будет противоречить другому коду.Что теперь?Что правильно?

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

Если вы имеете в виду «написать скрипт в базе данных для тестирования приложения», тогда да.Вот для чего нужны скрипты модульного тестирования.Используй их.

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

0 голосов
/ 09 марта 2010

У вас должен быть автоматизированный набор тестов. Этот набор тестов будет реализовывать все сценарии, которые требуются в спецификации. Так как нельзя ждать шесть месяцев, чтобы проверить, работает ли дисконтирование, фактическая реализация заменяется реализацией mock (пример в java, но те же принципы применяются в других языках), которая, например, "имитирует «что прошло 6 месяцев. Можно использовать утверждения для автоматизации тестов.

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

...