Вопрос

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

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

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

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

Мысли?

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

Решение

"Должны ли мы запустить скрипт в базе данных, который ищет сценарии, подобные описанным?"

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

нет.Никогда.Ни при каких обстоятельствах.Работа над ошибкой путем добавления специфической логики особого случая - действительно очень плохая идея.

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

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

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

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

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

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

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

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

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

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

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