русский
Germany.ruForen → Архив Досок→ Programmierung

SCRUM. У кого на работе считают, что используют?

25.09.18 09:57
Re: SCRUM. У кого на работе считают, что используют?
 
Программист коренной житель
in Antwort AlexNek 24.09.18 22:45
Если я тестирую например функцию y=f(a,b,c) - это будет юнит тест или нет?

Может будет, а может и нет. Зависит от того, что именно происходит в этой функции.

Пусть a - канал связи (не важно, Ethernet или COM), b - массив данных, с - количество данных, которые надо передать, y - результат передачи.

Так вот, если ты для a передашь реальные канал связи, то это уже совершенно точно никакой не юнит-тест.


А если функция вычисляется от нескольких секунд до нескольких минут это быстро или нет.

Я таких функций еще ни разу не встречал. Я правда никогда не занимался сложными расчетами, но, я уверен, даже сложные расчеты можно поделить на части и протестировать отдельные элементы. Несколько секунд для одного юнит-теста - это очень много. Опять же, я знаю парня, который занимается тестированием софта для самолетов, у них там миллионы тестов, которые исполняются долго (просто потому что их очень много), но там и требования совершенно другие, да и контора та занимается только тестированием. Так что специфика может проявиться, то в целом, все имеющиеся юнит-тесты должны исполняться не больше 1 минуты.


А если каждый параметр вариируется с шагом 0.5 или с шагом 0.01 будет разница или нет?

Не понял, какое влияние на функцию оказывают изменяющиеся параметры? Что именно ты хочешь тестировать?


Может тогда определимся с понятием "выпустил интерфейс"?

Выпустил интерфейс - это значит, что библиотека/сборка, в которой находится интерфейс получила свою версию и была прошла через release процесс (процесс этот на всех фирмах разный).


и тогда все будет шоколадно?

Как минимум решит большую часть проблем.


Проект "А" был оттестирован 3 года назад, теперь мне его надо просто компильнуть по новому, заказчик имя фирмы поменял.

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


Git подойдет?

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


Либа Х лежит в репо1, проект С в репо2 нужна одна новая ветка, так как менятся будет и то и другое

Ты про разделение ответственности что-нибудь слышал? Либа Х, очевидно, является компонентой для проекта С. Значит работа должна выстраиваться так:

1) проект С создает требования для либы Х

2) либа Х реализует эти требования, производит тестирование по требованиям и выпускает (делает release) версия X.Y.1

3) проект С берет выпущенную версию либы Х и делает свои изменения.

В принципе, можно подойти к этому процессу не так строго и разрабатывать параллельно, т.е. проект С может базироваться на nightly build'е либы Х... но разработка либы Х все равно остается независимым от проекта С процессом. В то время как разработка проекта С зависит от либы Х. Короче говоря, либа Х как была в своем репо1, так и остается, также как и проект С и нет ни одной причины сливать их в одну ветку.


А если нужно тогда как? делать новые интерфейс IAbc2?

Например так. В шарпе можно добавлять новые функции без изменения имени интерфейса.


заказчику объяснить сможете отчего его хотелку нельзя сделать?

Я не понимаю проблемы. Если между А и Б нет никакой связи, то, соответственно, нет и информации. Т.е. либо делается связь, либо объясняешь почему эту связь нельзя сделать. В чем тут проблема?


примерчик мона? Простейший пример, есть прога, нужно ввести число А и Б, по нажатию кнопы получить сумму. Все должно происходить "на экране" - "визуально"

Примерчик чего? Примерчик тестирования функции, которая считает сумму?

Я бы сделал такое приложение на WPF. Соотвественно мне нужно было бы 1) ModelView (которое не надо было бы тестировать в виду отсутствия логики) 2) односторонний конвертер string to int (2 теста) и 3) модель с 1 функцией (для суммы одного теста будет достаточно). Для того, чтобы проветить, что все работает можно было бы сделать системный тест, который бы запускался ночью и кликал бы в нужные места.


И что все удается держать синхронно?

Нет конечно! В этом и прелесть тестов, что при изменении логики ты вынужден синхронизировать тесты.

 

Sprung zu