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

воскресенье, 10 мая 2020 г.

9 полезных инструментов тестирования с открытым исходным кодом


Какие инструменты нужны для ремонта - Строительный портал ...
Всем привет!

И снова перетряхивая дела давно ушедших дней, вытаскиваю на свет и стряхиваю пыль, короткий обзор инструментов всегда полезен, детали по ссылке: КЛАЦ.

Автор заметки: Виталий Крюков.

Берегите себя, оставайтесь дома, развивайтесь!

Хорошего дня,  коллеги!

среда, 7 апреля 2010 г.

Selenium + JAVA: Полезные JAVA-методы


Selenium это конечно хорошо, и запишет, и сравнит, и воспроизведет. А хочется ведь логику «поинтереснее» в тесты добавить, и вот тут весьма слабое знание JAVA мешает (ведь «держала» я её в руках последний раз в университете), но есть поисковики, да и просто хорошие, добрые и профессиональные люди :). Ниже представлены «джава-полезности», которые мне понадобились и пригодились во время доведения до ума скрипта, записанного с помощью Selenium IDE. Конечно же, это только начало «пути» и много нового, непознанного впереди. Возможно, и вам пригодиться, а может что-нибудь еще полезного мне посоветуете.


1. Кодировка.

В идеальном случае все элементы страницы живут с уникальными ID. Но тогда бы все было проще и не так интересно. Случилось у меня следующее: записала скрипт, экспорт сделала, а там… А там вместо русскоязычного словосочетания, «кракозябистость», которая компилируется, но не выполняется как надо. Эх, кодировка при компиляции определяется неправильно. Но мир не без добрых людей и вот компилятор начинает понимать, что мне от него надо:

javac -encoding utf-8

2. Запросы к БД.

Считать то, что на странице это хорошо. А вот сравнить это добро с начинкой приложения, это уже интереснее. То, с чем я работаю в данный момент, обладает вполне обычной MySql-ной начинкой. Стало мне интересно, как бы добраться из скрипта в БД. Совсем не с первого раза, но все получилось следующее:

import java.sql.*;

public class Query{

public static void main(String[] args){

Connection con = null;

Statement stmt;

…

try{

//загружаем класс драйвера

Class.forName("com.mysql.jdbc.Driver");

//создаем соединение с БД

con = DriverManager.getConnection("[url Базы данных]", "[логин]","[пароль]");

stmt = con.createStatement();

//запрос к БД

ResultSet rs = stmt.executeQuery("[запрос к БД]");

// а уже из rs данные и получаем

stmt.close();

con.close();

}

//Отлавливаем исключения

catch(java.lang.ClassNotFoundException e){

System.err.print("ClassNotFoundException: ");

System.err.println(e.getMessage());

}

catch(SQLException ex){

System.err.println("SqlException: " + ex.getMessage());

}

}

}

Подробнее описание пакета, классов и методов смотрим тут: http://java.sun.com/javase/6/docs/api/java/sql/package-summary.html.


3. Работа с датами.

Даты разные нужны, даты всякие важны, а текущая - самая дорогущая. Был в JAVA класс Date, а стал Calendar. Ниже то, что пригодилось мне:

import java.util.Calendar;

…

// Получаем текущую дату

Calendar rightNow = Calendar.getInstance();

// Записываем в переменную типа String

StartDate = String.valueOf(rightNow.get(Calendar.DATE)) + "." + String.valueOf(rightNow.get(Calendar.MONTH)+1) + "." + String.valueOf(rightNow.get(Calendar.YEAR));

// Добавляем к дате 10 дней

rightNow.add(Calendar.DATE,10);

…

Остальные «календарные» возможности и способности смотрим тут: http://java.sun.com/j2se/1.4.2/docs/api/java/util/Calendar.html


Продолжение следует...

среда, 7 октября 2009 г.

Selenium: пробуем "на зуб" вместе

Автоматизация тестирования, применяемая по месту, по времени и по теме весьма и весьма полезна. А если инструмент автоматизации бесплатный, мммм… «ни в сказке сказать, ни пером описать».

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

