АВТОМАТИЗАЦИЯ ТЕСТИРОВАНИЯ ПРОГРАММНОГО ПРОДУКТА «МЕГАПЛАН» - Студенческий научный форум

VI Международная студенческая научная конференция Студенческий научный форум - 2014

АВТОМАТИЗАЦИЯ ТЕСТИРОВАНИЯ ПРОГРАММНОГО ПРОДУКТА «МЕГАПЛАН»

Александрова С.И. 1, Шукенбаева Н.Ш. 2, Шукенбаев А.Б. 1
1Московский институт государственного и корпоративного управления
2российский государственный гуманитарный университет
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

В работе приведены результаты разработки эффективных автоматизированных тестов для проверки программного продукта «Мегаплан». Это направление является темой дипломной работы (НОУ ВПО МИГКУ, 4 курс факультет информационных технологий) одного из авторов статьи. В работе реализован алгоритм разработки эффективных автоматических тестов с наименьшими затратами на языке Java с помощью приложений IDE NetВeans, Selenium WebDriver, Maven.

Компания ООО «Мегаплан» – один из лидеров среди SaaS-провайдеров на российском рынке. [1]. В рамках SaaS Мегаплан представляет универсальные программные решения, которые позволяют ставить задачи и контролировать их выполнением, организовать совместную работу сотрудников компании, хранить документы, вести клиентскую базу и т.п. Компания ориентируется на малые и средние предприятия численностью до 300 человек [4].

Система «Мегаплан» (рис. 1) — это отечественная система управления бизнесом. Она может быть установлена как на сервер клиента, так и арендована на серверах поставщика решения «Мегаплан» (SaaS).

Рис. 1Система «Мегаплан», задачи сотрудника

«Мегаплан» работает в браузере, поэтому полностью независим от установленной ОС на компьютерах пользователей. В продукте много модулей, которые нуждаются в постоянной проверке, в связи с постоянным обновлением. Задача разработки заключалась в том, что бы автоматизировать проверку основных тестовых случаев (тест-кейсов) для проверки реализации тестируемой функции.

У продукта «Мегаплан» очень большой функционал, полная автоматизация проблематична, поэтому приходится расставлять приоритеты. Самый важный вопрос при автоматизации тестирования - какие тесты нужно автоматизировать, а какие нет. Как и любое нетривиальное решение - это проблема, которая требует учитывать не только мнение тестировщика, но и политику компании. Поэтому тестировщик должен четко представлять себе процесс разработки в компании и даже ее планы на будущее. Второй по важности вопрос - это качество тест-планов (документов, описывающих весь объем работ по тестированию). Немалую проблему составляет также работа с различными платформами и протоколами. Хороший специалист по автотестированию должен знать всю линейку современных средств в этой области, знать их преимущества и недостатки и уметь выбрать подходящий инструмент. []

Процесс тестирования включает в себя этапы проектирования, исполнения тестов и анализа результатов. На первом этапе выбираются тесты, которые наиболее производительны, т.е. находят наибольшее количество ошибок за наименьший промежуток времени. На втором этапе запускают тесты и находят ошибки программном продукте. На третьем этапе анализируют результаты, которые позволяют сделать вывод о корректной работе программного продукта.

В таблице 1 приведен пример готового теста для крайнего срока выполнения задачи:

Таблица 1 Пример готового теста

package qa.mp.tests.task;

import org.testng.Assert;

import org.testng.annotations.Test;

import qa.mp.PrefixBase;

import qa.mp.TestCase;

import qa.mp.Vars;

import qa.mp.elements.DeadlineElement;

import qa.mp.pages.common.LoginPage;

import qa.mp.pages.task.TaskCardPage;

import qa.mp.pages.task.TaskData;

import qa.mp.pages.task.TaskFormPage;

