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

Вопрос к тестировщикам

5427   4 5 6 7 8 9 10 11 12 13 14 все
Murr патриот09.08.19 10:59
Murr
NEW 09.08.19 10:59 
в ответ Программист 08.08.19 19:17

Различия между этими тестами - выбрасываесое исключение.

------

Перечисли, плс, ВСЕ, выбрасываемые в данных условиях, исключения.

Я знаю наиболее часто выбрасываемые, но не знаю все ли знаю.

На всякий случай - там будут не только оракловские - есть пара дыр куда провалятся

некоторые из системных. Но это будет крайне редко. Мне все получить не удалось.

Ждем список - он определит какие тесты надо написать.


Группы исключений будут перечислены в логе.

-----

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

Ну и остается вопрос - что делать с теми исключениями, которые не попали в логи.

Ну просто в процессе работы/тестов не случилась комбинация условий при которых

оно выпадет.


программа принудительно высывает функцию Close.

-----

Могу повесить закрытие в финалли. Только это без толку - вроде оракловский Клосе

не закрывает коннект, а лишь возвращает его во внутренний пулл.

Это, однако, не решает проблему - коннект - закроется, пусть по таймауту пулла,

а сокет в данной ситуации - не освободится. При этом хандле сокета будет потерян.

Просто потому, что Оракловский Коннецтион НЕ обрабатывает данную ситуацию.

Так что через время система элементарно подвиснет из-за отсутствия возможности

получить новый сокет для коннекта.


Какими тестами ты собираешься гарантированно выяснить данную проблему?

Напомню - Оракловский код - черный ящик и проблема - за пределами твоего кода/тестов.

Просто не могу гарантированно получить все комбинации условий и реакцию системы

и коннектиона...



У тебя же нет тестов, которые проверяют, что ты правильно реагируешь на внештатные ситуации

------

У тебя, однако, их тоже нет.

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

Разница - Я все же пытаюсь выяснить реальную причину и обработать источник проблемы,

ну а ты - проверяешь реакцию своей системы на внештатную ситуацию.

Т.е. у меня кое-как, медленно, но будет работать в указанных условиях,

ну а у тебя будет единственная доступная реакция на нештатную ситуацию - ничего не делаем.



Не надо мне указывать, что именно надо подменять.

-----

Ну здрасте...

Я говорю что именно мне надо проэмулировать, а ты подменяешь задачу совершенно другой.

Причем и в подмененной задаче не можешь гарантировать полное покрытие тестами,

но настаиваешь на том что это единственно правильное решение.



протестировать свой код

-----

Ну хорошо - пусть ты нашел 99% выбрасываемых исключений и даже написал какой-то

функционал по тестированию.

Тебе это как-то поможет:

- определить что ситуация имеет место быть?

- вылечить данную проблему для всех (ора, мс, пост, мускул) коннектинов?


По поводу своего кода Я уже писал - могу задавить проблему у себя в коде. Там - не сложно.

Но вот гарантировать что оно будет 100% работать - нет, не могу. Хоть с тестами, хоть без.



по WLAN?

------

Не-а... Там отдельный, но сертифицированный под местные требования, протокол.

Об этом Я тебе уже говорил - неоднородная там, однако, сеть.



И ты хочешь сказать, что это все правда?

-----

Смотри - ZigBee.


Программист коренной житель09.08.19 13:18
NEW 09.08.19 13:18 
в ответ Murr 09.08.19 10:59
Перечисли, плс, ВСЕ, выбрасываемые в данных условиях, исключения.

Ты на старости лет заболел максимолизмом?


А откуда лог то появится?

Лог появится от клиента. Это не очевидно?


Ну и остается вопрос - что делать с теми исключениями, которые не попали в логи.

В логи не попали те исключения, которые не были выброшены, с ними ничего делать не надо, т.к. их нет.


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

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



Это, однако, не решает проблему - коннект - закроется, пусть по таймауту пулла, а сокет в данной ситуации - не освободится. При этом хандле сокета будет потерян. Просто потому, что Оракловский Коннецтион НЕ обрабатывает данную ситуацию.

Ну да, и твое решение - это залезть рефлекшенами в OracleConnection и ручками закрыть сокет? :D


