Здравствуйте коллеги, продолжаю в своей конторе борьбу за отказ от FitNesse и переход на Robot Framework, одним из ключевых моментов здесь - является следующий. В приложении есть очень нетипичный use-case - а именно предпросмотр в браузере, некоего отчета. Этот отчет таблица, размеры ее могут быть довольно таки велики, около 70 колонок и несколько сотен строк. Важно, экспорт в xls, csv, xml - есть и он является отдельным функционалом. То есть протестировать надо именно отображение в браузере. В Robot Framework, есть довольно таки удобные команды:
Table Cell Should Contain
Table Column Should Contain
Table Row Should Contain
К сожалению, они не могут принимать на вход больше 3-4 значений, а мне ставят условие, что таблица должна в тест-кейса отображаться как есть, что бы простым Ctrl+C и Ctrl+V, можно было перенести таблицу из Exel в Robot-a.
В связи с этим вопрос, сталкивался ли кто нибудь с тестированием таких таблиц и если да то, что можно применить?
Здравствуйте.
У меня есть опыт работы с данными кейвордами. Могу сказать, что с размерами “около 70 колонок и несколько сотен строк” кейворды будут работать очень долго (поиск занимает больше времени, чем сам тест). В этом случае мне было проще написать regexp. Да, я терял в поддержке теста, но выйграл в скорости.
Если Вам надо проверить правильность данных в таблице, то я бы использовал функциональность экспорта в csv\xml и проверка стала бы проще и быстрее. Если же необходимо проверить вёрстку (колонки не съехали, шапка таблицы такого-то цвета и пр.), то я бы обратился к опыту тестирований вёрсток, либо оставил бы это на ручную проверку.
Вот это предложение я, честно говоря, не понял: “что бы простым Ctrl+C и Ctrl+V, можно было перенести таблицу из Exel в Robot-a”. Куда в “роботе” Вы хотите перенести таблицу.
Если данный тест уже написан на FitNesse, то расскажите, пожалуйста, как это проверяется там.
В FitNesse, проверяется следующим образом - тест-дизайнер, рисует эту таблицу в wiki-разметке. Я пишу класс, который расширяет так называемую RowFixture. Соответственно класс - возвращает массив объектов. Поля объектов это наименования колонок. Количество строк - соответственно количество объектов. Итого FitNesse - на вход принимает объекты, у которых поля заполнены текстом из ячеек. И да этот тест в FitNesse, уже находил баги.
Если Вам надо проверить правильность данных в таблице, то я бы использовал функциональность экспорта в csv\xml и проверка стала бы проще и быстрее.
У меня есть функциональность экспорта в файлы - она проверяется. Но заказчик, хочет именно функциональность отображения таблицы в браузере.
Соответственно, Вы можете написать такой же класс как кейворд, пробегаться по массиву, вызывая “Table Cell Should Contain”. Однако, думаю, это будет занимать очень много времени.
Могу посоветовать расширить Selenium2Library кейвордом, который будет получать текст из ячеек таблицы и засовывать их в список. Далее нужно подготовить заранее правильный список и всего лишь сравнить эти два списка. В библиотеке Collections для этого есть спец. кейворд. Может и не супер вариант, но хотя бы что-то )
Тест-дизайне, считает, что да и тут я с ним согласен - проще пять раз проверить всю таблицу - с разными входными условиями, чем 100 раз, селективно. Покрытие больше, а при выборочной проверке практически не реально охватить все наборы входных фильтров и данных
Парси csv файл. строка - это список, а значение это элемент списка. В итоге csv файл будет представдять из себя список списков. А дальше сравнить это с таблицей не должно быть проблемой ) к тому же csv делается в Excel как ты и хотел
@rmerkushin, не совсем - я буду отдельными тестами делать, экспорт в xls, csv, txt. Но это именно отдельные тесты, которые будут проверять другое требование заказчика.