вторник, 10 января 2017 г.

Как воспроизвести то твои шаги?

Я уже научена горьким опытом возвращения к старым задачам. Знаю, что, когда пишешь в задаче "проверила, загрузив дубли" — это ни о чем не говорит. И если понадобится снова проверить тот же кейс, придется тратить время и вспоминать — «А как оно работает-то? А что грузить? А данные где бы найти? А...». Поэтому, если я пишу в задаче, как получила ситуацию вручную, то прикладываю все вспомогательные запросы.

Описываем все подробненько

Перед новым годом проверяла большую задачу. Потом резюмировала:
  1. Тут плохо, вот тест.
  2. И тут плохо, вот еще тест.
  3. И тут...
Тестировала вьюшки, писала автотесты под них. Но автотесты могут врать — ведь я сама создаю исходное состояние базы данных. А потом уже смотрю, что приехало во view. И если что-то не приехало, варианта два:
  1. Баг в коде вьюшки.
  2. Баг в моем тесте, неправильно состряпала исходное состояние.
Упал довольно сложный автотест, где мудреное исходное состояние. Вполне могла и я неправильно что-то сделать. Поэтому проверила вручную — повторяется!

Так и записала в комменте к задаче, указала на автотест + подробное описание, как воспроизвести вручную:
******************************************************

VIEW_1 плохо работает с тем и тем. Если на входе А и Б, должно быть close_reason = 1, а я вижу close_reason = 0.


Проверила вручную (а то вдруг просто dbStart кривой?):
  1. Создала 4 объекта, полностью идентичные, кроме ХХХ. Запросы есть в save (4 запроса).txt
  2. Загрузила к ним АП — см source_2.csv, там уже и хеш посчитан. Запрос для заливки данных в базу есть на \\public\test_data.
  3. Выполнила задачу test_name — получила то и то
  4. Проверила вьюшку
select * from view_1;
У всех четырех АП close_reason = 1, все ок.

5. Сменила параметр А на Б
6. Выполнила задачу test_name  — получила ,..
7. Еще раз проверила вьюшку. Теперь у объектов 1 и 2 изменился close_reason = 0

******************************************************

Вот вроде все подробно и понятно, бери да выполняй. Все файлики в аттаче к задаче → воспроизвести не проблема! Дело было 23 декабря.

...

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

Ага, без проблем. Щазззз.

Пункт 1. Почему в аттаче 4 разных запроса? У нас же есть батчевый SOAP-метод... Надо его и юзать! И чего поленилась в первый раз? 

Потом дошло, что не поленилась. Так надо для моего сценария и это важно. Но об этом стоило написать тогда, чтобы не тупить сейчас. Добавила в пункт "не использовала метод А, потому что..."

Пункт 2. Аттач есть, запрос для заливки в базу есть. А в систему то как грузить? Одной задачи хватит? Фишка в том, что у нас не все задачи тривиальные. Иногда надо выполнить одну, потом вторую.

Опять тупняк на 1 минуту — мне же хватит задачи test_name_2? Я за новогодние праздники уже жеж все забыла! Smile :) Проверила, хватило. Но в список пунктов между 2 и 3 внесла еще один: 

     Выполнила задачу test_name_2

Так в следующий раз и вопросов не возникнет.

Пункт 4. Выполняю селект — вьюшка пустая. Почему? Потому что она работает по интервалу и надо указать параметр to_date, чтобы хоть что-то увидеть. Перепишем пример:

exec export_pkg.set_from_date(to_date('2011-05-23', 'YYYY-MM-DD'));
select * from view_1;

Вот теперь это "бери да выполняй"! 
Ведь пример зачем нужен? Чтобы не вспоминать, откуда данные забираем, что для этого надо еще выполнить итд. А просто копипастим в sql developer — и оно работает.

См также:
Не пишите в баге «Ввести 6,9»! — как правильно добавлять примеры в баги

Если вы описываете шаги, пишите как для идиотов. Это пригодится. И ведь я даже знаю это. Учу этому. Применяю сама — вон как подробно расписала каждый шаг (почти, как оказалось), приложила все файлики, ай молодца! А вот вернулась к задаче спустя 3 недели — и уже ничего не помню. И на плохом описании туплю или трачу время на то, чтобы вспомнить, как это делается.

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

Как-то так =)

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

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