Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

​Контрактники...

1798  1 2 3 4 5 6 7 все
Программист коренной житель11.02.20 13:29
NEW 11.02.20 13:29 
в ответ AlexNek 11.02.20 13:19
И не обязательно, что можно вообще написать хотя бы юнит тест к нужному фукнционалу.
Да и немного помню кошкину ситуацию.

Да ничего необычного в его ситуации нет.


Систему в полном объеме не знает никто.

Да и ради бога :) У меня на текущем проекте тоже самое :) Никому и не нужно знать всю систему.


Даже если ты делаешь чего-то для одного рабочего места тебе будут говорить о детали А, а то что там могут делать деталь Б и С можно узнать случайно, а можно и нет.

И что? Сделал ты для детали А - протестировал и все работает - отлично. Если про делали Б и С ты ничего не узнал - отлично. Если узнал, то дополняешь тесты для этих деталей. Никто не требует моментального покрытия всего функционала.

И не обязательно, что можно вообще написать хотя бы юнит тест к нужному фукнционалу.

Это да. Но для таких случаев придумали рефакторинг. Ну и таки есть тестовые фреймфорки, которые подменяют код ;) Правда платные. Так что вполне вероятно, что это вопрос инструментария.

Опять же, кроме юнит-тестов есть еще и интеграционные и системные тесты.

#41 
Murr патриот11.02.20 14:56
Murr
NEW 11.02.20 14:56 
в ответ Программист 11.02.20 12:58

Если результат - какие-то данные в эксель-файле, то проверять надо содержание эксель-файла.

-----

Каким образом проверять содержание ехцел-файла?

Тебе русским языком написано:

- пользователь НЕ знает что там должно быть.

- код построения находится в приватных функциях.

- внешний интерфейс - два поля (типа Дата) и кнопа, результат - файл.


И юз-кейс там не один. И это не "две даты и кнопочка".

-----

Тебе скриншотик дать? смущ



с чего он взял, что этого там нет

-----

Потому как его шеф сказал ему - Бу-бу-бу...

А когда его шеф говорит ему - Бу-бу-бу - в файлике должны быть данные...

С этими данными нужно проделать 1., 2., 3... или 4., 5 - если весто Бу-бу-бу услышал Бу-бу-ба...

и поместить результат в другую форму и нажать другой кнопарик (этого кода нет)...

Но данных в файлике нет...


Пусть либо формулирует

-----

Смешно...

Он НЕ знает ЧТО он делает - он знает КАК он должен делать - читать, вписать, нажать, читать, нажать, читать, вписать, нажать, читать, вписать, нажать...

И так - 8 часов в сутки... чем быстрее - тем больше зарплата... за формулирование - не платят...


#42 
AlexNek патриот11.02.20 14:57
AlexNek
NEW 11.02.20 14:57 
в ответ Программист 11.02.20 13:29

Теоретически, полностью с вами согласен. Но практически, обычно бывают нюансы.


Если про делали Б и С ты ничего не узнал - отлично. Если узнал, то дополняешь тесты для этих деталей.

Есть только маленький нюанс совместная обработка А и Б, в данной реализации, невозможна.


Но для таких случаев придумали рефакторинг.

Ну я хочу глянуть на рефакторинг 10-летнего монолитного спагетти кода, когда при этом приложение должно быть всегда в рабочем состоянии.


Опять же, кроме юнит-тестов есть еще и интеграционные и системные тесты.

Ну вот есть софт, управляет железом и получает оттуда же данные. Чтобы промоделировать железо нужно писать докторскую, не говоря уже о том как "перецепить" соединение с железом.

Ваши действия?

#43 
Murr патриот11.02.20 15:06
Murr
NEW 11.02.20 15:06 
в ответ Программист 11.02.20 12:58

Если клиент ожидает какую-то информацию, то он знает что они там ожидает.

-----

Ты действительно не понимаешь?

Сидит Патрик. Сельский. Полностью от сохи.

Он знает, что в файлике есть клеточка из которой он должен взять что там есть

и поместив это форму нажать кнопарь. Все, ничего больше он не знает...

Просто человеко-"автомат" по перемещению данных из клеточки в форму.

Проблема - клеточка - пуста.


#44 
Murr патриот11.02.20 15:15
Murr
NEW 11.02.20 15:15 
в ответ Программист 11.02.20 13:29

