Это не совсем панбагон, так как проблему нашли и обезвредили на этапе тестирования. Так, байка с работы, которая хорошо иллюстрирует мысль «начинайте с простого!».
Мы добавили некую сущность, которая в том числе должна возвращаться в ответе API поискового метода. У метода есть пачка разных параметров, из которых обязательный только один — query, поисковый запрос.
Разработчик сделал один автотест «для себя», для отладки:
<magicSearch xmlns="http://some_url/soap/2_13">
<query>Иванов</query>
<partyType>PHYSICAL</partyType>
<include>
<partyInfo>SOME_PARAMS</partyInfo>
</include>
</magicSearch>
Все работает!
Отдает метод в тестирование. Перед тем, как сесть писать автотесты, решила просто дернуть метод, посмотреть, что он возвращает «в реале». А то знаете, как бывает — автотесты работают, а на живом билде все валится к чертям.
Собственно, примерно так и произошло. Все эти partyType и include блоки меня пока не интересуют, отправляю самый простой запрос
<magicSearch xmlns="http://some_url/soap/2_13">
<query>Иванов</query>
</magicSearch>
И тут же огребаю NPE:
<errorType>NullPointerException</errorType>
<errorMessage>Error while searching with markers: null</errorMessage>
Пока разработчик ходил на обед, написала и закоммитила ему автотест. Заодно локализовала, запрос очень страдает без блока include, который вообще-то должен быть необязательным. А разработчик еще свой тест base назвал. Ха, какой же это base, если там куча всего понапихано ツ
Базовый тест — это как раз "дал минимум информации на входе, чисто проверить, что оно в целом работает".
О том и речь — при тестировании ВСЕГДА начинаем с простого. Если в запросе у вас десяток параметров, не надо сразу пытаться охватить их все. Сначала проверяем каждый по отдельности, заполняя минимум позитивных данных. Это поможет легко локализовать проблему, когда что-то пойдет не так. А потом уже комбинируем параметры и смотрим, как они работают все вместе.
Если говорить про исследовательские туры, то этотур ленивой Ж Couch Potato Tour. Там мы как раз ленимся заполнять доп поля (в случае API — доп параметры), оставляя лишь обязательный минимум. С этого тура и начинаем. Все химичества вокруг тест-анализа — все потом. Иначе можно легко пропустить этот баг...
Что тут у нас? |
Мы добавили некую сущность, которая в том числе должна возвращаться в ответе API поискового метода. У метода есть пачка разных параметров, из которых обязательный только один — query, поисковый запрос.
Разработчик сделал один автотест «для себя», для отладки:
<magicSearch xmlns="http://some_url/soap/2_13">
<query>Иванов</query>
<partyType>PHYSICAL</partyType>
<include>
<partyInfo>SOME_PARAMS</partyInfo>
</include>
</magicSearch>
Все работает!
Отдает метод в тестирование. Перед тем, как сесть писать автотесты, решила просто дернуть метод, посмотреть, что он возвращает «в реале». А то знаете, как бывает — автотесты работают, а на живом билде все валится к чертям.
Собственно, примерно так и произошло. Все эти partyType и include блоки меня пока не интересуют, отправляю самый простой запрос
<magicSearch xmlns="http://some_url/soap/2_13">
<query>Иванов</query>
</magicSearch>
И тут же огребаю NPE:
<errorType>NullPointerException</errorType>
<errorMessage>Error while searching with markers: null</errorMessage>
Пока разработчик ходил на обед, написала и закоммитила ему автотест. Заодно локализовала, запрос очень страдает без блока include, который вообще-то должен быть необязательным. А разработчик еще свой тест base назвал. Ха, какой же это base, если там куча всего понапихано ツ
Базовый тест — это как раз "дал минимум информации на входе, чисто проверить, что оно в целом работает".
О том и речь — при тестировании ВСЕГДА начинаем с простого. Если в запросе у вас десяток параметров, не надо сразу пытаться охватить их все. Сначала проверяем каждый по отдельности, заполняя минимум позитивных данных. Это поможет легко локализовать проблему, когда что-то пойдет не так. А потом уже комбинируем параметры и смотрим, как они работают все вместе.
Если говорить про исследовательские туры, то это
Комментариев нет:
Отправить комментарий