|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
Petro123зачем так узко? дело не в узко, а в том, что я тогда вообще не понимаю, что у людей лежит в src/test ))) Для меня, src/test в первую очередь "проверка того, что не нарушилась работоспособность работающей ранее функциональности, если её код мог быть затронут при исправлении некоторых дефектов в другой функциональности" ( C ) wiki ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2019, 15:30 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
тут некоторые 1500 раз свой код запускают поэтому им эти твои проверки ни разу не нужны. да и вообще тесты это потеря времени. ты о чем воще. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2019, 15:49 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
andreykaTтут некоторые 1500 раз свой код запускают поэтому им эти твои проверки ни разу не нужны. да и вообще тесты это потеря времени. ты о чем воще. Я с трудом себе представляю как можно после крупного рефакторинга по "щелчку пальцев" определить что ничего не сломалось. Мне кажется - только автоматизация. Кто там 1500 раз делает? Покажите мне этого человека. И что он это делает каждый день? Или по изменению? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2019, 15:53 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
andreykaT, Ты проснулся. Поздравляю. Если такие как ты говорят что тестируют, то пусть расскажут как. Где твой интеграционный? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2019, 16:13 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
maytonКто там 1500 раз делает?я делаю))). Но я готов покаятся, если будет автоматизация. Никто не показал. Один пример выше был, там dsl и огурцы учить надо). ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2019, 16:16 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
Petro123maytonКто там 1500 раз делает?я делаю))). Но я готов покаятся, если будет автоматизация. Никто не показал. Один пример выше был, там dsl и огурцы учить надо). Дай бох. Я надеюсь что про 1500 раз ты пошутил. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2019, 16:17 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
mayton, if на пять веток напишу и 5 раз запускаю. Раз в 5 минут примерно запускаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2019, 16:19 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
maytonнадеюсь что про 1500 раз ты пошутил.надеюсь про то что запуск 10 мин. Тут тоже шутят? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2019, 16:20 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
Petro123maytonнадеюсь что про 1500 раз ты пошутил.надеюсь про то что запуск 10 мин. Тут тоже шутят? Смотря что. Биржевая система греет кеши примерно 20 минут. Для поднятия в стеке Jenkins. Но это для end-to-end. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2019, 16:29 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
maytonНо это для end-to-end.вот и я говорю. Все про крайности. Я про 1500 запусков. Другой про 10мин и он пишет по памяти-тестам с черной повязкой. Третий с огурцами) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2019, 16:49 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
alex55555казинака откуда взялся "дополнительный, таки не протестированный метод" ? От прошлых подвигов, например. Тебе надо понять одно - программирование не заканчивается на одном единственном кейсе. И не начинается с одного единственного кейса. Это процесс. Он долгий. Кейсов много. И они наслаиваются. И когда кто-то поступает по твоему, то всегда получает косяки из-за наслоений, потому что проверяет только то, что ему кто-то написал в данном кейсе. это в ипанутых системах они наслаиваются патамушта там поклоняются фаулеру и пишут километры оберток (лейеров), то бишь универсальных классов, которые должны использоваться ВЕЗДЕ а в норм системах, парэкзампль, изменение в логике начисления процентов не сломает заведение договоров патамушто норм система реализована модульно, и в случае выхода из строя одного модуля, другие не ломаются ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2019, 18:14 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
Андрей ПанфиловSergunkaРасскажите, не надо стеснятся Тут народ уже 7 страниц спорит о том, что тесты вроде как хорошая штука, вот только они должны быть по делу, а не просто для увеличения покрытия, потому что последняя метрика в действительности мало о чемвообще ни о чем не говорит, потом вы приходите весь в белом и говорите: эй, пацаки, тут есть подход fucking around driven development - там уже все продумано за вас, есть аж специальный DSL, нужно только реализовывать то что в жире написали и все будет хорошо. Ну давайте посмотрим на ваш cucumber... Сценарий: Код: sql 1. 2. 3. 4. 5.
"Реализация": Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Ну, во-первых, никакого DSL какбы и нет - ну позволяет оно каким-то образом параметризовывать (у вас зачистку тестовых данных перед выполнением сценария не увидел, но будем считать что оно может иметь место) тесты через регулярные выражения (буэээ) и какие-то простенькие списки pojo (что если перед тестом нужно мегабайт сильно связных данных в базу пролить?) и на этом все, зато разработчик этих "сценариев" начинает чувствовать себя не обезьяной, а чем-то большим во-вторых, помимо того, что нужно писать сами тесты, добавляется еще обязанность писать всю эту обвязку к cucumber, при этом очевидно, что все будущие потребности "сценариев" с первого раза не покрыть, поэтому эту лапшу придется постоянно переписывать (есть мнение, что если придется тестировать граничные случаи, то cucumber будет только мешаться) в-третьих, "корректность" реализации теста отдается на откуп непонятно кому: вот у вас в сценарии написано что должен прийти список из трех стран, а вы проверяете только вхождение одного набора в другой, т.е. если в вашем тесте сервис вернет больше стран или дубли, то тест все равно будет успешным - ну и зачем такой тест нужен? В целом, подход, который вы пропагандируете, хорош только тем, что он снимает ответственность с разработчика: вот какие сценарии мне написали, такие приложение и проходит, однако к правильной работе приложения это не имеет никакого отношения - все то же самое что и с метрикой покрытия. Извините, Вы специально вырвали из контекста сам тест? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44.
https://github.com/SVyatkin/ads-bdd/blob/master/src/test/resources/Cucumber/IntegrationTest/customer/CountryCities_Test.feature Я тестирую то, что написано в ценарии не более того Код: sql 1. 2. 3.
Вам перевести с английского на русский? Ваши притензии из разряда зачем было Генри Форду устраивать конвейр? Это же столько дополнительного оборудования? Пусть работяги бегают вокруг машины и гайки крутят Я беспорно благодарен Вашему стремлению разобраться с вопросом для Вас лично, что такое тетстирование и все такое... мне лично приятно, что Вы прочитали мой код и сделали отличные выводы. Но поймите этот код я опубликовал несколько для других целей кроме того как поделится как у нас в конторе дело обстоит хотелось бы услышать как это дело обстоит в других конторах. Моему коду уже без малого лет пять неужели никто так особо и не продвинулся из уважаемой публики?! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2019, 18:32 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
Petro123 Один пример выше был, там dsl и огурцы учить надо). Из моего опыта это занмает пару сессий т.е. часа два/три, чтоб вменяемый разработчик стал писать огурцами. Самому сидеть разбираться видимо займет пару тройку дней, но тоже не смертельно. Просто когда над проектом работают две\три комманды по человек пять другого варианта я просто не вижу. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2019, 18:39 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
SergunkaИзвините, Вы специально вырвали из контекста сам тест?Так вы чтоли не поняли что ваши тесты неправильные? Давайте еще раз: Код: java 1. 2. 3. 4. 5. 6. 7.
Ожидание сценария: должен вернуться определенный список стран Реализация теста: в возвращенном списке стран присутствуют ожидаемые т.е. если вот в этом сценарии: Код: java 1. 2. 3. 4.
Сервис вернет еще и Мексику, то тест все равно пройдет - такие тесты не нужны, никому, совсем. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2019, 18:51 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
Андрей ПанфиловSergunkaИзвините, Вы специально вырвали из контекста сам тест?Так вы чтоли не поняли что ваши тесты неправильные? Давайте еще раз: Код: java 1. 2. 3. 4. 5. 6. 7.
Ожидание сценария: должен вернуться определенный список стран Реализация теста: в возвращенном списке стран присутствуют ожидаемые т.е. если вот в этом сценарии: Код: java 1. 2. 3. 4.
Сервис вернет еще и Мексику, то тест все равно пройдет - такие тесты не нужны, никому, совсем. Вы реально еще и программировать не умеете "на сухую". Ну проверьте, что вам вернет Assert.isTrue(set.containsAll(set1)); containsAll(Collection<?> c) Returns true if this set contains all of the elements of the specified collection. если в set1 будет еще и Мексика то ассеt выкинет ошибку На самом деле будет логическая ошибка если вернется только одна страна USA или Canada. Ну, так спасибо, конечно, поржал ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2019, 19:47 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
SergunkaВы реально еще и программировать не умеете "на сухую". Ну проверьте, что вам вернет Assert.isTrue(set.containsAll(set1)); containsAll(Collection<?> c) Returns true if this set contains all of the elements of the specified collection. если в set1 будет еще и Мексика то ассеt выкинет ошибку На самом деле будет логическая ошибка если вернется только одна страна USA или Canada. Ну, так спасибо, конечно, поржал Вот зачем вы что-то пишете про Генри Форда, если сами не в состоянии сравнить два сраных списка? Очередная попытка: Код: java 1. 2. 3. 4. 5. 6. 7.
List<String> countries - то что пишло из сценария, т.е. [USA, Canada], превращается в set1 (new HashSet<String>(countries)) this.countries - то что пришло из сервиса: Код: java 1. 2. 3. 4.
превращается в set, теперь вопрос на засыпку: что вернет [USA, Canada, Mexico].containsAll([USA, Canada])? Вы можете продолжать дальше ржать сколько угодно, однако мнение о себе вы уже составили, ровно как и о General Electric. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2019, 19:58 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
Андрей ПанфиловSergunkaВы реально еще и программировать не умеете "на сухую". Ну проверьте, что вам вернет Assert.isTrue(set.containsAll(set1)); containsAll(Collection<?> c) Returns true if this set contains all of the elements of the specified collection. если в set1 будет еще и Мексика то ассеt выкинет ошибку На самом деле будет логическая ошибка если вернется только одна страна USA или Canada. Ну, так спасибо, конечно, поржал Вот зачем вы что-то пишете про Генри Форда, если сами не в состоянии сравнить два сраных списка? Очередная попытка: Код: java 1. 2. 3. 4. 5. 6. 7.
List<String> countries - то что пишло из сценария, т.е. [USA, Canada], превращается в set1 (new HashSet<String>(countries)) this.countries - то что пришло из сервиса: Код: java 1. 2. 3. 4.
превращается в set, теперь вопрос на засыпку: что вернет [USA, Canada, Mexico].containsAll([USA, Canada])? Вы можете продолжать дальше ржать сколько угодно, однако мнение о себе вы уже составили, ровно как и о General Electric. Я Вас вроде как поблагодарил за проделанную работу Меня всегда умиляют люди которые так долго что-то пытаются доказать когда фикс очевидный и занимает одну строку. Тем более Вы смотрите не на тот метод который возращает по имени города страны Код: sql 1. 2. 3. 4.
Ну, надо подфиксить метод типо так, чтоб было тождественное равенство Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
По понятным причинам Вы не удосужились показать как у вас пишут тесты. Очень жаль надеялся увидеть, что-то исключительно героическое ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2019, 20:46 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
SergunkaНу, надо подфиксить метод типо так, чтоб было тождественное равенство Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Вы еще день будете осознавать, что сравнение наборов - это не то же самое что сравнение списков. SergunkaПо понятным причинам Вы не удосужились показать как у вас пишут тесты. Очень жаль надеялся увидеть, что-то исключительно героическое Демонстрирую мастер-класс на примере того как должен был выглядеть ваш сценарий: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61.
выхлоп: Код: plaintext 1. 2. 3. 4.
заметьте, что: - никаких преобразований списков одних сущностей в наборы других - точное соответствие поставленным целям - текст сообщения об ошибке говорит сам за себя, а не какая-то пустота в случае Assert.true() ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2019, 21:33 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
Андрей ПанфиловSergunkaНу, надо подфиксить метод типо так, чтоб было тождественное равенство Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Вы еще день будете осознавать, что сравнение наборов - это не то же самое что сравнение списков. SergunkaПо понятным причинам Вы не удосужились показать как у вас пишут тесты. Очень жаль надеялся увидеть, что-то исключительно героическое Демонстрирую мастер-класс на примере того как должен был выглядеть ваш сценарий: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61.
выхлоп: Код: plaintext 1. 2. 3. 4.
заметьте, что: - никаких преобразований списков одних сущностей в наборы других - точное соответствие поставленным целям - текст сообщения об ошибке говорит сам за себя, а не какая-то пустота в случае Assert.true() Иными словами Вам удалось освоить JUnit test... поздравляю нормальный результат... есть куда рости ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2019, 22:08 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
Sergunka, Мне ваши тесты нравятся. Про себя unit test-ы мне всегда нравились и когда есть время пишу с удовольствием. Появление всяких mock-ов, я видимо так и не осилил. Я не понимаю зачем тестировать контроллеры, когда в них вся реализация сервисов подменена. На мой взгляд это тестирование тестового кода. И целосообразность подмены вижу только чтобы тестировать отказы (выбрасывая Exception). Недавно открыл для себя test containers. Поэтому новый модуль который пишу постараюсь покрыть приемочными тестами на (TestContainers + Selenium). Ну и возможно BDD, но тут еще посмотрим. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2019, 23:23 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
vas0Sergunka, Мне ваши тесты нравятся. Про себя unit test-ы мне всегда нравились и когда есть время пишу с удовольствием. Появление всяких mock-ов, я видимо так и не осилил. Я не понимаю зачем тестировать контроллеры, когда в них вся реализация сервисов подменена. На мой взгляд это тестирование тестового кода. И целосообразность подмены вижу только чтобы тестировать отказы (выбрасывая Exception). Недавно открыл для себя test containers. Поэтому новый модуль который пишу постараюсь покрыть приемочными тестами на (TestContainers + Selenium). Ну и возможно BDD, но тут еще посмотрим. Моки нужны чтобы подменять сложные источники данных которые в фазе модульного тестинга недоступны (базы данных и внешние веб-сервисы). Во всех остальных случаях внедрение моков в тест нужно очень сильно обосновывать т.к. здесь может быть скрыта немалая часть архитектурных ошибок и упущений. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2019, 23:31 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
vas0Недавно открыл для себя test containers. Поэтому новый модуль который пишу постараюсь покрыть приемочными тестами на (TestContainers + Selenium). Ну и возможно BDD, но тут еще посмотрим. У меня друг тестировщик недавно перешел на карате для тестирования Rest API https://github.com/intuit/karate Говорит, что очень просто и крепко сделанный продукт опять же с огурцами Может кому подойдет походу. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2019, 23:50 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
mayton, За свой опыт не видел ни один проект, в котором мне использование моков бы понравилось. При взгляде на который бы сказал "Да классно сделано". Тот код который я видел обычно называют код с душком. Мок на моке сидит и моком погоняет. И непонятно что там вообще тестируется. При этом подготовка моков это целые "портянки кода". Еще один недостаток в том что любое изменение очень сильно бьет по всем тестам. На мой взгляд лучше время на приемочные тесты тратить они более высокоуровневые и меньше подвержены внутренним изменениям. Ну и покрыв основные сценарии, получаешь хорошие регрессионные тесты. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2019, 23:53 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
vas0mayton, За свой опыт не видел ни один проект, в котором мне использование моков бы понравилось. При взгляде на который бы сказал "Да классно сделано". Тот код который я видел обычно называют код с душком. Мок на моке сидит и моком погоняет. И непонятно что там вообще тестируется. При этом подготовка моков это целые "портянки кода". Еще один недостаток в том что любое изменение очень сильно бьет по всем тестам. На мой взгляд лучше время на приемочные тесты тратить они более высокоуровневые и меньше подвержены внутренним изменениям. Ну и покрыв основные сценарии, получаешь хорошие регрессионные тесты. Можешь показать эти "портянки кода" ? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2019, 00:19 |
|
Тестирование. Что именно тестировать? Как определить середину?
|
|||
---|---|---|---|
#18+
mayton, ну это примерно вот такие вещи Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2019, 00:45 |
|
|
start [/forum/topic.php?fid=59&msg=39800040&tid=2121354]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
162ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 285ms |
0 / 0 |