Никому и не нужно знать всю систему.

-----

Есть в системе календарик смен.

там пустяки - начало-окончание и немного дополнительной фигни.

Единствення проблема - сделано неудобно.

Я поковырялся и написал намного более удобную фиговинку...

заодно и глюки пофиксил и тесты написал... даже жизнеспособность

в базе проверяется...

Внедрять? улыб

#45 
Murr патриот11.02.20 15:27
Murr
NEW 11.02.20 15:27 
в ответ AlexNek 11.02.20 14:57

на рефакторинг 10-летнего монолитного спагетти кода

-----

Примерно 20-летнего... и минимум 5-к прогеров разной квалификации...

Но самое то - при активном и постоянном изменении требований...


Чтобы промоделировать железо нужно писать докторскую, не говоря уже о том как "перецепить" соединение с железом.

-----

Ну это пустяки... совершенные пустяки...

пишем управляющее воздействие как ключ

возвертаем чего там железо должно вернуть...

Правда получится смешно, если железо нельзя ресетнуть, а его ресопнсе зависит от текущего состояния...

#46 
AlexNek патриот11.02.20 16:43
AlexNek
NEW 11.02.20 16:43 
в ответ Murr 11.02.20 15:27
Ну это пустяки... совершенные пустяки...

безусловно, особенно когда входной сигнал зависит от выходного и всё это происходит в реальном времени. ".НЕТ" правда справляется ещё.

#47 
Программист коренной житель11.02.20 16:58
NEW 11.02.20 16:58 
в ответ Murr 11.02.20 14:56
Каким образом проверять содержание ехцел-файла?

Открываешь ексель-файл и читаешь его. В чем проблема? Если смог записать, значит и прочитать можешь.


- пользователь НЕ знает что там должно быть.

Значит пользователь НЕ знает, есть там это или нет.


- код построения находится в приватных функциях.

Это не важно.


- внешний интерфейс - два поля (типа Дата) и кнопа, результат - файл.

Это тоже не важно.


Тебе скриншотик дать?

Нафига мне твой скриншот? Ты же сам не знаешь, как отличить ошибку от корректной работы :) И не знаешь как узнать правильно отработала твоя функция или нет.


Потому как его шеф сказал ему - Бу-бу-бу...

т.е. его шеф знает, что должно быть в файлике.


Но данных в файлике нет...

Есть! Просто он не знает об этом :)


Он НЕ знает ЧТО он делает - он знает КАК он должен делать - читать, вписать, нажать, читать, нажать, читать, вписать, нажать, читать, вписать, нажать...
И так - 8 часов в сутки... чем быстрее - тем больше зарплата... за формулирование - не платят...

А на то, чтобы маякнуть тебе и сказать "у меня тут нет данных", у него, значит время есть и это время даже оплачивается :D :D :D


Ну-ну...

#48 
Программист коренной житель11.02.20 17:12
NEW 11.02.20 17:12 
в ответ AlexNek 11.02.20 14:57
Есть только маленький нюанс совместная обработка А и Б, в данной реализации, невозможна.

Ну значит будет либо А и о Б думать не надо, либо будет Б и не надо думать об А :)

В чем проблема?


Ну я хочу глянуть на рефакторинг 10-летнего монолитного спагетти кода, когда при этом приложение должно быть всегда в рабочем состоянии.

Ну так никто не рефакторит все за раз. Частями, там где это возможно. А в рабочем состоянии оно должно быть после мерджа. При этом рабочесь состояния можно оценить только одним способом - протестировав.


Чтобы промоделировать железо нужно писать докторскую, не говоря уже о том как "перецепить" соединение с железом.

Это кто тебе сказал такую ерунду? :) Железо для тестов симулируется довольно просто. Тут же нужно симулировать состояние железа. Наверное ты как-то не так понимаешь слово сочетание "симуляция железа" :)

Симуляция для стресс-теста уже сложнее, но тоже до докторской там далеко.


Ваши действия?

Я сделаю симулятор железа :) Так же как я делал симулятор для System.IO.Directory, System.IO.DriveInfo, симулятор системы видео анализа и симулятор карточных игр для стресс-тестов :) Уверяю тебя, это совсем не трудно ;)


#49 
Программист коренной житель11.02.20 17:16
NEW 11.02.20 17:16 
в ответ Murr 11.02.20 15:06
Сидит Патрик. Сельский. Полностью от сохи.
Он знает, что в файлике есть клеточка из которой он должен взять что там есть
и поместив это форму нажать кнопарь. Все, ничего больше он не знает...
Просто человеко-"автомат" по перемещению данных из клеточки в форму.
Проблема - клеточка - пуста

.Ну вот тебе и тест кейс:

1) система находится в состоянии Х

2) клеточка YZне должна быть пуста


Вот и делаешь тест:

а) инициализируешь систему в состоянии Х

б) генерируешь файл

в) проверяешь клеточку YZ


Все :)

#50 
Программист коренной житель11.02.20 17:17
NEW 11.02.20 17:17 
в ответ Murr 11.02.20 15:15
Внедрять?

Да мне плевать :)

#51 
AlexNek патриот11.02.20 18:22
AlexNek
NEW 11.02.20 18:22 
в ответ Программист 11.02.20 17:12
В чем проблема?

А том что должны и А и Б должны обрабатываться в данной одной реализации. И не различными частями.


Ну так никто не рефакторит все за раз. Частями, там где это возможно.

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

Единственный выход - переписать всё с нуля, заложив правильную архитектуру вместо никакой.

#52 
AlexNek патриот11.02.20 18:41
AlexNek
NEW 11.02.20 18:41 
в ответ Программист 11.02.20 17:12
Железо для тестов симулируется довольно просто.

железо разное бывает смущ

Набросать сотню кнопочек для эмулятора: дверь открыта, воздух поступает, штырь в позиции А и т.п. вполне можно. Можно даже сэмулировать как продукт по всей цифровой цепочке проходит.

А вот с многоканальным аналогом в реальном времени с обратной связью уже не очень просто.

Засунул враппер на входы и выходы - уже не работает, так как время и так было на пределе.


Наверное ты как-то не так понимаешь слово сочетание "симуляция железа"

возможно. Только получить чистый синус нафиг не надо.

#53 
Murr патриот11.02.20 18:48
Murr
NEW 11.02.20 18:48 
в ответ Программист 11.02.20 16:58

Открываешь ексель-файл и читаешь его. В чем проблема? Если смог записать, значит и прочитать можешь.

-----

И что Я ТАМ должен читать?

Там, обычно, до десятка пагей забитых цифирьками. Что именно они обозначают Я не знаю. Патрик - тоже не знает.

Что именно Я должен в них читать?


И ты опять не хочешь понимать - кучка спагетти породила ехцел-файл.

Спагетти - не мой - унаследованный от прогера, которй свихнулся на кодинге этого спагетти...



Значит пользователь НЕ знает, есть там это или нет.

-----

Ты буквы от пустого места отличать умеешь? Вот и пользователя этому обучили.

Что означают цифро-буквы он не знает.


Ты же сам не знаешь, как отличить ошибку от корректной работы

-----

Именно.

Единственный для меня способ - редуцировать код до уровня когда Я его буду понимать.

Попутно обвешивая понятые части тестами.

Сколько-то - сделано. Остаток - слишком велик для одного.


И не знаешь как узнать правильно отработала твоя функция или нет.

-----

Нее, не знаю. Тем более, что функция - приватная и не моя.

А должен? Если - должен - то откуда Я это должен знать?


маякнуть тебе

-----

Мне - редко. В основном только по моим наработкам. Там тоже не мало, но все же объектная реализация - могу трекировать возникающие ошибки по частям.

В основном идет непосредственному начальнику, потом еще начальнику, потом по цепочке вниз...

Ко мне это доходит в виде - "в Р20 нет нужных данных".

Ну а Р20 - два поля, кнопа и файл на выходе... спок

#54 
Murr патриот11.02.20 18:56
Murr
NEW 11.02.20 18:56 
в ответ Программист 11.02.20 17:12

В чем проблема?

-----

Самая простая - и А, и Б, и В - имеют индексы - А22, Б33... значения индексов ограничиваются... размером диаппазона 8хДецимал...

Если проще - практически каждое изделие - уникально...


Частями, там где это возможно.

-----

Нормальное спагетти тебе давно не попадалось...

#55 
  moose коренной житель11.02.20 21:14
