Многопоточный запуск Selenium тестов из JUnit

Подумал я как-то а не заранить ли мне тесты в потоках, а не последовательно один за одним. Погуглил немного и нашел как раз то что мне надо было. Я реализовал эту идею немного переделав код из примера с JUnit. Тестируемые страницы остались те же. Реализация проста и можно запускать тесты в потоках, но есть одно «но», а в будущем может оказаться и больше. Мы их рассмотрим попозже. Будем использовать стандартные классы java для работы с потоками. Приступим.
Для начала создадим packages: automation и automation.multithread. Положим в automation.multithread следующие классы:

MultiThreadedTestCase.java

package qautomation.multithread;

import junit.framework.*;

public class MultiThreadedTestCase extends TestCase {

    private Thread threads[] = null;
    private TestResult testResult = null;
   
    public MultiThreadedTestCase(String s) {
        super(s);
    }
   
    public void interruptThreads() {
        if(threads != null) {
            for(int i = 0;i < threads.length;i++) {
                threads[i].interrupt();
            }
        }
    }

    public void run(final TestResult result) {
        testResult = result;
        super.run(result);
        testResult = null;
    }
   
    protected void runTestCaseRunnables (final TestCaseRunnable[] runnables) {
        if(runnables == null) {
            throw new IllegalArgumentException("runnables is null");
        }
        threads = new Thread[runnables.length];
        for(int i = 0;i < threads.length;i++) {
            threads[i] = new Thread(runnables[i]);
        }
        for(int i = 0;i < threads.length;i++) {
            threads[i].start();
        }
        try {
            for(int i = 0;i < threads.length;i++) {
                threads[i].join();
            }
        }
        catch(InterruptedException ignore) {
            System.out.println("Thread join interrupted.");
        }
        threads = null;
    }

    /**
     * Handle an exception. Since multiple threads won’t have their
     * exceptions caught the threads must manually catch them and call
     * <code>handleException ().
     * @param t Exception to handle.*/

   
    public void handleException(final Throwable t) {
        synchronized(testResult) {
            if(t instanceof AssertionFailedError) {
                testResult.addFailure(this, (AssertionFailedError)t);
            }
            else {
                testResult.addError(this, t);
            }
        }
    }
}

Читать далее…

Categories: Selenium RC Tags:

Полезные FireFox плагины

firebug plugin
Firebug. Мне кажется большинство согласятся что firebug является самым полезным плагином как в разработке, так и тестировании. Этот плагин позволяет просматривать исходный html код страницы как говориться в «real time». Легкая навигация по элементам (Inspect) на странице и одновременно просмотр их исходников. Большим полюсом является раздел «Net» – можно видеть все загруженные файлы, все запросы и ответы. Очень полезна навигация DOM объектов – помогает при разработке и отладке javascript. Command Line – возможность запускать свои джава скрипты на уже открытой странице.
Читать далее…

Categories: Полезное Tags:

Eclipse + JUnit + Selenium RC

JUnit
Здесь будет описан простейший пример работы Selenium RC и многим известного фреймворка юнит тестов JUint. Проект будем делать в Eclipse IDE и запускать из него тесты при помощи уже встроенного JUnit плагина в эклипс. Если у вас еще не установлен eclipse, то качаем jdk и устанавливаем. Затем ставим Уclipse IDE.

Итак, для начала запустим наш сервер – пусть пока «весит» у нас в процессах. Selenium RC можно скачать тут. Будем использовать следующую команду для запуска Selenium Server:

Читать далее…

Categories: Selenium RC Tags:

Коротко о Selenium RC

Selenium Remote Control (RC) – инструмент, который позволяет писать автоматизированные тесты для веб-приложений на многих языках программирования.

Selenium RC состоит из двух частей.

1. Сервер, который принимает команды в виде строки (например:click[//input[@type='submit'], ]) по http протоколу от клиентской библиотеки и действует как прокси-HTTP для веб-запросов от клиентской части к Selenium Core и обратно.
2. Клиентские библиотеки для вашего любимого языка программирования.

Для работы с Selenium RC вам нужно установить JAVA, скачать Selenium RC. Распаковываете серверную часть selenium-server-x текущей версии и запускаете его. В зависимости от того на каком языке программирования вы будете писать тесты, подключаете соответствующую клиентскую библиотеку. Читать далее…

Categories: Selenium RC Tags: