Компания "ПрограмПарк" - разработчик интеллектуальных информационных систем примет на постоянную работу Разработчика авто-тестов в Отдел разработки платформы на полный рабочий день.
Суть работы: Постановка автоматизированного тестирования в Отделе разработки ядра платформы, на которой строятся проекты автоматизации Московского Метрополитена и РЖД.
Требования:
· знание и уверенное владение Java (опыт программирования или опыт написания авто-тестов на Java, как вариант – Ruby, C#, javascript, shell),
· умение и желание разбираться в чужом исходном коде,
· опыт функционального и нагрузочного тестирования распределенных систем,
· опыт работы с БД (Oracle, Postgres),
· желание заниматься автоматизацией тестирования (нагрузочное, функциональное, регрессионное),
· базовыезнания unix shell, windows command line
Желательно:
· опыт работы со скриптовыми языками (Ruby, JS)
Обязанности:
· развертывание стенда для автоматизации тестирования существующих модулей ядра платформы,
· создание автоматических функциональных и нагрузочных тестов (совместная работа с другими разработчивами ядра платформы),
· реализация и совершенствование сервисных функций платформы: мониторинг, администрирование
Условия:
· Офис в ЦАО, шаговая доступность от м. Савеловская, м. Марьина Роща, м. Менделеевская/Новослободская,
· фиксированный оклад о 110-130 000 руб. - обсуждается с каждым кандидатом индивидуально, зависит от его опыта и навыков,
· оформление по ТК, стабильная выплата заработной платы, оплачиваемый отпуск, премии по результатам завершения проектов и по итогам года,
· серьезные профессиональные задачи
Информация и связь по e-mail - people@programpark.ru или по телефону (495) 660-32-95, доб номер 2047, с 11.00 до 18.30 в будние дни
Я несколько недель наблюдал за использованием тест-кейсов в проекте по разработке ПО. Команда приступила к созданию кейсов, когда функциональные спецификации были объявлены достаточно проработанными. Кейсы были разбиты на отдельные шаги и заведены в систему управления тестами (в данном случае - в HP Quality Center). Они были проанализированы, и команда планировала приступить к их выполнению, как только продукт будет передан в тестирование.
После утверждения спецификаций прошло несколько недель, а создание продукта продвинулось очень недалеко. Тестировщики решили, что это отличная возможность поработать над тест-кейсами. Используя момент затишья перед бурей, они планировали выполнить всю подготовительную работу, чтобы быть готовыми к бою, когда первая часть программы будет передана в тестирование. К сожалению, подготовительная работа заключалась в детальной проработке тест-кейсов для программы, которая еще не была разработана, и чей функционал был толком неизвестен. К тому же тесты основывались на спецификации, которая, как выяснилось, была неполной.
Легко догадаться, что произошло потом. Когда программа была передана в тестирование, оказалось, что техническое воплощение было не таким, как предполагали тестировщики, а спецификация, приоритеты проекта и его основные задачи изменились из-за новых требований клиента. Тестировщики готовились обороняться от вооруженной копьями пехоты - а столкнулись с гаубицами. Конечно, им пришлось отступить.
Стал глядеть в сторону White для тестирования winforms приложения и столкнулся с проблемой с ToolStripButton кнопками которые добавлены toolStrip контейнер в таком порядке:
toolStip
- button one
- button two
- combobox one
- drop down one
- button three
у кнопок если смотреть через UIA Verify/Inspect/Spy нет autiomationID :(
Но вроде работает поиск по свойству Text,, вот так:
Cтрою страницы из блоков, обычным объявлением агрегируемых страниц в виде полей. Переходы межу страницами идут иногда через обобщенные страницы (делегированием), иногда напрямую; методы страниц возвращают либо себя, либо другую страницу (Flow). Но как быть с незначительными отличиями некоторых страниц/блоков (и в тоже время полной идентичностью некоторых других страниц) для авторизованных и неавторизованных пользователях?
Пыталась применить паттерн Стратегия, но так и не поняла куда девать класс контекст и как его использовать, ну и в самих алгоритмах для авторизованного и неавторизованного юзера мне не понятно что написать. Сейчас у меня обычные if/else и метод IsLogged() (+ методы GoToLogin(AccountData accountData), GoToLogout), а также по-сути некоторые блоки имеют замену для авторизованных пользователей (например есть HeaderForLoggedUser с кнопками "Logout", "Cart", "My Profile" и его аналог HeaderForUnLoggedUser, у которого есть только кнопка "Sign in" ). + мне надо как то написать тест на проверку разной цены на странице выдачи товаров и на странице товара для пользователей разных категорий и совсем неавторизованных.
Также для авторизованных пользователей может быть на пару страниц-блоков больше на агрегирующей странице, чем для неавторизованных.
Как это все лучше реализовать? Пыталась переделать пример с наследованием от AuthTestBase или просто TestBase, не помогло, потом начала смотреть в сторону двух разных предков AuthPageBase и PageBase, но как тоже тупик. Вариант с множеством классов для страниц кажется все равно проще..
+ Не могу понять, надо ли делать какое то статичное поле с данными аккаунта пользователя, под которым я зашла, и нужно ли периодически проверять, что я залогинена именно под данным "Васей", а не просто под кем-нибудь? Как это реализуется, если я все-таки решу делать нечто подобное? Каждой странице-блоку добавить свойство с данными аккаунта + метод, проверяющий под каким пользователем я авторизованна и делающим перелогин под нужным мне, если залогинена не под тем?