среда, 7 февраля 2018 г.

С тремя параметрами работает, а с одним — NPE

Это не совсем панбагон, так как проблему нашли и обезвредили на этапе тестирования. Так, байка с работы, которая хорошо иллюстрирует мысль «начинайте с простого!».

Что тут у нас?


Мы добавили некую сущность, которая в том числе должна возвращаться в ответе 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 — доп параметры), оставляя лишь обязательный минимум. С этого тура и начинаем. Все химичества вокруг тест-анализа — все потом. Иначе можно легко пропустить этот баг...

Комментариев нет:

Отправить комментарий