Показаны сообщения с ярлыком софт для тестирования. Показать все сообщения
Показаны сообщения с ярлыком софт для тестирования. Показать все сообщения

воскресенье, 30 марта 2014 г.

Как легко получить JUnit-отчеты в Django

Хороший все-таки фреймворк Django, удобный,  постоянно улучшающийся и развивающийся, отлично документированный и так далее.
Но есть у него как минимум одно место, которое некоторых разработчиков и тестировщиков не очень устраивает - это фреймворк для написания автотестов.
Разработчикам автотестов Django предлагает свой wrapper стандартного питоновского фреймворка PyUnit ( unittest ). Причем до версии django 1.6 у этой надстройки был один недостаток - довольно неудобное обнаружение автотестов (test discovey).
В версии этот недостаток устранили и мы получили возможность гибкой организации автотестов за счет более продвинутого их обнаружения джанговским запускальщиком тестов (test runner).

Но остался нерешенным еще один "недостаток". А именно невозможность "из коробки" генерировать отчеты о прогонах автотестов  в JUnit xml-формате . Это довольно странно, особенно ввиду большого числа CI-решений, которым нужен такой формат: jenkins/hudson, bamboo etc...

Для предыдущих версий django cторонние django-разработчики успели реализовать несколько приложений для решения задачи получения xml-отчета. Большинство этих приложений не работают с 1.6 версией и должны быть соответствующим образом доработаны.

Мы ждать не хотим, писать свое нет времени и ресурсов. Поэтом нам на помощь приходит никто иной как pytest. С его помощью можно генерировать junit-отчеты безо всякого изменения настроек django-проекта и без изменений в имеющихся автотестах. 

Для этого надо:
  1. поставить pytest-django
  2. для запуска тестов использовать py.test вместо django-ского  manage.py test ...
pip install pytest-django
cd /path/to/django/project
py.test --ds=DJANGO_SETTINGS_MODULE --junitxml=/path/to/junit/xml/report
Получив xml-отчет мы можем уже отображать его в любом CI-решении, которому нужен junit-формат. Например,  в bamboo  - используем встроенный компонент JUnit Parser, указав  в его параметрах , где искать xml-отчет о прогоне автотестов. Таким образом, мы можем использовать всю мощь и гибкость py.test и продолжать при этом писать тесты с помощью встроенных в django механизмов.
К слову, можно и сами django-тесты  писать в py.test - стиле. Но лично мне формат PyUnit нравится больше.

Ссылки по теме:



вторник, 26 февраля 2013 г.

Неплохой фаззер


Что такое фаззинг , для чего он нужен и как его применять повторять не буду - в интернете уже тонны информации по этому поводу.
В этом же посте хочу поделиться неплохим фаззером, который не так давно попал мне в руки.

Фаззер: uniofuzz



Написан на python. Довольно прост и в то же время универсален -  умеет генерировать рандомные файлы, фаззить tcp-соединения, пайпы и т.д.(см -help)

Назвал утилиту "неплохой", потому что она избавила меня от написания аналога и почти сходу помогла выявить существенную проблему в тестируемом udp-демоне - отказ в обслуживании практически сразу после начала фаззинга.

"Почти" - потому что пришлось научить ее фаззить udp вместо tcp и немного "поиграться" с длиной содержимого пакета.

Патч прост:
 
235c235
<               sock=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
---
>               sock=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)


Пример фаззинга (2 пакета в секунду) в сетевом соединении:

./uniofuzz.py -n -i 0.5 -ip 127.0.0.1 -port 12345 -s 9999

Утилита проста и эффективна, код открыт и прямолинеен - допилить под свои нужды - не проблема.


вторник, 5 февраля 2013 г.

Проверяем локальный web на соответствие стандартам разметки

Всем , наверняка знакомы полезные валидирующие сервисы от w3c.org, с помощью которых можно быстро проверить url на соответствия, например, разметки (markup) стандартам.

Но не все, наверное, знают, что для локальных web-ресурсов, находящихся в тестировании или просто за NAT-ом, можно проделать легко и просто, установив и запустив сервер валидатора прямо у себя в локальной сети.

Вот незамысловатая инструкция для linux debian (все то же самое можно проделать практически на любой другой десктопной или серверной ос):


#ставим пакет из репозитория
apt-get install w3c-markup-validator

#ставим нужные perl-библиотеки
cpan Bundle::W3C::Validator

#запускаем инсталлятор сервера
w3c-validator-install.sh  all

#пробуем запустить с дефолтными настройками (запущенный сервер будет "ждать" http на 5000-м порту)
w3c-validator-server.psgi


#дальше пробуем проверить локальный url и видим сообщение об ошибке:

#разрешаем в конфиге private-адреса: vim /home/someuser/.w3c-validator-server/config/validator.conf



Allow Private IPs = yes

далее перезапускаем сервер и натравливаем валидатор на локальный ресурс после этого правим разметку :)

четверг, 21 июля 2011 г.

Как быстро снять скриншот на гуглофоне

Недавно потребовалось оперативно снять скриншот на Android-смартфоне. Компьютера с SDK под рукой не было. Выручило приложение ShootMe. Доступно на маркете, бесплатно.
Чтобы снять скриншот надо запустить приложение и просто потрясти аппарат :)
Снимки получаются хорошего качества, можно выбрать формат jpg или png (по-умолчанию):

Работать с программой удобно, еще бы вот интегрировать с Evernote или почтовиком - цены бы не было.
Также просто с помощью этой программы снимаются скринкасты, для которых можно выбрать кодек и указать фреймрейт.