public class AddAndRemoveDeadline_Test extends TestCase {

private String prefix;

private TaskCardPage card;

private LoginPage login;

private TaskFormPage form;

private DeadlineElement deadline;

@Test(groups = {"task"})

public void AddAndRemoveDeadline() throws Exception {

prefix = new PrefixBase().getPrefix(getClass(). getSimpleName());

TaskData task = new TaskData()

.setTaskName(prefix + ".Добавление и удаление дедлайна")

.setResponsible(Vars.user_name)

.setDeadlineDate("01", "05", "2020")

.setDeadlineTime("15:00");

login = new LoginPage(driver);

card = login.loginAs(“sveta”,”password”)

.setDefaultFilters()

.cleanUpTasks(prefix)

.clickTaskAddButton()

.fillFieldsTaskAddForm(task)

.clickAddButton();

Assert.assertTrue(card.getTaskHeader().contains(task.getTaskName()), "'Неправильный заголовок задачи. Имя у задачи должно совпадать с заданным'" + task.getTaskName() + "'. Header name: '" + card.getTaskHeader() + "'.");

Assert.assertTrue(car.getDeadline().contains("1 мая 2020 в 15:00"), "Неверный дедлайн в задаче. Дедлайн фактический: '" + card.getDeadline() + "'. Ожидаемый: .");

form = card.clickEditButton();

deadline = form.getDeadlineElement();

deadline.clearTime().clearDate();

card = form.clickSaveButton();

Assert.assertNull(card.getDeadline(), "Дедлайн есть '" + card.getDeadline() + "'. Его не должно быть.");

card.clickRemoveButton()

.clickAcceptRemoveButton()

.getMenu().logout();

}

}

package qa.mp.tests.task;

import org.testng.Assert;

import org.testng.annotations.Test;

import qa.mp.PrefixBase;

import qa.mp.TestCase;

import qa.mp.Vars;

import qa.mp.elements.DeadlineElement;

import qa.mp.pages.common.LoginPage;

import qa.mp.pages.task.TaskCardPage;

import qa.mp.pages.task.TaskData;

import qa.mp.pages.task.TaskFormPage;

Assert.assertTrue(card.getTaskHeader().contains(task.getTaskName()), "'Неправильный заголовок задачи. Имя у задачи должно совпадать с заданным'" + task.getTaskName() + "'. Header name: '" + card.getTaskHeader() + "'.");

Assert.assertNull(card.getDeadline(), "Дедлайн есть '" + card.getDeadline() + "'. Его не должно быть.");

Входная информация – логины и пароли разных правовых групп. После прохождения теста можно наблюдать результат IDE NetВeans (рис. 2).

Рис 2 Успешное прохождение теста

На самом деле автоматизировать или не автоматизировать тестирование программных продуктов зависит от специфики самого приложения. При проектировании автотестирования следует соблюдать следующее золотое правило: время разработки не должно превышать времени ручного тестирования. Для этого должны соблюдаться условия: минимизация участие тестировщика в работе скрипта, правильное планирование и выбор сценариев для автоматизации, легкая расширяемость и поддержка скрипта. К достоинствам автоматизации следует отнести возможность запускать автотесты в любое время или нескольких машинах.

Есть, конечно, и отрицательные стороны: достаточно большое время разработки, определенная затратность как на среду разработки, так и на оплату труда программистов и т.д. Надо также учитывать, что не вся функциональность поддается автоматизации. Тем не менее, автоматизация тестов помогает значительно сэкономить время на тестирование основного функционала продукта и облегчить труд ручных тестировщиков, избавив их от рутинных, ежедневно повторяющихся действий. [3]

В ходе работ было создано 8 пакетов автоматических тестов, реализующих более 100 тестовых случаев. В настоящее время все полученные результаты активно применяются в процессе разработки и поддержки вышеуказанного продукта, и продолжается разработка новых автоматизированных тестов по новому внедряемому функционалу. С помощью данных тестов было найдено более 200 критических ошибок, вследствие чего значение метрики «Количество дефектов, найденных клиентами в релизе» сократилось на 30%.

Литература

  1. Монахов В.В. Язык программирования Java и среда NetBeans. – СПб.: БХВ-Петербург, 2011. – 704 с.

  2. Компания Мегаплан [Электронный ресурс] - Режим доступа: http://www.megaplan.ru

  3. Сайт статей по тестированию [Электронный ресурс] - Режим доступа: http://www.software-testing.ru –

  4. Сайт «Компьютерная неделя» [Электронный ресурс] - Режим доступа: http://www.pcweek.ru/?ID=613301

Просмотров работы: 1228