Какими тестами ты собираешься гарантированно выяснить данную проблему?

Для танкистов: ТЕСТИРОВАНИЕ ПРОВОДИТСЯ НЕ ДЛЯ ТОГО, ЧТОБЫ НАЙТИ НОВЫЕ ПРОБЛЕМЫ. Я не знаю, сколько еще раз тебе это надо повторить.


У тебя, однако, их тоже нет.

Мне и не надо. Это твоя проблема :)


Я говорю что именно мне надо проэмулировать, а ты подменяешь задачу совершенно другой.

Ты пытаешься натянуть сову на глобус. OracleConnection намеренно скрывает от тебя то, как он работает. Для тебя, как пользователя данного класса никаких сокетов не существует. Хочешь работать с сокетами - делай свою реализацию. Если используешь класс OracleConnection, то исходишь из того, что OracleConnection работает правильно (ну или можешь запостить баг репорт в MS, может быть они его когда-нибудь пофиксят).



- определить что ситуация имеет место быть?

Не понял вопроса.


- вылечить данную проблему для всех (ора, мс, пост, мускул) коннектинов?

С ними все тоже самое, что и с ораклом - никто из этих коннектионов не дает тебе доступа к сокетам. Нравится тебе это или нет. Значит либо ты делаешь все сам на сокетах (одинаково для всех), либо принимаешь чужую компоненту и исходить из того, что она работает правильно.


Смотри - ZigBee.

ZigBee не в IP стеке, каким образом наличие ZigBee может повлиять на IP стэк? Может быть у вас там рукожопые админы?

Murr патриот09.08.19 14:40
Murr
NEW 09.08.19 14:40 
в ответ Программист 09.08.19 13:18

Это не очевидно?

-----

Нет.

В случае с дублированным ИП - да будет лог с полной галиматьей из которой невозможно выловить причину.

Во втором случае - не будет никакого лога с ошибками - все операции пройдут штатно.


т.к. их нет.

-----

Кто это определил? Каким методом это сдеано? Есть основания утверждать что применный метод гарантирует их отсутствие?


это залезть рефлекшенами в OracleConnection и ручками закрыть сокет?

-----

Ты умеешь закрывать сокет к которому потерян хандле?

И это... оракловский коннецтион - не обязательно позволит лазить по нему рефлектионом... ну это так, для общего сведения...



OracleConnection намеренно скрывает от тебя то, как он работает.

-----

Мне абсолютно все равно как он работает до тех пор пока он работает.

В данной ситуации - он НЕ работает - не обрабатывает возникшую ситуацию,

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

Сделаю Я это в прикладухе ловя ехцептионы и не гарантируя работоспособность или "починю" что-то еще - это уже моя забота.



исходить из того, что она работает правильно.

-----

Она работает правильно при определенных условиях. По задаче - данные условия - нарушены.

Дальше есть два возможных решения:

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

- устранить причину неработоспособности компонента

Ты пытаешься сделать первое, ну а меня интересует второе.

Один из вариантов для второго - прописать в маршрутизаторе что запросы на определенный порт нужно директить не по ИП, а по МАКу... Но это можно сделать если установлена причина сбоев и есть понимание проблемы. Если чего то из этого нет - а у тестера с твоими требованиями ничего и близко нет - остается бороться со следствиями.


ZigBee не в IP стеке

-----

Ну так Я тебе изначально сказал что сеть неоднородная.


каким образом наличие ZigBee может повлиять на IP стэк?

-----

А зачем ему влиять на ИП-стек? Оно никоим образом не влияет на ИП-стек.


Может быть у вас там рукожопые админы?

-----

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


А вот прогеры точно были никакие.

И работали они точно по описываемой тобою методике.

Но свой код они вылизали на 100%.

И не работает.


Чтобы тебя больше не мучать - понять почему не работает без точных знаний по функционированию ZigBee

все одно не получится - объясню совершенно неочевидную для прогера вещь: переход с ИП-сети на ZigBee

делается через... аналог КОМ-порта. Ограничения - стандартные... для КОМ-порта - буффер и скорость.

На переполнение буфера ZigBee никак внешне не реагирует - никакого ехцептиона к инициатору не уходит.


Ну это из простых и понятных вещей.


Из более сложных - в мире ZigBee существует несколько версий протоколов и несколько наборов команд.

То, что юзверь отправил - пойдет по цепочке ZigBee-устройств, характеристики каждого из которых

могут отличатся. Набор операций, которое способно выполнить первое в цепочке - не есть гарантия

что все остальные будут способны делать тоже самое. Чтобы там гарантировать работоспособность

надо ЗНАТЬ через устройство с каким набором команд и протоколом будет идти обмен. Добавь к этому

носибельность рутеров...

Murr патриот09.08.19 14:58
Murr
NEW 09.08.19 14:58 
в ответ Программист 09.08.19 13:18

ну или можешь запостить баг репорт в MS, может быть они его когда-нибудь пофиксят

-----

Сразу не заметил. но все же спрошу - А когда это мелкомягкие подвязались багтрекить и багфиксить оракловские либы? хаха

AlexNek патриот09.08.19 21:48
AlexNek
NEW 09.08.19 21:48 
в ответ Программист 09.08.19 08:41
то ты в данном случае понимаешь под "приложение работает корректно" и что ты понимаешь под "пользователь не будет видеть там ошибок"?

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

Пользователь то считает, что ошибка в приложении.

AlexNek патриот10.08.19 10:30
AlexNek
NEW 10.08.19 10:30 
в ответ Программист 09.08.19 08:41

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

Играюсь я с Анроидом и Xamarin Forms, пару дней назад прога устанавливалась на смартфон, вчера уже нет. И какой мне юнит тест для этого написать?

MrSanders коренной житель10.08.19 11:31
NEW 10.08.19 11:31 
в ответ AlexNek 10.08.19 10:30, Последний раз изменено 10.08.19 11:31 (MrSanders)

Намекаю - вы пока ещё не поняли что такое юнит-тест.


Возможно никакой, возможно какой-нибудь проверяющий использование только тех функций, которые доступны в андроиде версии x.y

По хорошему вам нужен "деплоймент тест". И да, если хотите чтобы выше приложение работало на андроиде 6.0, 6.1, ... 9.12345 вам надо иметь устройства со всеми этими андроидами, чтобы быть на 95% уверенным что будет работать. Не благодарите, ваш КО.

AlexNek патриот10.08.19 11:43
AlexNek
NEW 10.08.19 11:43 
в ответ MrSanders 10.08.19 11:31
Намекаю - вы пока ещё не поняли что такое юнит-тест.

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


чтобы быть на 95% уверенным что будет работать.

Да для себя я прогу делаю, мне нужно что бы эта скотина хоть на одном единственном устройстве кроме эмулятора запустилась. Раньше вообще даже и не думал про андроид, но с Xamarin можно и поиграться.

...

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

MrSanders коренной житель11.08.19 09:28
NEW 11.08.19 09:28 
в ответ AlexNek 10.08.19 11:43, Последний раз изменено 11.08.19 09:44 (MrSanders)
А конкретно о том что для подобных целей мне НУЖНО использовать юнит тесты.

Ну, я ж и говорю. Пока что не поняли что это такое. Потому что для "подобных целей" (проверить что продукт будет работать в определёном окружении) юнит-тест использовать НЕВОЗМОЖНО. По определению. Юнит-тесты проверяют только ваш код. На уровне функции/метода/класса. Они проверяют функциональность кода, действително ли он делает то что должен (действительно ли bubble_sort() отсортирует переданный список), как код реагирует на исключительные ситуации (вместо списка передали null или пустой список или слишком длинный список, получил exception при попытке считать следующий элемент из списка).


А вот дальше начинаются интеграционные тесты, деплоймент тесты и те пе.


P.S. Юнит-тестом можно проверить, например, что в коде не используется определенная функция какой-нить библиотеки, про которую известно что она приводит к проблемам. Но никак не "проверить что моя аппликуха заработает под андроид x.y".

AlexNek патриот11.08.19 10:24
AlexNek
NEW 11.08.19 10:24 
в ответ MrSanders 11.08.19 09:28
Потому что для "подобных целей" юнит-тест использовать НЕВОЗМОЖНО.

блин, так который уже день пытаюсь это показать...но настаивают на обратном.