Используя надстройку над Firefox Selenium IDE, записываем и воспроизводим тесты. IDE позволяет экспортировать тесты во множество различных языков (включая Ruby, PHP, java, perl, C# и Python). Меня интересует связка Firefox-Selenium-JAVA. Почему? А не скажу, корыстные цели у меня :). Если будут появляться интересные моменты, буду описывать.

Самое главное, как это все добро запускать! А очень просто. Мне помогла вот эта
инструкция. Однако переменные среды я менять совсем не хотела, и один разработчик подсказал мне простой обходной путь (сама я в JAVA полный чайник, вот и мучаю знакомых ассов :)). Ниже мой вариант инструкции:

  • Скачиваем Selenium IDE & RC, устанавливаем (RC просто распаковываем, место расположения запоминаем). Все что нужно, перезагружаем.
  • Открываем Firefox. Разворачиваем меню «Инструменты» и о чудо! Видим подменю «SeleniumIDE». Кликаем дрожащей рукой уверенно и радостно. Если SeleniumIDE не видим, то, либо не установили, либо Firefox не перезагрузили.
  • И вот ОНО, «фриварное» чудо, перед нами. Уже записывающее, между прочим. Дабы остановить/начать необходимо нажимать кнопку с красным кругом :). Предлагаю посмотреть, как ЭТО работает на следующем примере:
  • Проверяем, что SeleniumIDE пишет (красная кнопка нажата).
  • В адресной строке Firefox пишем: wikipedia.org.
  • На заглавной странице в выпадающем меню выбираем язык: English.
  • В строку поиска вводим: testing. Жмем ввод.
  • На странице результата поиска кликаем по: Software testing.Заканчиваем запись.
  • Видим следующее в Selenium IDE:


  • Полюбовались? Попробуем нажать на кнопочку play? Вау, оно живое! Порадовались? Ну хватит, хватит, давайте продолжать. В IDE в меню файл выбираем Export Test Case As->Java(Junit)-SeleniumRC. Я использую имя: TrySelenium.java. Пойдем посмотрим, чего там на экспортировалось?

package com.example.tests;

import
com.thoughtworks.selenium.*;
import java.util.regex.Pattern;

public
class TrySelenium extends SeleneseTestCase {
public void setUp() throws
Exception {
setUp("http://wikipedia.org/", "*chrome");
}
public void
testTrySelenium() throws Exception {
selenium.open("/");
selenium.select("language", "label=English");
selenium.type("searchInput", "testing");
selenium.click("go");
selenium.waitForPageToLoad("30000");
selenium.click("link=Software
testing");
selenium.waitForPageToLoad("30000");
}
}

Имеем-с класс (название должно совпадать с именем файла!), содержащий последовательность вызовов селениум-методов, реализующих последовательность наших действий. Красота! Однако, хочется все это добро запустить через Selenium RC, а почему? Да потому, что Selenium RC позволяет преобразить записанный тест в оружие автоматизированного тестирования, используя мощь языка программирования и селениумовский библиотечных классов (громко сказано, а? а вдруг и правду может!). Для начала так далеко заходить не будем, а просто немного преобразуем java-код, дабы запускалось через RC.

import com.thoughtworks.selenium.*;
import junit.framework.*;
import java.util.regex.Pattern;

public class TrySelenium extends SeleneseTestCase {
public void setUp() throws Exception {
setUp("http://wikipedia.org", "*chrome");
}
public void testTrySelenium() throws Exception {
selenium.open("/");
selenium.select("language", "label=English");
selenium.type("searchInput", "testing");
selenium.click("go");
selenium.waitForPageToLoad("30000");
selenium.click("link=Software testing");
selenium.waitForPageToLoad("30000");
}
public static Test suite(){
return new TestSuite(TrySelenium.class);
}

public static void main(String args[]){
junit.textui.TestRunner.run(suite());
}
}

  • Надеюсь, JVM у вас в наличие? Будем считать, что да. Запускаем selenium-server. Открываем терминал, перемещаемся в папку, куда распаковали зипник с Selenium RC. Выполняем: cd selenium-remote-control-1.0-beta-1/selenium-server-1.0-beta-1 (Циферки зависят от скачанной версии!). И запускаем: java -jar selenium-server.jar. Можно запускать и в интерактивном режиме, но пока не трогаем. Смотрим, что не ругается, и радуемся, радуемся. А если ругается, текст ошибки «в зубы» и на просторы Интернета… Добились запуска? А кто бы сомневался.
  • Пришло время компилировать и запускать java-код. Инструкция (см. выше) предлагает поменять переменные среды, как сказано ранее, идем в обход. В папке, где обитает наш java файлик создаем директорию lib, в нее переписываем следующее добро: 1) Отсюда …/selenium-remote-control-1.0-beta-1/selenium-java-client-driver-1.0-beta-1/selenium-java-client-driver.jar; 2)Junit у Вас есть? Нет, ну так качаем, качаем. Отсюда в папку lib добро копируем …/junit-4.6/junit.jar.
  • Открываем еще один терминал, компилируем: javac -cp lib\selenium-java-client-driver.jar;lib\junit-4.6.jar TrySelenium.java. Ошибки не выпрыгнули? Хорошо! Выпрыгнули? Читаем, вникаем, в java-файл возвращаемся, исправляем, компилируем, повторяем, пока не перестанут выпрыгивать ошибки!
  • И вот он! Момент истины. Запускаем наше творение: java -cp .\;lib\selenium-java-client-driver.jar;lib\junit-4.6.jar TrySelenium. Ура! Оно живое! Браузер открывается, в поле текст запроса вводится… А если ошибка вываливается? Опять же читаем, понимаем, ищем решение! А потом радуемся, радуемся, что «каменный цветок» выходит!

Конечно же, приведенный пример очень и очень прост, ничего особенно стоящего он не делает. Но он поможет начать. На сайте Selenium «вагон и маленькая тележка» документации, а на просторах-то «нашего всего» интернета. Дерзайте!