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

Юнит тесты для "системного" приложения

2301  1 2 3 4 5 6 7 8 9 все
Murr патриот23.04.21 20:15
Murr
NEW 23.04.21 20:15 
в ответ AlexNek 23.04.21 19:48

Тогда получается, что мы о них не знаем.

-----

Ну так Я об этом уже не первый день говорю.

Да, можно написать в соответствии с документацией. И оно даже будет работать.

Но только в каких-то идеальных условиях.

В реальной среде - работать не будет - получаемое отличается от описанного.


способ доставки данных никак не связан с самими данными.

-----

Способ - нет. А вот что будет получено - уже, увы, да...


неполное описание

-----

Для отдельного изолированного устройства - вполне достаточное. смущ

А так - да, не полное, не описывает многое из того что имеет место быть.



Сеть - это уже способ доставки данных

-----

В данном случае - весьма сильно отличающаяся от привычных tcp/ip сетей.



У меня складывается впечатление что мы обсуждаем разные вещи.

-----

Угу...

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

Ну а мне пытаются объяснить что достаточно сделать по документации.

В большинстве случаев написанное по документации - достаточно, но вот в этом случае - нет - надо ковырять реальную сеть чтобы понять возникающие проблемы. Мало того, в данной сети есть проблемы, для понимания которых недостаточно уметь грамотно работать с тцп/ип сетями, хотя, обычно, прикладная программа работает именно с ип&портом... ну или с усб-портом...

Murr патриот23.04.21 20:35
Murr
NEW 23.04.21 20:35 
в ответ Программист 23.04.21 19:44

У "черного ящика" есть только вход и выход.

-----

Угу...

Вот только не вполне определено что именно понимается под "черным ящиком".

Документация, которая доступна, описывает функционирование отдельного устройства.

Соответственно код написанный по данной документации будет корректно работать с устройством.

Можно тестировать - все пройдет нормально.


Вот только де-факто "черным ящиком" является не устройство, а сеть.

Документации на сеть - нет. Все что есть - устройств может быть много, они могут быть разаными и взаимодействовать.

А поведение устройства в сети весьма отличается от того что описано в документации.

AlexNek патриот23.04.21 21:03
AlexNek
NEW 23.04.21 21:03 
в ответ Murr 23.04.21 20:15
В реальной среде - работать не будет - получаемое отличается от описанного.

Ну так это задача никак не совместима с юнит тестами. В лучшем случае это integration test. И то это чисто для проверки, что мы не сломали то, о чём знаем.

Вот написал я юнит тест для использования функции перемещения файлов. Никакого доступа к диску, никах файлов. Отлично обрабатывает все исключения и прочее.

Но, в реальной среде не работает...иногда. Например, если в каталоге (target) уже есть такой файл, он не перезаписывается, а выдается исключение. Которое обрабатывается правильно.


Почти полная аналогия с твоими устройствами.


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

А что кто то пытается с этим спорить?

Программист коренной житель23.04.21 21:37
NEW 23.04.21 21:37 
в ответ Murr 23.04.21 20:35
Вот только не вполне определено что именно понимается под "черным ящиком".

Вполне себе определено:

Чёрный я́щик — термин, используемый для обозначения системы, внутреннее устройство и механизм работы которой очень сложны, неизвестны или неважны в рамках данной задачи.


Вот только де-факто "черным ящиком" является не устройство, а сеть.

Ты уж определись, что у тебя там является черным ящиком.


Документации на сеть - нет. Все что есть - устройств может быть много, они могут быть разаными и взаимодействовать.
А поведение устройства в сети весьма отличается от того что описано в документации.

Все это очень мило, но не имеет никакого отношения к юнит-тестам. Да и вообще к тестам. Любой тест, хоть юнит, хоть интергационный, хоть системный, любой, построен на том, что у тебя есть заранее известный вход и заранее известный выход. И есть некий заранее известный сценарий по которому ты гарантированно получаешь конкретную ошибку. Если нет этих 3-х составляющих (вход, выход и сценарий), то ты не можешь убедиться в том, что ошибка была исправлена.

Как видишь, в тестировании нет никаких случайных величин.

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

Murr патриот24.04.21 03:00
Murr
NEW 24.04.21 03:00 
в ответ AlexNek 23.04.21 21:03

задача никак не совместима с юнит тестами.

-----

Вполне совместима.

Только надо выяснить как именно мокать систему...


Например, если в каталоге

-----

Ну а об чем Я спрашивал когда увидел описание задачи?

В винде там еще и локи на файлах случаются. Причем - неожиданные...


Почти полная аналогия с твоими устройствами.

-----

Аналогия только в том, что глюки редкие. По ФС всегда можно что-то откопать, а по этой сети практически ничего не находится - редкие задачи...


А что кто то пытается с этим спорить?

-----

Ну убедить то меня пытаются в другом... безум

koder патриот24.04.21 05:41
koder
NEW 24.04.21 05:41 
в ответ Murr 23.04.21 19:19, Последний раз изменено 24.04.21 05:45 (koder)
Осталось выяснить как ничего не делая получить работающий код...

Ты не получишь работающий код. Потому что ты просто не знаешь что делать улыб

-Приезжайте в гости

-А адрес?

-Да не надо адрес, так приезжайте.


Но Я могу поднять понимание с 20% соответствующих документации до 97%
уже где-то с 50-60% эффективное решение

Но почему 97%? Ну откуда ты вообще берешь оценку? Откуда беруться цифры при оценке понимания черного ящика? Ты месяц гонял тесты (ру юниттесты, простое исследование). Те готорые смог придумать и организовать. Как ты оцениваешь полноту тестов?


