Сегодня 18 января, суббота ГлавнаяНовостиО проектеЛичный кабинетПомощьКонтакты Сделать стартовойКарта сайтаНаписать администрации
Поиск по сайту
 
Ваше мнение
Какой рейтинг вас больше интересует?
 
 
 
 
 
Проголосовало: 7278
Кнопка
BlogRider.ru - Каталог блогов Рунета
получить код
Записки о тестировании ПО
Записки о тестировании ПО
Голосов: 1
Адрес блога: http://swtesting.livejournal.com/
Добавлен: 2008-06-02 01:12:46
 

Простые правила написания функциональных автотестов.

2008-05-06 23:00:25 (читать в оригинале)

1) Имя метода автотеста должно ясно описывать, что этот тест делает. Например:
testLogin будет более информативным именем для автотеста, чем test1_1.
Какие плюсы могут быть от такого именования автотестов?
  • Вам будет проще ориентироваться в тестах.
  • Другим будет проще их использовать и поддерживать.


2) Лишняя логика в методе автотеста будет только усложнять его. Посмотрим на следующий тест :

public testPostMessage() {
    selenium.type("id=title", "Hello world");
    selenium.type("id=text", "and everybody!!!");
    for (int i = 0; i < 3; i++) {
        selenium.type("id=tags" + i, "test post" + i);
    }
    selenium.select("id=access", "label=all");
    selenium.click("id=submit");
}

Даже с простыми idшками не сразу можно понять что происходит в автотесте. Немного упростим его:

private void setMessageTitle(String title) {
    selenium.type("id=title", title);
}

private void setMessageText(String text) {
    selenium.type("id=text", text);
}

private void setMessageTags(String tag){
    for (int i = 0; i < 3; i++) {
        selenium.type("id=tags" + i, tag + i);
    }
}

private void setMessageAccess(String access){
    selenium.select("id=access", "label=" + access);
}

private void submit(){
    selenium.click("id=submit");
}

public testPostMessage() {
    setMessageTitle("Hello world");
    setMessageText("and everybody!!!");
    setMessageTags("test post")
    setMessageAccess("all")
    submit();
}

Код автотеста увеличился в размере, но при этом сам автотест стал более понятным.

3) Метод автотеста должен быть коротким настолько, насколько это возможно. Основной плюс опять же в простоте понимания такого теста. Например, есть два автотеста:

public void testLogin() {
    goToLoginForm();
    enterLogin();
    enterPass();
    clickLogin();
    assertTrue(isLoggedIn());
}

и

private void login() {
    goToLoginForm();
    enterLogin();
    enterPass();
    clickLogin();
}

public void testLogin() {
    login();
    assertTrue(isLoggedIn());
}

Второй автотест выглядит более понятным, несмотря на простоту примеров. С ростом размеров автотеста, количества автотестов, разница между первым и вторым вариантами написания автотеста будет ощущаться все больше и больше.

4) С помощью констант можно сделать код автотестов более понятными. Есть следующий тест:

public void testPassword() {
    assertTrue(login.isPasswordValid("qwerty"));
    assertFalse(login.isPasswordValid("asdf"));
}

Добавим в этот автотест несколько констант, и код станет более понятным :

String validPassword = "qwerty";
String inValidPassword = "asdf";

public void testPassword() {
    assertTrue(login.isPasswordValid(validPassword));
    assertFalse(login.isPasswordValid(inValidPassword));
}


Собираем все ссылки со страницы используя selenium rc.

2008-05-02 11:52:06 (читать в оригинале)

Довольно часто, автотестами приходиться проверять ссылки. С помощью автотеста selenium rc это можно сделать несколькими способами. Например воспользовавшись встроенной функцией selenium rc getAllLinks().

Используя в автотесте selenium.getAllLinks() на выходе получим массив строк, содержащий idшки всех ссылок на странице. Это правда не всегда удобно. Во-первых потому, что чаще в автотесте бывает нужен текст ссылки, а не ее id. Во-вторых потому, что idшки у ссылки может и не быть и тогда соответствующий ей элемент массива будет пустой строкой :(

В таких случаях можно поступить следующим образом :

count = sel.getText("dom=document.getElementsByTagName('a').length");
String[] links = new String[count];
for (int i = 0; i < count; i++) {
    links[i] = sel.getText("dom=document.getElementsByTagName('a')[" + i + "]");
}


Простейший функциональный автотест на selenium rc.

2008-04-27 19:10:06 (читать в оригинале)

Что потребуется для написания и запуска автотеста :
  1. скачиваем последнюю версию selenium rc
  2. скачиваем последнюю версию junit
теперь приступаем к написанию автотеста. Импортируем в код автотеста следующие классы:

import junit.framework.TestCase;
import com.thoughtworks.selenium.DefaultSelenium;


junit.framework.TestCase является базовым классом для всех автотестов использующих junit. Создаем класс нашего теста и наследуемся от него:

public class SimpleTest extends TestCase {

Создаем объект selenium rc:  DefaultSelenium с помощью которого в дальнейшем будем совершать все действия в браузере:

DefaultSelenium sel = new DefaultSelenium("127.0.0.1", 4444, "*chrome", "http://www.mail.ru");

Далее создаем наш тестовый метод, который и будет автотестом. Это должен быть метод:
  • public
  • не static
  • без параметров
  • имя метода должно начинаться с test.

public void testSimple1() throws Exception {

Сценарий для нашего автотеста будет следующий:
  • Мы открываем главную страницу портала mail.ru.
  • Переходим к поиску по картинкам.
  • Ищем по запросу 'Фото'.
  • Проверяем, что в результатах поиска что то есть.
Довольно тривиальный сценарий автотеста, но для примера вполне подойдет :). Переходим к написанию кода самого автотеста.

sel.start();
sel.open("http://www.mail.ru");
sel.click("link=Картинки");
sel.waitForPageToLoad("60000");
sel.type("id=q", "Фото");
sel.click("xpath=//input[@value=' Найти ']");
sel.waitForPageToLoad("60000");
assertTrue("Нет результатов поиска", sel.isElementPresent("id=result_wrapper"));
sel.stop();
}

Чтобы запустить автотест, сохраняем этот код в файле SimpleTest.java и компилируем его:

javac -cp junit-4.4.jar;selenium-java-client-driver.jar SimpleTest.java

Если библиотеки junit-4.4.jar и selenium-java-client-driver.jar находятся в одной папке с исходником теста, то проблем быть не должно. Далее нужно запустить сервер селениума:

java -jar selenium-server.jar -multiwindow

И в новом окошке консоли запускаем сам автотест:

java -cp .;junit-4.4.jar;selenium-java-client-driver.jar junit.textui.TestRunner SimpleTest

Если все прошло хорошо, то после выполнения автотеста увидеть вы должны что-то подобное:

> java -cp .;junit-4.4.jar;selenium-java-client-driver.jar junit.textui.TestRunner SimpleTest
.
Time 19,422

OK (1 test)


Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 

 


Самый-самый блог
Блогер ЖЖ все стерпит
ЖЖ все стерпит
по сумме баллов (758) в категории «Истории»


Загрузка...Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.