MrSanders коренной житель11.08.19 11:10
NEW 11.08.19 11:10 
в ответ AlexNek 11.08.19 10:24

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

AlexNek патриот11.08.19 13:31
AlexNek
NEW 11.08.19 13:31 
в ответ MrSanders 11.08.19 11:10
То программы, которые при отключенном питании у вас "работают" то прочая ересь.

Похоже аналогию "не схватили", типо того, что на ересь отвечают ересью.

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

Murr патриот11.08.19 13:31
Murr
NEW 11.08.19 13:31 
в ответ MrSanders 11.08.19 11:10

которые при отключенном питании у вас "работают"

------

В таблетах, на андроиде, некоторые из прожек имено работают и имено при отключенном питании.


AlexNek патриот11.08.19 14:17
AlexNek
NEW 11.08.19 14:17 
в ответ Murr 11.08.19 13:31
именно при отключенном питании.

скорее при отключенном зарядном устройстве и выключенном экране.

Murr патриот11.08.19 16:33
Murr
NEW 11.08.19 16:33 
в ответ AlexNek 11.08.19 14:17

скорее при отключенном зарядном устройстве и выключенном экране.

-----

Я тоже когда-то считал, что Power Off есть режим Выключено.

Тем не менее таблет в этом режиме продолжает довольно активно сосать акку, если не озаботится убиванием нескольких прог.

MrSanders коренной житель11.08.19 18:44
NEW 11.08.19 18:44 
в ответ AlexNek 11.08.19 13:31
Ну не знаю я как я еще можно аргументировать, что в той ситуации как было юнит тест не лезет ни в какую дырку.

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

AlexNek патриот11.08.19 20:57
AlexNek
NEW 11.08.19 20:57 
в ответ Murr 11.08.19 16:33
Тем не менее таблет в этом режиме продолжает довольно активно сосать акку

где то подобное поведение еще описано?

AlexNek патриот11.08.19 20:59
AlexNek
NEW 11.08.19 20:59 
в ответ MrSanders 11.08.19 18:44
Я не помню,

Вроде тут началось плюс еще мурка...

https://foren.germany.ru/showmessage.pl?Number=35504473&Bo...

Программист коренной житель11.08.19 22:52
NEW 11.08.19 22:52 
в ответ Murr 09.08.19 14:40
Ты умеешь закрывать сокет к которому потерян хандле? И это... оракловский коннецтион - не обязательно позволит лазить по нему рефлектионом... ну это так, для общего сведения...

Ну в таком случае расскажи мне, каким образом ты из своего софта исправляешь ошибку с двумя IP?


Дальше есть два возможных решения:
- устранить последствия неработоспособности компонента
- устранить причину неработоспособности компонента
Ты пытаешься сделать первое, ну а меня интересует второе.

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


Один из вариантов для второго - прописать в маршрутизаторе что запросы на определенный порт нужно директить не по ИП, а по МАКу...

И это делает твой софт, которой работает на клиенской машине? :) Ну-ну :)


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

Тестер такой хренью вообще заниматься не будет. Тестер не должен докапываться до причин проблемы. Задача тестера - запустить тест и убедиться, что тест "зеленый". Если тест "красный", то зарепортить баг и описать сделанные шаги, чтобы разработчик мог этот баг воспроизвести. Кстати, если баг по какой-либо причине нельзя воспроизвести, то и пофиксить его нельзя.


переход с ИП-сети на ZigBeeделается через... аналог КОМ-порта.

У тебя там еще и переход добавился? :) ZigBee никак не пересекается с IP, о каком переходе речь?


Добавь к этомуносибельность рутеров...

И умножь на рукожопость админов.

MrSanders коренной житель11.08.19 22:52
NEW 11.08.19 22:52 
в ответ AlexNek 11.08.19 20:59

Ну, котика я отфильтровываю, а в сообщении по ссылке никаких затыканий дырок не вижу.

Узнал (из опыта) что от библиотеки Х может прилететь исключение, добавляем в код разумную обработку такого исключения и юнит-тест с моком/стабом/фейком библиотечного вызова, который бросает эксепшен, а тест проверяет что наш код его правильно обработает. Что не так?

4 5 6 7 8 9 10 11 12 13 14 все