Подход для покрытия Watir-Webdriver на сайте с большим количеством клиентов
Хорошо, мне нужно ускорить этот мыслительный процесс - у меня болит мозг. Я хотел бы получить ваши отзывы о некоторых подходах.
Я выложу свои вопросы вперед, на всякий случай, если я потеряю ваше внимание во время описания ниже:
-
Вы уже писали подобный продукт раньше? Как вы к этому подошли?
-
Выделяются ли какие-либо из этих подходов как великие / ужасные для любого причина? Если да, то что?
- Есть ли другой подход, который вы могли бы найти больше уместно?
Есть рабочий процесс, который я тестирую, для аргументации мы назовем его корзиной покупок, которая состоит из различных text_fields, radio_buttons и select_lists. одна компания предоставляет эту корзину для ~60 клиентов, и не все клиенты используют одни и те же точные формы, но общий процесс одинаков. Общая идея одинакова между клиентами (одинаковая целевая функциональность) , и есть подмножества клиентов с одинаковым рабочим процессом, но многие из них уникальны. В этом случае unique может означать, что некоторые поля не требуются, в то время как они могут быть для других клиентов. Или же для одного клиента существуют определенные вопросы/поля text_fields, которые другие не могут использовать вообще.
Цель скрипта на данном этапе-просто генерировать заказ через веб-интерфейс, а не проверять каждый отдельный шаг процесса как "тест". Здесь тебе придется мне немного довериться. Есть еще много общих деталей, которые можно запустить отрицательные / крайние случаи с приемлемым уровнем точности.
Подходы, которые я вижу до сих пор:
-
Используя шаблон объекта page, создайте файл "page" для каждого клиентского сайта и используйте различные классы страниц в зависимости от того, какой клиент тестируется. Это утомительно, в основном хрупко и требует много работы для поддержания. Тем не менее, это будет работать, и я мог бы использовать одну и ту же функцию/сценарии для всех, пока их конкретный файл подкачки был доступен.
-
Создать а метод, чтобы очистить все входные элементы из DOM, определить, являются ли они зарезервированным полем, в которое нам нужно ввести определенный требуемый ввод, или просто заполнить информацию, чтобы получить заказ для завершения. Это не накладывается на БД, поэтому производительность должна быть лучше в целом.
-
Подключитесь к БД, соберите всю информацию, необходимую конкретному клиенту, используемому для построения своих страниц, и динамически создайте поля для заказа, и ответьте на них соответствующим образом. Этот звук Великий в теории, потребовал бы очень мало, если вообще какое-либо обслуживание. ДБ выскабливание легко, сложность построения полей мне пока неизвестна...
Прямо сейчас я использую: watir-webdriver огурец Страница Чизи-объект драгоценный камень продолжение
1 ответ:
Я бы использовал page-object Чизи и включил все поля/вопросы, которые можно было бы включить. затем я бы перегрузил значения по умолчанию для каждого клиента, включая только поля / вопросы, которые они используют. Надеюсь, я не слишком упрощаю ситуацию.
Обновление: В заполнителе страниц он будет объединять все, что вы отправляете данные (в виде хэша) с данными по умолчанию. В своем посте default data post он показывает, как использовать данные по умолчанию. Я думаю, что вы можете создать класс checkout Страница
class CheckoutPage include PageObject text_field(:name, :id => “order_name”) text_field(:address, :id => “order_address”) text_field(:email, :id => “order_email”) select_list(:pay_type, :id => “order_pay_type”) button(:place_order, :value => “Place Order”) PageObject::PageFactory.routes = { :default => [[HomePage, :select_puppy], [DetailsPage, :add_to_cart], [ShoppingCartPage, :continue_to_checkout], [CheckoutPage, :complete_order]] } def complete_order(data = {}) data = DEFAULT_DATA.merge(data) self.name = data['name'] self.address = data['address'] self.email = data['email'] self.pay_type = data['pay_type'] place_order end end
Затем перегрузите его для конкретных поставщиков, использующих сайт, и каждый из них имеет свои собственные данные по умолчанию.
class Nordies < CheckoutPage DEFAULT_DATA = { ‘name’ => ‘cheezy’, ‘address’ => ‘123 Main Street’, ‘email’ => ‘cheezy@example.com’, ‘pay_type’ => ‘Purchase order’ } PageObject::PageFactory.routes = { :default => [[HomePage, :select_puppy], [DetailsPage, :add_to_cart], [ShoppingCartPage, :setup_creditcard], [CreditCardPage, :continue_to_checkout], [CheckoutPage, :complete_order]] } end
Затем .complete_order будет отличаться для каждого поставщика.