NEW 11.02.20 21:14 
в ответ Murr 11.02.20 18:56, Последний раз изменено 11.02.20 21:14 (moose)

вот и бери этих контрактников. да фак их всех разом!

муррррррррр... : )

#56 
Программист коренной житель12.02.20 09:06
NEW 12.02.20 09:06 
в ответ AlexNek 11.02.20 18:22
А том что должны и А и Б должны обрабатываться в данной одной реализации. И не различными частями.

Я все еще не понял проблему.

Предположим есть 2 детали - А и Б

И есть всего 3 варианта:

1) А и Б всегда делаются на разных рабочих местах и на этих рабочих местах установлено разное ПО (ПО все заранее знает о детали). - тут все понятно, есть только одна деталь и под нее написан софт.

2) А и Б всегда делаются на разных рабочих местах и на этих рабочих местах установлено одинаковое ПО (ПО все заранее знает о детали) - тут тоже все ясно, есть 2 детали и ПО конфигурируется под конкретную деталь

3) А и Б могут делаться на одном рабочем месте (ПО должно определить какую деталь делать) - тут тоже все ясно :) должны быть какие входные признаки для определения типа детали.


Других вариантов вроде как нет. О каком из этих 3-х вариантов ты говоришь?


Единственный выход - переписать всё с нуля, заложив правильную архитектуру вместо никакой.

Для того, чтобы переписать систему с нуля нужно четкое понимание необходимости этого действия + экономическая целесообразность :)

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

#57 
Программист коренной житель12.02.20 09:10
NEW 12.02.20 09:10 
в ответ AlexNek 11.02.20 18:41
А вот с многоканальным аналогом в реальном времени с обратной связью уже не очень просто.

Это больше похоже на крупный тест всей системы. Тут другие подходы и технологии. И другая частота запуска тестов.


Для тестирования логики все это не нужно.

#58 
Программист коренной житель12.02.20 09:20
NEW 12.02.20 09:20 
в ответ Murr 11.02.20 18:48

И что Я ТАМ должен читать?

Тоже самое, что и Патрик :) Ты дам читаешь "нечто"... скажем, какую-то циферку. Какая разница "что"? Патрик же тоже не знает "что" это такое. Он знает, что в этой клетке "должна быть циферка".

Вот и твой тест должен действовать также:

а) открыл эксель файл

б) прочитал значение в поле XY

в) проверил циферка ли это.

Если циферка, то тест зеленый и Патрик доволен.

Если там пусто или не циферка, то тест красный и Патрик расстроен.


Все. Что еще тебе надо?


И ты опять не хочешь понимать - кучка спагетти породила ехцел-файл.
Спагетти - не мой - унаследованный от прогера, которй свихнулся на кодинге этого спагетти...

Это вообще не важно. Тебе надо убедиться, что этот спагетти-код породил циферку в поле XY. И всем наплевать как он это сделал.

Ты буквы от пустого места отличать умеешь? Вот и пользователя этому обучили.

Если тебя этому тоже обучили, то и ты можешь определить пусто там или нет.


Что означают цифро-буквы он не знает.

Это и не важно.

#59 
Murr патриот12.02.20 11:37
Murr
NEW 12.02.20 11:37 
в ответ Программист 12.02.20 09:20

Все. Что еще тебе надо?

-----

Мне, вообще-то, платят не за то, что циферька есть, а за то, что она есть и что она правильная...

Причем правильная ожидается даже в том случае если в оригинальном варианте она не правильная.

Да-да, даже в том случае когда ни Я, ни Патрик не знаем что она обозначает...


Вот сейчас в Р20 выяснилось, что данные по некоторым клиентам отсутствуют.

Ну да - нету ничего в клеточках...

Что именно чинить надо?

Напомню - два поля, кнопа и файл...

Внутри - спагетти... которое должно работать с другой СУБД и базой другой структуры....


И всем наплевать как он это сделал.

------

Когда - сделал - всем точно наплевать КАК.

Ты мне расскажи что тестить и как фиксить когда он НЕ сделал...



Это и не важно.

-----

Хи-хи...

Всегда упускаешь один фактор... ничего не важно - ни что есть в думпнутом ехецеле, ни как считалось... до тех пор пока станки не простаивают.

А для того чтобы они крутились - должна быть нужная Патрику цифирька...

#60 
1 2 3 4 5 6 7 все