Причём и под Linux и под windows.собственно говоря из-за Linux все и началось. Надо было писать под обе системы и очень не хотелось привыкать к разным редакторам. Под виндой в то далекое время сидел на SlickEditor. Может он жив ещё не знаю :)
Чем же «мобильный QA” от не «мобильного» отличается? Тем более что дальше вы говорите:
« и тест упадёт хотя функционал работает» исходя из этой фразы можно предположить что функционал должен работать и в мобильной и в десктопный версии.
Мне кажется что ваша позиция обусловлена тем, что вы и заказчик и исполнитель в одном лице. Все меняется если разработка отдана на аутсорс одной компании а QA тестирование делается своими силами или силами другой компании. Тогда у разработчика нет возможности сказать «это не баг -это фича» поскольку QA проверяют то что написано в тесте а не то что разработчик/ аналитик подумал. Когда у вас за Х*1000 тестов, ваши подходы не сработают. Тест должен один в один совпадать со спецификацией.
Иначе будет такой треш, что сам черт ногу сломит.
P.S. В рамках собеседования я ответил на ваш вопрос? :)
Вообще-то: Other names for this idiom include Constructor Acquires, Destructor Releases (CADRe)[9] and one particular style of use is called Scope-based Resource Management (SBRM).[10]
Если вы не передаёте все параметры в конструкторе, то скорее всего resource acquisition случается в коде. Что нарушает идиому.
Как писал в качестве примера C sharp и иже с ним где после создания объекта 30 строчек инициализации
« В задаче сказано, что это поисковая выдача вакансий, значит, скорее всего, она состоит из одинаковых по коду элементов, по умолчанию имеющих одинаковый идентификатор, что приведет к ошибке автотеста, либо к проверке не того элемента. Так же совершенно неправильно явно указывать количество скроллов, так как UI автотесты могут гоняться на разных разрешениях экранов. Сегодня на экран помещается 2–3 вакансии, а завтра 5–6, и тест упадет, хотя функционал работает ». Он исправился и в конце выдал кусочек идеальнейшего кода.»
Вот таких собеседователей надо гнать поганой метлой.
Сначала дели конкретное задание для теста:
Задача: необходимо проверить поисковую выдачу, в поисковой выдаче — карточки вакансий. Тебе нужно проверить корректность 21-й карточки в выдаче, при условии, что на 1 экран помещается в среднем 2-3 карточки. Как ты автоматизируешь эту проверку?
А потом сказали что надо было решать совершенно другую задачу.
Возможно это и есть причина почему на Хабре за все эти годы баги не вычистили.
Вам аналитик/ или кто-то там поставил задачу -автоматизировать тест. С конкретными условиями, а потом говорит что тест «не торт» и писать надо было другое.
Если в условиях теста сказано что выдают по 2-3 карточки значит выдача по 3-4 или иному числу- ошибка- тест должен упасть.
Если сказали что надо 21/2 или 21/3 скроллом значит их столько и должно быть.
Если у вас задача протестировать алгоритм выдачи, то не важно сколько элементов выдал запрос. Тогда можно тупо тестировать первый элемент.
Если нужно просто протестировать скроллинг то нужно тестировать 1- вый, последний в первом экране, первый на втором экране, последний на втором экране и последний элемент в выдаче.
Если надо тестировать алгоритм разбиения на страницы то так и надо ставить задачу:
Есть поисковая выдача состоящая из M, нет M мало, пусть будет N, элементов. Алгоритм разбивает ее на страницы по K Элементов проверьте правильность разбиения на страницы при N: 1,2,3, 16,255,256,1023,1024,1025 элементов и k: 1,2,3,5,7,9,10,11,31,32,64,65,100,101…
Мы писали, мы писали…. Читателя ведь не процесс а результат интересует. На что обижаться? Что ваш выстраданный потом и кровью текст в итоге похож на выброс чата ГПТ? Бывает… То-ли у Марка Твена то-ли у О’Генри был рассказ как он с газетой сотрудничал и должен был регулярно юмористические рассказы писать. Поищите вам понравится.
Я что-то упустил? Если убрать воду про версии http, и виды запросов (не думаю что кто-то на Хабре не знает про них, если что wiki в помощь) то остаётся только рекомендация запустить Putty под Windows.
Кстати стал искать ссылку на исследование. Небыли такого эксперимента. Плюс у приматов есть альфа/бета и и.д. Самцы вполне возможна ситуация когда в группу «сухой» альфа самец. Так что система сразу рухнет.
Бросать исключения последнее дело. Его кто-то должен обработать. MS этим грешит бросает исключения тут и там при попытке получить элемент из коллекции которого там нет, потом делают велосипед ввиду отдельной функции: tryGetElement.
Это дело вызывающей стороны решать что делать с результатом и как его интерпретировать.
Идея в том что null это «не правильный элемент» который делает «неправильный мёд»
В большинстве языков вам придётся заморачиваться с возвратом объекта/Клемента другого типа: null вместо условного list
При этом пустой список это всегда «валидный» элемент. Код дальше может передавать его вызывающим функциям без нарушения структуры типов. Грубо говоря, если у вас функция которая вернула null находится на 5-уровне вложенности то всем 5 уровням надо как то реагировать на Null.
В случае пустого списка - все промежуточные функции просто передают результат на верх, где кто надо разберётся.
Опять таки вы на нижестоящих уровнях не знаете семантики вызова и явятся ли отсутствие элемента ошибкой или допустимым исходом.
Пустой список решает эту проблему, поскольку решение принимает вызывающий код.
В C++ есть правило resource initialization is resource acquisition. Идеология в том что параметры должны передаваться в конструкторе класса и потом создавать экземпляр. А не как можно/молодёжно в C - сначала создать экземпляр а потом на 30 строчках кожа устанавливать его значения.
Если вас такая идеология не устраивает то претензии к Автору языка. Это не баг—это фича
Вы не любите кошек? Вы просто не умеете их готовить.
по поводу setter/getter который автор пытается использовать для работу с элементами вектора -вообще-то есть перегрузка операторов, которая в вашем конкретном примере сократит синтаксис.
Пользоваться или нет -решать вам.
Опять же чтобы инклуды не просились каждый раз, давно придумано
If defined module_included …
Это вроде азбука объявлений header файлов в С/С++.
Автор судя по пассажу «я нажимаю определённую комбинацию клавиш и …»
Писал явно ChatGpt.
Либо надо писать какую комбинацию клавиш нажимает автор:
У меня на сочетание клавиш …. Настроен вызов макроса который ….
Поскольку нельзя нажать «неопределенную комбинацию клавиш» :)
здравствуйте, меня зовут Вася и я использую vim
Причём и под Linux и под windows.собственно говоря из-за Linux все и началось. Надо было писать под обе системы и очень не хотелось привыкать к разным редакторам. Под виндой в то далекое время сидел на SlickEditor. Может он жив ещё не знаю :)
Только вчера про чат-гпт статьи писали и вот тебе бабушка и Юрьев день, снова она.
Вы бы хоть примеры ответов добавили.
Чем же «мобильный QA” от не «мобильного» отличается? Тем более что дальше вы говорите:
« и тест упадёт хотя функционал работает» исходя из этой фразы можно предположить что функционал должен работать и в мобильной и в десктопный версии.
Мне кажется что ваша позиция обусловлена тем, что вы и заказчик и исполнитель в одном лице. Все меняется если разработка отдана на аутсорс одной компании а QA тестирование делается своими силами или силами другой компании. Тогда у разработчика нет возможности сказать «это не баг -это фича» поскольку QA проверяют то что написано в тесте а не то что разработчик/ аналитик подумал. Когда у вас за Х*1000 тестов, ваши подходы не сработают. Тест должен один в один совпадать со спецификацией.
Иначе будет такой треш, что сам черт ногу сломит.
P.S. В рамках собеседования я ответил на ваш вопрос? :)
Вообще-то: Other names for this idiom include Constructor Acquires, Destructor Releases (CADRe)[9] and one particular style of use is called Scope-based Resource Management (SBRM).[10]
Если вы не передаёте все параметры в конструкторе, то скорее всего resource acquisition случается в коде. Что нарушает идиому.
Как писал в качестве примера C sharp и иже с ним где после создания объекта 30 строчек инициализации
« В задаче сказано, что это поисковая выдача вакансий, значит, скорее всего, она состоит из одинаковых по коду элементов, по умолчанию имеющих одинаковый идентификатор, что приведет к ошибке автотеста, либо к проверке не того элемента. Так же совершенно неправильно явно указывать количество скроллов, так как UI автотесты могут гоняться на разных разрешениях экранов. Сегодня на экран помещается 2–3 вакансии, а завтра 5–6, и тест упадет, хотя функционал работает ». Он исправился и в конце выдал кусочек идеальнейшего кода.»
Вот таких собеседователей надо гнать поганой метлой.
Сначала дели конкретное задание для теста:
Задача: необходимо проверить поисковую выдачу, в поисковой выдаче — карточки вакансий. Тебе нужно проверить корректность 21-й карточки в выдаче, при условии, что на 1 экран помещается в среднем 2-3 карточки. Как ты автоматизируешь эту проверку?
А потом сказали что надо было решать совершенно другую задачу.
Возможно это и есть причина почему на Хабре за все эти годы баги не вычистили.
Вам аналитик/ или кто-то там поставил задачу -автоматизировать тест. С конкретными условиями, а потом говорит что тест «не торт» и писать надо было другое.
Если в условиях теста сказано что выдают по 2-3 карточки значит выдача по 3-4 или иному числу- ошибка- тест должен упасть.
Если сказали что надо 21/2 или 21/3 скроллом значит их столько и должно быть.
Если у вас задача протестировать алгоритм выдачи, то не важно сколько элементов выдал запрос. Тогда можно тупо тестировать первый элемент.
Если нужно просто протестировать скроллинг то нужно тестировать 1- вый, последний в первом экране, первый на втором экране, последний на втором экране и последний элемент в выдаче.
Если надо тестировать алгоритм разбиения на страницы то так и надо ставить задачу:
Есть поисковая выдача состоящая из M, нет M мало, пусть будет N, элементов. Алгоритм разбивает ее на страницы по K Элементов проверьте правильность разбиения на страницы при N: 1,2,3, 16,255,256,1023,1024,1025 элементов и k: 1,2,3,5,7,9,10,11,31,32,64,65,100,101…
Мы писали, мы писали…. Читателя ведь не процесс а результат интересует. На что обижаться? Что ваш выстраданный потом и кровью текст в итоге похож на выброс чата ГПТ? Бывает… То-ли у Марка Твена то-ли у О’Генри был рассказ как он с газетой сотрудничал и должен был регулярно юмористические рассказы писать. Поищите вам понравится.
Я что-то упустил? Если убрать воду про версии http, и виды запросов (не думаю что кто-то на Хабре не знает про них, если что wiki в помощь) то остаётся только рекомендация запустить Putty под Windows.
Теоретически. А практически вылезают всякие edge cases , и пошли пляски с бубном.
Простейший пример. Есть поле со списком элементов. Храним element-id а показываем element-name. Без бубна нормально реализовать не получиться. :(
Ага теперь получилось «кто не спрятался я не виноват» то что все предупреждены не решает проблему с обработкой null.
Кстати стал искать ссылку на исследование. Небыли такого эксперимента. Плюс у приматов есть альфа/бета и и.д. Самцы вполне возможна ситуация когда в группу «сухой» альфа самец. Так что система сразу рухнет.
Бросать исключения последнее дело. Его кто-то должен обработать. MS этим грешит бросает исключения тут и там при попытке получить элемент из коллекции которого там нет, потом делают велосипед ввиду отдельной функции: tryGetElement.
Это дело вызывающей стороны решать что делать с результатом и как его интерпретировать.
Идея в том что null это «не правильный элемент» который делает «неправильный мёд»
В большинстве языков вам придётся заморачиваться с возвратом объекта/Клемента другого типа: null вместо условного list
При этом пустой список это всегда «валидный» элемент. Код дальше может передавать его вызывающим функциям без нарушения структуры типов. Грубо говоря, если у вас функция которая вернула null находится на 5-уровне вложенности то всем 5 уровням надо как то реагировать на Null.
В случае пустого списка - все промежуточные функции просто передают результат на верх, где кто надо разберётся.
Опять таки вы на нижестоящих уровнях не знаете семантики вызова и явятся ли отсутствие элемента ошибкой или допустимым исходом.
Пустой список решает эту проблему, поскольку решение принимает вызывающий код.
С чем коллеги не согласны? С тем что 50k usd маленькая зарплата для штатов или что там отпуск стандартный 14 дней?
И ещё главы про экологию
И безопасность труда :)
Им пользуюсь/пользовался, не вспомнил сразу а искать было день :)
Как вариант всегда возвращать коллекцию элементов.
Решает проблему если у вас больше одного элемента в коллекции -возвращаете все дальше дело клиента что с ними делать.
Если элементов нет - возвращаете пустую коллекцию.
Пытаюсь делать хобби проект на htmx концепция классная но гемор ещё тот :(
В C++ есть правило resource initialization is resource acquisition. Идеология в том что параметры должны передаваться в конструкторе класса и потом создавать экземпляр. А не как можно/молодёжно в C - сначала создать экземпляр а потом на 30 строчках кожа устанавливать его значения.
Если вас такая идеология не устраивает то претензии к Автору языка. Это не баг—это фича
Вы не любите кошек? Вы просто не умеете их готовить.
по поводу setter/getter который автор пытается использовать для работу с элементами вектора -вообще-то есть перегрузка операторов, которая в вашем конкретном примере сократит синтаксис.
Пользоваться или нет -решать вам.
Опять же чтобы инклуды не просились каждый раз, давно придумано
If defined module_included …
Это вроде азбука объявлений header файлов в С/С++.