пятница, 10 октября 2014 г.

Установка Selenium Grid (Server) на Windows




  1. Скачиваем и устанавливаем Java Development KIt (именно JDK) - http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
  2. Прописываем путь в PATH (в переменные среды - лучше сделать это в самом начале списка) до JDK - C:\Program Files (x86)\Java\jdk1.8.0_20\bin (либо куда установили).
  3. Убираем в PATH все относительные пути до JAVA (как правило самая первая запись в переменных среды) и до JRE. Т.е. оставляем для JAVA только путь до JDK
  4. Скачиваем Apache ANT - http://ant.apache.org/bindownload.cgi и распаковываем, например, на диск c:\ant\bin
  5. Прописываем в переменные среды путь до ant - “c:\ant” либо путь куда установили
  6. Проверяем в командной строке - “ant -version” - должна появиться версия ANT без всяких ошибок. Если появляется ошибка - http://joxi.ru/umQ2VIwyTJBfCd-l7Bo - Unable to locate tools.jar. Expected to find it in C:\Program Files (x86)\Java\jre7\lib\tools.jar - значит в переменных где-то указан путь до JRE, а не только до JDK
  7. Скачиваем Selenium Server - http://docs.seleniumhq.org/download/ (раздел Selenium Server). Начиная с Selenium 2 - Selenium Grid входит в состав Selenium Server.
  8. Скачиваем ChromeWebDriver для Selenium - http://chromedriver.storage.googleapis.com/index.html (последнюю версию)
  9. Скачиваем InternetExplorerWebDriver для Selenium - http://selenium-release.storage.googleapis.com/index.html (последнюю версию)
  10. Создаем отдельный каталог для хранения - например “C:\seleniumvgrid” и закидываем туда скачанные файлы - selenium-server-standalone-2.43.1.jar (либо та версия, которую скачали), chromewebdriver.exe, IEDriverServer.exe
  11. Далее создаем два bat скрипта (в любой папке, можно и на рабочем столе) - один для создания hub, другой для регистрации в нем node - можно без скриптов, просто через командную строку (нужно будет запускать одновременно две консоли): первый скрипт называем, например, hub.bat - в нем прописываем:


cd c:\seleniumvgrid   - переход в каталог хранения файлов selenium server
java -jar selenium-server-standalone-2.43.1.jar -port 3244 -role hub - запускаем хаб селениум грид на порте 3244 (по умолчанию 4444 - но с ним бывает не работает, поэтому указываем любой другой незанятый)
Консоль не закрываем! Проверить работоспособность можно зайдя в браузере http://localhost:3244/grid/console - отображается версия Grid и подключенные браузеры - http://joxi.ru/rGg2VP3JTJAjXf45VmQ
Второй скрипт называем,например, node.bat - в нем прописываем
cd c:\seleniumvgrid переход в каталог хранения файлов selenium server
java -jar selenium-server-standalone-2.43.1.jar - Dwebdriver.chrome.driver=c:\seleniumvgrid\chromedriver.exe Dwebdriver.ie.driver=c:\seleniumvgrid\IEDriverServer.exe -role node -browser browserName=chrome -browser browserName=firefox -browser browserName=ie -hub http://localhost:3244/grid/register - запускаем Selenium Server и прописываем пути до драйверов Chrome и IE, потом их инициализируем, задаем роль Hub и регистрируем node в уже созданном скриптом hub.bat  HUB

  1. Запускаем сперва hub.bat и ждем загрузки, потом запускаем node.but
  2. Радуемся


Автор: Михаил Шамшурин

вторник, 12 августа 2014 г.

Selenium WebDriver + С# простые тесты

СНЯТИЕ СКИНШОТОВ

// сохраняет в папку проекта (C:\Users\katya\Documents\Visual Studio 2010\Projects\ConsoleApplication2\ConsoleApplication2\bin\Debug)

using System.Collections.Generic;
using OpenQA.Selenium;
using System;
using OpenQA.Selenium.Firefox;
using System.Drawing.Imaging;
using System.Globalization;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            FirefoxDriver d = new FirefoxDriver();
            d.Manage().Window.Maximize();
            var size = d.Manage().Window.Size;

           // size.Height += 2000; // <---- вот тут вот
            d.Manage().Window.Size = size;

            d.Url = "http://ya.ru";
            IWebElement searchInput = d.FindElement(By.Id("text")); // ищем поле поиска по id
            searchInput.SendKeys("Hello world"); // пишем в него текст
            searchInput.SendKeys(Keys.Enter); //  нажимаем кнопку отправки запроса  
            var screenShot = d.GetScreenshot();
            for (int i = 1; i <= 5; i++)
            {
                screenShot.SaveAsFile("atinfo"+i+".png", ImageFormat.Png);
            }
            d.Quit();
        }
    }
}
_____________________________________________________________________