правильно в соответствии с документацией т.е. в 20% случаев,

Нет. 100% правильно в соответствии с твоим пониманием, как твой код обрабатывает работу черного ящика. Соответственно мок 100% имитирует твое понимание работы черного ящика. Тестируя месяцы и годы можно улучшить понимание работы самого ящика, но принцип написания мока не меняется - в любой момент времени, сразу после прочтения документации или после 20 лет непрерывных тестов мок 100 процентов имитирует ответ черного ящика в строго определенной ситуации. Определенной тобой, как программистом.


AlexNek патриот24.04.21 13:05
AlexNek
NEW 24.04.21 13:05 
в ответ Murr 24.04.21 03:00
Только надо выяснить как именно мокать систему...

Что то я очень в этом сомневаюсь.

Как я понял, у тебя имелась некая система, данные которой зависят от состояния самой системы, а состояния могут меняться от многих факторов.

И тебе бы хотелось написать тесты позволяющие убедится в работоспособности всей системы.


Ну убедить то меня пытаются в другом...

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

Murr патриот24.04.21 19:35
Murr
NEW 24.04.21 19:35 
в ответ Программист 23.04.21 21:37

есть заранее известный вход

-----

Никак не хочешь понять что нет заранее известного входа... полностью известного, по крайней мере.

А того что известно - недостаточно для написания того что нужно...


эта работа - бесполезная трата времени

-----

Но и ее тоже надо делать...


Murr патриот24.04.21 20:05
Murr
NEW 24.04.21 20:05 
в ответ koder 24.04.21 05:41

Как ты оцениваешь

-----

Если Я каким-то образом получу больше информации об функциомнировании устройства/системы чем есть в документации, то процентик - повысится. Или будет наоборот? смущ

Тебя смущают конкретные цифирьки - ну обоснуй их неправильность...спок



ответ черного ящика в строго определенной ситуации

-----

Проблема в том, что в конкретном случае у тебя скорее не черный, а серый ящик.

Т.е. у тебя на одно внешнее воздействие имеется более чем один ответ.

И при этом ни один из полученных ответов может не соответствовать описанному в документации. смущ

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

koder патриот25.04.21 05:51
koder
NEW 25.04.21 05:51 
в ответ Murr 24.04.21 20:05, Последний раз изменено 25.04.21 05:52 (koder)
Если Я каким-то образом получу больше информации об функциомнировании устройства/системы чем есть в документации, то процентик - повысится.


Вопрос стоял о целесообразности мероприятия. Например берем устройство и изучаем. И доклад - повысили информированность о системе до 97% - это одно. Доклад - а процентик то повысился Или наоборот? - это другое. Особенно если изучали месяц и к концу изучения забыли, что изучали улыб


ебя смущают конкретные цифирьки - ну обоснуй их неправильность...спок

Основой для получения циферок является критерии оценки конечного результата. И в первую очередь критерии целесообразности мероприятия. Хочу все знать - это не критерий. Цифры могут быть там, где критерии оценки в цифрах. Я стал умнее информированиее на 30% - это лохотрон по определению. Просто нет критериев для оценки.

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

Выглядит как божественный процесс создания женщины. У Бога тоже не было документации, надо было сделать обязательно, непонятно что, задумка была прекрасная. Ну и получилось то, что получилось - "на одно внешнее воздействие имеется более чем один ответ.И при этом ни один из полученных ответов может не соответствовать"хаха


Murr патриот25.04.21 07:03
Murr
NEW 25.04.21 07:03 
в ответ koder 25.04.21 05:51

получилось то, что получилось

-----

И даже как-то работает... безум

Но писать под него, не зная что там будет - почти без толку... спок

Программист коренной житель25.04.21 19:27
NEW 25.04.21 19:27 
в ответ Murr 24.04.21 19:35
Но и ее тоже надо делать...

Если какую-то деятельность можно описать как "бесполезная трата времени", то такую работу делать не надо... Ну если только тебе людей нечем занять и чтобы они не сидели без дела, тогда можно убить их время эмитируя полезную нагрузку :)

MrSanders коренной житель25.04.21 19:49
NEW 25.04.21 19:49 
в ответ Программист 25.04.21 19:27
можно убить их время эмитируя полезную нагрузку :)

Гы-гы :) Заклёпочник он. Сначала надо эмиттер полезной нагрузки построить.

Ну или просто её имитировать :)

Murr патриот25.04.21 20:51
Murr
NEW 25.04.21 20:51 
в ответ Программист 25.04.21 19:27

можно описать как

-----

Так можно описать любую деятельность, в которой спрашивающий непосредственно не заинтересован.

При отсутствии интереса к чему-либо кроме тупого сидения перед зомбоящиком - интересов вообще не будет...

Программист коренной житель25.04.21 21:18
NEW 25.04.21 21:18 
в ответ Murr 25.04.21 20:51

Деятельность "пойди туда, не знаю куда. принеси то, не знаю что" является бесполезной. И это никак не зависит от заинтересованности.

Murr патриот25.04.21 22:26
Murr
NEW 25.04.21 22:26 
в ответ Программист 25.04.21 21:18

пойди туда, не знаю куда. принеси то, не знаю что

-----

Странно слышать это от инженера. Для техника - да, сойдет...

Программист коренной житель26.04.21 07:57
NEW 26.04.21 07:57 
в ответ Murr 25.04.21 22:26
Странно слышать это от инженера. Для техника - да, сойдет...

Согласен! Странно, когда инженер считает полезным тратить время в пустую.

1 2 3 4 5 6 7 8 9 все