Эротические рассказы

Кошмар разработчика: Ошибки, которые должен найти тестировщик. Артем ДемиденкоЧитать онлайн книгу.

Кошмар разработчика: Ошибки, которые должен найти тестировщик - Артем Демиденко


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

      Проиллюстрируем это на примере кода, отвечающего за расчет скидки:

      function calculateDiscount(price, discountPercentage) {

      ....return price – (price * discountPercentage / 100);

      }

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

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

      let totalAmount = Math.round(calculateTotal(prices) * (1 – discount));

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

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

      for (let i = 0; i < itemCount; i++) {

      ....totalCost += calculatePrice(items[i]);

      }

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

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


Скачать книгу
Яндекс.Метрика