Запуск первого теста Selenium WebDriver + C#

Пошаговая настройка Selenium WebDriver в проекте Visual Studio.


1. Создаем новый проект C# консольное приложение



2. Открываем менеджер пакетов (если его нет в списке, то нужно установить)



3. Ищем покеты по запросу "selenium". Устанавливаем Selenium WebDriver и Selenium WebDriver Support Classes.



4. В файле Program.cs добавляем библиотеки selenium и собственно пишем код. Запускаем - работает.


Простейший код:
________________________________________________________________
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            IWebDriver driver = new FirefoxDriver();

            driver.Navigate().GoToUrl("http://ya.ru"); //открываем страницу яндекса
            driver.Manage().Window.Maximize(); // разворачиваем окно браузера на весь экран

            IWebElement searchInput = driver.FindElement(By.Id("text")); // ищем поле поиска по id
            searchInput.SendKeys("Hello world"); // пишем в него текст
            searchInput.SendKeys(Keys.Enter); //  нажимаем кнопку отправки запроса     

            driver.Close(); // закрываем браузер
        }
    }
}
_________________________________________________________________

вторник, 5 августа 2014 г.

Чек лист тестирования мобильных устройств

Чек лист по тестированию мобильных приложений
Проверка функционала
Проверка функциональности на корректных данных (текущая дата, короткие имена и т.д.)
Проверка на некорректных значениях (например: пустые поля, длинные имена, установка на телефоне даты в прошлом и т.д.)
Проверка настроек приложения и корректность их применения
Быстрые «клики» по элементам интерфейса (переход по категориям, переход по записям внутри категории)
Если есть готовый список и поле для вбивания параметров, то проверить поведение, когда в поле появляется подсказка из словаря и одновременно кликаешь по записи в списке <> подсказке. возможны конфликты между подсказкой айфона и реальным выбором.
Проверка контента: адекватный размер изображений (до 1МБ) и достаточное качество. Дополнительно смотреть на iPhone4 (большее разрешение) + см.MobileHIG.pdf chapter 11 для требований к разрешению изображений.
Интерфейс
Проверка интерфейса приложения на соответствие требованиям Apple (Human interface guidelines for iPhone\iPad)
GUI: иконки соответствуют тому, к чему относятся (хелп – знак вопроса, настройки – шестеренка и т.д.), новые окна плавно открываются справа, присутсвует значок загрузки если происходит длительный процесс)
Наличие экрана Game Over и корректные ссылки на нем – для игровых проектов (+ корректная отработка попадания на этот экран)
Постоянная обратная связь с пользователем
Реакция кнопок на нажатие
Сообщения при загрузке контента/прогресс
Сообщения при ошибке доступа к сети
Наличие сообщений при попытке удалить важную информацию
Наличие экрана/сообщения при окончании процесса/игры (экран Game over)
Ориентация экрана/разрешения/версии
Размер экрана и тач-интерфейс
HIG
Все элементы должны быть такого размера, чтобы пользователь мог однозначно попасть по ним
Отсутсвие пустых экранов в приложении (либо опускаем такие экраны, либо пишем на них пояснительный текст для первого открытия)
Скорость отклика элементов должна быть
а) достаточно высокой (использовать старые устройства, если поддерживаются приложением),
б) у всех нажимаемых элементов должно быть нажатое состояние
Различные разрешения экрана и версии iOS (для продуктов Apple)
На ретине элементы интерфейса/текст будут мельче.
Момент. Картинки для ретина экрана могут попасть в неретина версию и тогда будут очень большими.
Версии ОS – приложение не должно устанавливаться на неподдерживаемые устройства + обязательная проверка на всех возможных из поддерживаемых девайсов (полные тесты на ретина/неретина/айпад с последними прошивками + дополнительные проверки на девайсах с другими прошивками)
Различные функции на девайсах: отсутствие/наличие камеры(ipad) (автофокуса), отсутствие/наличие GPS
Загрузка файлов больших объемов
Локализация
Отрицатильные координаты
Звонки/смс/ммс
Тест на совместимость с другими приложениями\функциональностью iPhone (будильник\таймер\напоминания\входящий звонок\смс\ммс, аудио-плеер)
Edge/wi-fi, wap/web, закрытые порты
Корректность работы приложения при использовании wi-fi\gprs (включая обрывы связи\ее отсутствие)
Махинации с popup/logout во время передачи данных
Фото/плееры
Проверка корректности  работы приложения с камерой iPhone (если такая функциональность поддерживается), а также корректность работы приложения с iPod.
Звук не пропадает при подключении наушников
Аудио не играет, когда экран выключен, если это не является основной чертой (например, приложение является музыкальный плеер).
Аудио не играет, если экран блокирован, если это не является основной чертой.
Прочее взаимодействие с телефоном
Работа приложения с акселерометром (поворот экрана в соответствии с положением iPhone, использование функции акселерометра для получения данных приложением (шагомер))
Поведение приложения при переходе iPhone в спящий режим
Аудио не играет на домашнем экране или над другим приложением, если это не является основной чертой.
Аудио возобновляется, когда приложение возвращается на первый план, или указывает пользователю, что воспроизведение находится в состоянии паузы.
Карта памяти
Перенос приложения на карту памяти осуществляется корректно
Перезагрузка/батарея
Ресурсы устройства
Анализ потребления ресурсов с использованием программам Profiling/Memory leaks
нехватка ресурсов памяти
Проверка утечек памяти с использованием программы Instruments (стандартное приложение MacOS). Не более 30мб на 2г айфон/айпод, примерно 70мб для всех девайсов до 2-го айпада
Утечка памяти особенно может проявляться на окнах, с большим количеством информации (длинные списки как пример), во время задач с длительным workflow (когда пользователь долго не выходит из приложения), при некорректно работающем кэшировании изображений
Проверка на корректность работы приложения с памятью iPhone (memory leaks)
Crash
Поиск возможных мест «падения» приложения (crash) и причин их возникновения
Как достать крэш-лог, если нет xcode: http://aplus.rs/apple/how-to-find-crash-logs-for-iphone-applications-on-mac-vista-and-xp/

