Основы модульного тестирования в разработке программного обеспечения
16 мая 2022 г.Тестирование кода — важная часть процесса разработки программного обеспечения. Это должно подтвердить, что ваш код ведет себя так, как вы хотите. Это также позволяет вам находить и исправлять ошибки на ранней стадии, прежде чем они смогут вызвать проблемы в рабочей среде.
В этой статье мы рассмотрим, почему тестирование кода важно. Существует множество различных способов тестирования вашего кода, и мы рассмотрим самый важный из них — модульное тестирование.
Всегда проверяйте свой код
Прежде чем мы поговорим о почему, давайте поговорим о что. Что такое тестирование кода? Это необходимо для того, чтобы ваш код работал так, как вы хотите. Просто так.
Теперь, почему вы должны утруждать себя тестированием своего кода? Представьте, что у вас есть программа с одним модулем. Он отвечает за одно и только одно. Тестирование может показаться излишним (но я рекомендую всегда тестировать код).
Теперь представьте, что ваша программа состоит из пяти модулей, которые делают разные вещи. Кроме того, модули взаимодействуют друг с другом. Ваша программа теперь имеет много возможных состояний, и проверка всех состояний вручную займет много вашего драгоценного времени.
Вместо этого вы должны написать тесты, чтобы подтвердить поведение! Тестируя свой код, вы также защищаете себя от неработающих функций при добавлении нового кода. Вы хотите писать качественный код, верно? Без тестирования это невозможно.
Модульное тестирование вашего кода
Существуют различные типы тестов, которые вы можете запускать в своем коде, но модульные тесты являются наиболее важными. Они позволяют тестировать отдельные блоки кода изолированно.
Давайте посмотрим на эту функцию JavaScript.
```javascript
const incrementByOne = input => {
если (ввод < 0) {
вернуть 0;
возврат ввода + 1;
Теперь давайте напишем несколько тестов. Я хотел бы начать с тестирования «счастливого пути».
```javascript
test('должен увеличиваться на 1', () => {
постоянный ввод = 9;
const фактический = incrementByOne (вход);
ожидаемая константа = 10;
ожидать(фактический).быть(ожидаемый);
А затем самое интересное: крайние случаи!
```javascript
test('должен вернуть 0 при отрицательном вводе', () => {
постоянный ввод = -1;
const фактический = incrementByOne (вход);
ожидается константа = 0;
ожидать(фактический).быть(ожидаемый);
Теперь мы все протестировали и имеем 100% покрытие тестами. И мы счастливы, или мы?
Я выбрал JavaScript, потому что он динамически типизированный, и нам разрешено передавать любой тип в нашу функцию (psst! Это это хорошая причина вместо этого использовать TypeScript.
Что произойдет, если мы передадим строку
?
```javascript
test('должен увеличиваться на 1', () => {
const input = 'моя строка';
const фактический = incrementByOne (вход);
ожидается = ???;
ожидать(фактический).быть(ожидаемый);
Функция вернет my-string1
, поскольку оператор +
работает между типами в JavaScript. Это не то, что нам нужно, так что давайте это исправим.
Давайте обновим функцию для обработки этого случая.
```javascript
const incrementByOne = input => {
если (тип ввода !== 'число') {
throw new TypeError('Разрешен только числовой тип');
если (ввод < 0) {
вернуть 0;
возврат ввода + 1;
Теперь давайте добавим еще один тест в наш набор тестов.
```javascript
test('должен бросить при вводе не числа', () => {
const input = 'моя строка';
const ожидаемый = новый TypeError('Разрешен только числовой тип');
ожидаем(() => incrementbyOne(ввод)).toThrowError(ожидаемый);
Это был простой пример. Тем не менее, веб-сайты и программы никогда не бывают тривиальными, и я надеюсь, что теперь вы понимаете ценность тестирования своего кода. Тестирование вашего кода является важной частью выпуска высококачественного программного обеспечения. Это должно быть основной частью вашего процесса разработки программного обеспечения!
Модульное тестирование не является панацеей и не заменяет другие формы тестирования, такие как системное тестирование и приемочное тестирование пользователями. Однако модульное тестирование является важной частью процесса тестирования программного обеспечения, и его нельзя игнорировать.
Вывод
Когда дело доходит до кода, тестирование является ключом к предотвращению ошибок и обеспечению того, чтобы ваш код работал должным образом. Потратив время на тестирование своего кода, вы сможете избежать дорогостоящих ошибок и убедиться, что ваш код готов к работе в прайм-тайм.
Свяжитесь со мной в Twitter @prplcode
Также опубликовано на https://prplcode.dev
Оригинал