In-app purchases
2 типа покупок:
а) восстанавливаемые (апгрейд приложения, для примера)
б) невосстанавливаемые (кредиты)
Соответствие цены/содержимого, заявленной в приложении, тому, что попадает к пользователю
Апдейты
Обязательно проверять места, куда вносились изменения.
Убедиться, что поддерживаются те же версии iOS, что и предыдущая версия (создание урезанной версии для таких девайсов. Пример. В новой версии приложения был добавлен видео-плеер, не поддерживающийся старой версией iOS)
Мультиплеерные игры.
Корректность подключения игроков (напр., списывание баланса только после подключения)
Временные лаги
Подключение через различные сети
Корректное поведение при отключении игроков
Подключение ботов (если используются)



четверг, 24 июля 2014 г.

Запуск первого теста Robotium + Android Studio

1. Скачиваем Android Studio и устанавливаем

2. Запускаем его и создаем новый проект: File->New Project и далее в окнах все интуитивно понятно, переходим далее и далее до финиша.


3. Откроется такое окно:
Если ок, то подключаем телефон к компьютеру и запускаем приложение. Если запустилось - идем дальше. Если нет - отлаживаем до тех пор, пока не запустится.

4. Подключаем библиотеку Robotium к проекту.
Скачиваем файл библиотеки последней версии, например robotium-solo-5.0.1.jar

5. Перемещаем (ну или сразу можно было скачать) библиотеку в проект (у меня например проект лежит тут: C:\Users\katya\AndroidStudioProjects\TestAppRobotium )

6. а) Открываем файл build.gradle (который находится в папке main).  Добавляем  в раздел dependencies следующие строки
    compile files('libs/robotium-solo-5.2.1.jar')
    androidTestCompile 'com.jayway.android.robotium:robotium-solo:5.2.1+'
(в строке  compile files укажите путь к файлу библиотеки, 
в этой строке  androidTestCompile укажите свою версию, перед версией обратите внимание - двоеточие).

б) Далее в правом верхнем углу всплывает сообщение о необходимости синхронизации. Нажать и подождать пока она осуществится.

в) В разделе External Libraries выведется подключенна библиотека


















7.  Далее открываем в папке AndroidTest файл ApplicationTest.java

Удаляем все что есть и вставляем текст:

package com.example.katya.myapplication;

import android.test.ActivityInstrumentationTestCase2;
import com.robotium.solo.Solo;

public class ApplicationTest extends ActivityInstrumentationTestCase2 {

    private Solo solo;

    public ApplicationTest() {
        super(MyActivity.class);
    }
    public void setUp() throws Exception {
        super.setUp();
        solo = new Solo(getInstrumentation(), getActivity());
    }
    public void testMyActivity() throws Exception {
        solo.assertCurrentActivity("Main Activity Never Loaded", MyActivity.class);
    }
}


8. Запустим тест. Подключаем телефон к компьютеру. Правой кнопкой на ApplicationTest. Выбираем Run\ApplicationTest. 


9. Получаем Ok test result

10. Можно сделать небольшую передышку. Что бы идти и разбираться с роботиумом дальше.