Тестирование программного обеспечения
История возникновения тестирования программного обеспечения, основные цели и особенности его проведения. Виды и типы тестирования, уровни его автоматизации. Использование и исследование необходимых технологий. Полный цикл прогона всей системы мониторинга.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 03.05.2018 |
Размер файла | 1,7 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
28
Размещено на http://www.allbest.ru/
Содержание
- 1. Введение
- 1.1 Основное определение
- 1.2 История возникновения тестирования программного обеспечения
- 2. Постановка цели и задачи
- 2.1 Цель работы
- 2.2 Задача работы
- 3. Общие понятия
- 3.1 Виды тестирования
- 3.2 Типы тестирования
- 3.3 По степени автоматизации
- 3.4 Три уровня автоматизации тестирования
- 4. Обзор технологий
- 4.1 Sikuli IDE
- 4.2 Selenium Webdriver
- 4.3 Auto-it
- 4.4 SilkTest
- 5. Выбор технологий
- 5.1 Auto-it
- 5.2 SilkTest
- 5.3 Selenium
- 5.4 Sikuli
- 6. Использование и исследование необходимых технологий
- 6.1 Дополнительные технологии
- 6.2 Полный цикл прогона всей системы мониторинга
- 6.3 Практическая часть
- 6.4 Проекты, введенные в эксплуатацию
- 7. Вывод
- 8. Обзор используемой литературы
- 8.1 Рекс Блэк. "Ключевые процессы тестирования - планирование, подготовка, проведение, совершенствование"
- 8.2 Элфрид Дастин, Джефф Рэшка, Джон Пол. Автоматизированное тестирование программного обеспечения. Внедрение, управление и эксплуатация
- 8.3 Сэм Канер, Джек Фолк, Енг Нгуен. Тестирование программного обеспечения
- 8.4 Святослав Куликов. "Тестирование программного обеспечения. Базовый курс."
- 8.5 Джеймс Уиттакер, Джейсон Арбон, Джефф Каролло. Как тестируют в Google
- 9. Список используемых источников
1. Введение
1.1 Основное определение
Тестированием программного обеспечения представляет собой исследование, исполненное для определения заинтересованным сторонам информации о качестве продукта или сервиса при их испытании. Тестирование программного обеспечения также может дать объективную, независимую от программного обеспечения оценку, что позволит бизнес - сектору оценить и понять риски, связанные с реализацией тестируемого программного обеспечения. Методы тестирования включают в себя процесс выполнения программы или приложения с целью обнаружения ошибок в программном обеспечении (ошибки или другие дефекты).
Тестирование программного обеспечения включает в себя выполнение программного компонента или компонента системы для оценки одного или нескольких необходимых свойств, представляющих интерес. В целом, эти свойства показывают уровень, где компонент или тестируемая система:
· отвечает требованиям, которыми руководствовались при их проектировании и разработке,
· правильно отвечают на все виды входящих данных,
· выполняют свои функции в течение приемлемого времени,
· достаточно удобны,
· могут быть установлены и корректно работают в предназначенных для них средах,
· достигают общего результата, желаемого заинтересованными сторонами.
По мере того как число возможных тестов, даже для самых простых программных компонентов, практически бесконечно, все тестировщики программного обеспечения используют некоторую стратегию, чтобы выбрать тесты, которые являются выполнимыми для имеющегося времени и ресурсов. В результате, тестировщики программного обеспечения пишут такие тесты, которые, как правило, пытаются выполнить программу или приложение с целью обнаружения ошибок в программном обеспечении (ошибки или другие дефекты). Задача тестирования представляет собой повторяющийся процесс, ведь когда одна ошибка исправлена, она может осветить другие, более сложные ошибки на более глубоком уровне, или вообще может создать новые.
Тестирование программного обеспечения может предоставить объективную, независимую информацию о качестве программного обеспечения и риска воспроизведения ошибок пользователей.
Тестирование программного обеспечения может быть проведено, только когда выполняется тестируемое программное обеспечение. Общий подход к разработке программного обеспечения часто определяет, когда и как проводится тестирование. Например, в поэтапном процессе, большинство тестов проводится после того, как требования к системе определены и затем реализованы в тестируемых программ. Но зачастую все процессы по разработке - Agile подход, выставление требований, программирование и тестирование часто выполняются одновременно.
1.2 История возникновения тестирования программного обеспечения
Основные принципы тестирования программного обеспечения возникли в 1950-х годах. Однако было установлено, что данный вид тестирования, к сожалению, было не в состоянии обнаружить все ошибки.
В 1960-е и 1970-е годы был разработан метод, известный как "доказательство корректности", но это на его применение тратилось достаточно много времени, и при этом система тестировалась недостаточно.
Следующий метод тестирования программного обеспечения был разработан в конце 1970-х годов, по этому методу пытались найти ошибки в системе, которые еще не были обнаружены. В каком-то роде, этот метод являлся усовершенствованием предыдущего метода, в котором применялось последующее удаление обнаруженных ошибок. Также, принцип работы вышеприведенных типов тестирования программного обеспечения в том, что если при тестировании появляются ошибки, то вызываются программа и сами тесты, для того чтобы доказать действительно ли они являются ошибками программного обеспечения, а не ошибками тестирования.
В 1980-е годы был включено в процесс тестирования программного обеспечения - предотвращение дефектов. Данная методика была определена как проектирование тестов, и данное улучшение достаточно сильно помогло шагнуть вперед по сравнению с другими методами тестирования программного обеспечения, существовавших на тот момент. Этот метод тестирования программного обеспечения применялся ко всей программе, только когда она была полностью разработана. Метод предотвращения дефектов включал в себя тестирование требований программы, дизайн программы, код программа, а также сами тесты - насколько они были эффективными. После этого были созданы инструменты автоматизированного тестирования.
Компьютеры могли бы выполнить больше тестов по сравнению с людьми, что являлось повышением эффективности тестирования программного обеспечения.
В 1990-е годы было разработано дизайн тестирование. Данный режим тестирования был создан для тестирования в планировании, проектировании, создании, обслуживании программного обеспечения. Этот режим также осуществляет контроль качества программы. Другие методы тестирования программного обеспечения, разработанные в то время, являлись инструментами тестирования, которые были более продвинуты на языках сценариев и средств отчетности. Одним из главных событий на этом этапе - емкостное планирование, где были разработаны инструменты, которые тестируют нагрузку и загрузку целевой системы, являющиеся переломными точками системы.
В 2000-е годы был разработан метод тестирования, известный как BTO (Business Technology Optimization). В этом методе тестирования программного обеспечения были приняты во внимание организация бизнес цели программы и эффективность программы. Данный метод был разработан для измерения ценности программы и максимизации ее за счет повышения производительности.
тестирование автоматизация программное обеспечение
2. Постановка цели и задачи
2.1 Цель работы
Необходимо исследовать средства автоматизированного тестирования для построения качественной системы мониторинга веб-приложений, сайтов и биллинговых систем ПАО "МТС".
"Мобимльные ТелеСистеммы" (МТС) - российская телекоммуникационная компания, оказывающая услуги в России и странах СНГ под торговой маркой "МТС". Компания оказывает услуги сотовой связи (в стандартах GSM, UMTS (3G) и LTE), услуги проводной телефонной связи, широкополосного доступа в интернет, мобильного телевидения, кабельного телевидения, спутникового телевидения, цифрового телевидения и сопутствующие услуги, в частности услуги по продаже контента. По состоянию на март 2014 года компания во всех странах своего присутствия обслуживала более 107 миллионов абонентов.
Критерии для выбора средства:
надежность
бесплатно распространяется
гибкая настройка под все виды испытуемых систем
поддержка всех видов испытуемых систем
возможность мониторинга
легко сопровождаема
имеется возможность легкой разработки и правки (возможно визуальное программирование)
2.2 Задача работы
Задачей, являющейся стандартным примером для выбора программного обеспечения, исследованием которого я занимаюсь, можно представить:
Изначальные требования:
A. Пользователь авторизован в ПК.
B. Все вспомогательные приложения, которые могут влиять на работу тестирования, закрыты.
C. Браузер Internet Explorer закрыт.
Стандартная наипростейшая задача:
1) Запустить браузер Internet Explorer.
2) Зайти на сайт Citrix.
3) Войти в свою учетную запись.
4) Открыть приложение.
5) Выйти из учетной записи.
6) Закрыть браузер.
Конечной точкой тестирования являются изначальные требования и замеры, проведенные с помощью данного тестирования. Замеры будут осуществляться на шагах 2 (замер времени загрузки сайта), 3 (время авторизации на сайте), 4 (время открытия приложения).
Для примера используется задача, наиболее простая и одновременно, приближенная по типу к задачам, исполняемым в реальных тестах по мониторингу. Так как в реальных задачах выполняемых действий намного больше и данные задачи подвержены коммерческой тайне, их рассматривать не будем.
3. Общие понятия
Тестирование обычно представляет деятельность, выполняемую для оценки и улучшения качества программного обеспечения. Тестирование, как правило, базируется на определении в программных системах - дефектов и проблем.
Автоматизированное тестирование программного обеспечения - процесс тестирования программного обеспечения, где основные функции и шаги теста, такие как запуск, инициализация, выполнение, анализ и выдача результата, с помощью инструментов для автоматизированного тестирования производятся автоматически.
Но сам инструмент для автоматизированного тестирования - это программа, с помощью которой осуществляется создание, отладка, выполнение и анализ результатов прогона тест-скриптов (Test Scripts - это список инструкций для автоматической проверки задаваемой изначально части программного обеспечения).
Тестирование программных систем состоит из динамической верификации поведения программ на конечном наборе тестов. При этом тесты выбираются из обычно выполняемых действий прикладной области и обеспечивают проверку соответствия ожидаемому поведению системы.
3.1 Виды тестирования
Видов тестирования достаточно много и все они разбиваются на определенные подвиды, исходя из своего назначения и применения в различных сферах тестирования.
По объекту тестирования
· Функциональное тестирование
Представляет собой вид тестирования который основывает свои тестовые кейсы на спецификациях программного компонента в процессе тестирования, то есть способности программного обеспечения решать задачи, необходимые реальным пользователям. Функции программного обеспечения испытываются путем подачи на ввод определенной информации и изучении вывода, внутренняя структура программы рассматривается редко (не так, как в тестировании белого ящика). Функциональное тестирование обычно описывает, что делает система.
Функциональное тестирование не подразумевает тестирование функции (метода) вашего модуля или класса. Функциональное тестирование проверяет общую функциональность всей системы.
Функциональное тестирование включает в себя:
o Функциональная пригодность (англ. suitability).
o Точность (англ. accuracy).
o Способность к взаимодействию (англ. interoperability).
o Соответствие стандартам и правилам (англ.compliance).
o Защищённость (англ. security).
· Тестирование производительности
В разработке программного обеспечения, тестирование производительности, в целом, проводится для определения того, как тестируемая система работает с точки зрения оперативности и стабильности при определенной рабочей нагрузке. Данный вид тестирования, может также служить для исследования, измерения или проверки других качественных атрибутов системы, таких как масштабируемость, надежность и использование ресурсов.
Тестирование производительности, подсфера инженерии производительности, является наукой, которая стремится к созданию стандартов эффективности в реализации, дизайна и архитектуры системы.
Возможны два подхода к тестированию производительности программного обеспечения:
1. в терминах рабочей нагрузки: программное обеспечение подвергается тестированию в ситуациях, соответствующих различным сценариям использования;
2. в рамках бета-тестирования, когда система испытывается реальными конечными пользователями.
Рассмотрим виды тестирования производительности:
· Нагрузочное тестирование
Нагрузочное тестирование является самой простой формой тестирования производительности. Нагрузочное тестирование обычно проводится, чтобы понять поведение системы при определенной ожидаемой нагрузке. Эта нагрузка может олицетворять некоторое ожидаемое количество одновременных пользователей на приложение, выполняющего определенное количество операций в течение заданного времени. Данный тест будет определять время отклика всех важнейших операций бизнес-процесса приложения. Базы данных, сервер приложений и т.д. также контролируются во время испытания, это помогает выявить узкие места в прикладном программном обеспечении и оборудование, установленное на программное обеспечение.
· Стресс-тестирование
Вид тестирования программного обеспечения, применяющийся в условиях превышения пределов нормального функционирования, отождествляющий надёжность и устойчивость системы. Данный вид тестирования применяется для особенно важных частей программного обеспечения, хотя применяется нередко и для всех остальных частей. Как правильно, стресс-тестирование легче выявляет устойчивость, доступность и обработку исключений системой под большой нагрузкой, чем то, что считается корректным поведением в нормальных условиях.
· Тестирование стабильности
Данный вид тестирования используется, для того чтобы убедиться в приложении - выдержит ли оно ожидаемую нагрузку в течении долгого времени. Также для данного вида тестирования ведется наблюдение за использованием памяти, это нужно, чтобы выявить деградацию производительности, при которой снижается скорость обработки информации, а также увеличивается время ответа программы исходя из начала теста.
· Конфигурационное тестирование
Конфигурационное тестирование - также является примером стандартного тестирования производительности, но есть и отличие от других видов тестирования: в данном случае тестируется влияние на производительность изменений в конфигурации. Отличным примером такого тестирования является эксперимент с балансировкой нагрузки. Данный вид тестирования может быть совмещен с нагрузочным, стресс и тестированием стабильности.
· Юзабилити - тестирование
Юзабилити - тестирование является методом тестирования программного обеспечения, которое используется для того, чтобы понять эргономично ли испытуемое ПО или нет. То есть тестирование позволяет ответить на вопрос: будет ли "удобно" ли пользоваться данным приложением конечному пользователю? Проверка эргономичности определяется на одном или нескольких объектах тестируемой системы, в то время как взаимодействие человека и компьютера, формирует универсальные стандартные принципы.
· Тестирование безопасности
Данный тип предназначен для тестирования безопасности программного обеспечения. В целом системы программного обеспечения, всегда подвергались атаке со стороны злоумышленников, будь то хакеры, конкуренты и т.д. Поэтому задачей специалистов было создание такой защиты, для взлома которой понадобились средства более дорогостоящие, чем данные, которые будут доступны при взломе исходной системы. Ведь хорошо написанное тестирование безопасности, сможет в любом случае взломать тестируемое программное обеспечение. Само тестирование будет проверять защитные реакции программного обеспечения.
· Тестирование локализации
Тестирование локализации представляет собой тестирование программного обеспечения на предмет локализации в зависимости от языка, ассоциаций, региона/страны/города. Зачастую на локализацию влияет не только местоположение тестируемого объекта, но и менталитет пользователей, который также необходимо учитывать при создании определенных сценариев и логических цепочек в приложениях.
· Тестирование совместимости
Тестирование связанное с взаимодействием испытуемого программного обеспечения, как правильно, с обширным кругом различных приложений. Проверяется будут ли мешать друг другу приложения, имеются ли какие то конфликты в плане версионности, обратно ли они совместимы или нет и тд.
3.2 Типы тестирования
Рассмотрим типы тестирования:
1) Тестирование черного ящика
2) Тестирование белого ящика
3) Тестирование серого ящика
Под черным ящиком имеется ввиду система, механизм которой достаточно сложен, неизвестен или неважен в рамках данной задачи. При этом есть устройство ввода в систему входных данных, механизм обработки входных данных и механизм вывода выходных данных.
Признаки подхода "черный ящик":
1. Тестировшик не знает, как устроен механизм обработки входных данных.
2. Идеи для тестирования идут от предполагаемых паттернов (pattern - образец) поведения пользователей. Поэтому подход "Черный ящик" также называется поведенческим.
Для начала рассмотрим первый признак. С одной стороны это дает преимущество, т.к. если тестирует программист, то он нередко воспринимает код как априорно непогрешимый.
С другой стороны тестирование по методу "Черного ящика" ведется вслепую, т.к. неизвестен внутренний механизм. Вследствие чего, для проверки функциональной единицы может потребоваться несколько тест кейсов, когда можно было проверить одним.
Рассмотрим второе. Исполнение тестирования может происходить как при наличии, так и без тест кейсов. Например, рассмотрим следующий тестовый сценарий (Последовательность действий для достижения фактического результата):
1) Открыть сайт ***
2) Ввести текст "привет"
3) Нажать искать Здесь текст "привет" является данными к тест-кейсу.
Основные источники паттернов:
1) Спецификация
2) Найдены путем эксплоринга (использования софта для понимания того, как реальный пользователь будет с ним обращаться).
3) Черный ящик
4) Интуиция
5) Совет программиста
6) Другие источники
В отличие от "Черного ящика" при подходе "Белый ящик" тестировщик основывает идеи для тестирования на знании об устройстве и логике тестируемой части.
Тестировочное покрытие состоит из двух вещей:
1) Покрытие возможных сценариев
2) Покрытие исполнения тест-кейсов
Покрытие возможных сценариев - величина, показывающая процентное соотношение сценариев, зафиксированных в тест кейсах, ко всем теоретически возможным сценариям.
Покрытие исполнения тест-кейсов - это процентное отношение исполненных тест-кейсов к общему количеству тест-кейсов.
Симбиоз подходов "Черный ящик" и "Белый ящик" увеличивает покрытие возможных сценариев.
"Серый ящик" - подход, сочетающий в себе элементы двух предыдущих подходов
3.3 По степени автоматизации
Также тестирование делится еще на два подтипа "по степени автоматизации" на ручное и автоматизированное.
Тестировщики, использующие ручное тестирование, обязаны вручную выполнять тестирование без использования каких то средств для автоматизации. Данный тип тестирования программного обеспечения является самым простым - низкоуровневым типом тестирования, в котором не требуется много дополнительных знаний.
Но все-таки, перед автоматизацией тестирования абсолютно любого приложения, нужно выполнить серию тестов вручную. Для ручного тестирования программного обеспечения нужно приложить значительные усилия, для доказательства того, что мы сможем применить здесь автоматизацию. А также не стоит забывать, что все таки 100% автоматизация не возможна в принципе и ручное тестирование периодически необходимо.
К сожалению, тестирование вручную требует специальных знаний и профессиональной подготовки. И полное автоматизирование невозможно, поэтому в некоторых тест-кейсах ручная часть присутствует.
Тестирование может быть очень непростым занятием. Проведение тестирования для проверки максимально возможного количества путей выполнения с использованием минимального числа тест-кейсов требует серьезных аналитических навыков.
Рассмотрим, какие же преимущества даёт тестировщику автоматизация:
Ш Человеческий фактор исключается. Это достаточно весомый аргумент. Никто из нас не застрахован от ошибок. Исполняемый тест ничего не напутает и не пропустит по неосторожности
Ш Тест-скрипту нет необходимости сверять действия с инструкцией или, например с документацией, исходя из этого он является достаточно быстрым
Ш Падает затратность на сопровождение тестов, так как поддержка и анализ необходим в гораздо меньшем объеме, чем если провести это все вручную.
Ш Также имеется возможность в формировании отчетов - мы можем настроить как и вид отчетов, так и их отсылку.
Ш Тесты могут выполняться в любое время суток, а разработчик заниматься другими важными делами
Вместе с тем имеет место и ряд недостатков, таких как:
Ш Однообразно выполняемые тесты является минусом и плюсом одинаково, так как разработчик может обратить внимание на какие-то детали при ручном тестировании и найти ошибку. При автоматизации, данное действие невозможно.
Ш Пропорционально растут затраты на сопровождение от частоты изменений тестируемого приложения.
Ш Так как, разработка автоматизированных тестов является разработкой приложения, которое тестирует другое приложение - исходя из этого можно сделать вывод, что затраты на разработку будут несколько больше.
Ш Стоимость инструмента для автоматизации - в случае, если используется лицензионное ПО, его стоимость может быть достаточно высока. Свободно распространяемые инструменты, как правило, отличаются более скромным функционалом и меньшим удобством работы.
Ш Многофункциональное программное обеспечение для разработки тестов, порой стоит достаточно дорого, конечно имеются и бесплатные средства, но зачастую они требуют доведения всей системы до более совершенного вида, либо требуется подключать дополнительное программное обеспечение.
3.4 Три уровня автоматизации тестирования
Условно, тестируемое приложение можно разбить на 3 уровня:
o Unit Tests Layer
o Functional Tests Layer (Non-UI)
o GUI Tests Layer
Для обеспечения лучшего качества продукта, рекомендуется автоматизировать все 3 уровня.
Рассмотрим более детально стратегию автоматизации тестирования на основе трехуровневой модели:
Ш Уровень модульного тестирования (Unit Test layer) Под автоматизированными тестами на этом уровне понимаются Компонентные или Модульные тесты написанные разработчиками. Тестировщикам никто не запрещает писать такие тесты, которые будут проверять код, конечно же, если их квалификация позволяет это. Наличие подобных тестов на ранних стадиях проекта, а также постоянное их пополнение новыми тестами, проверяющими "баг фиксы", убережет проект от многих серьезных проблем.
Ш Уровень функционального тестирование (Functional Test Layer non-ui) Как правило не всю бизнес логику приложения можно протестировать через GUI слой. Это может быть особенностью реализации, которая прячет бизнес логику от пользователей. Именно по этой причине по договоренности с разработчиками, для команды тестирования может быть реализован доступ напрямую к функциональному слою, дающий возможность тестировать непосредственно бизнес логику приложения, минуя пользовательский интерфейс.
Ш Уровень тестирования через пользовательский интерфейс (GUI Test Layer) На данном уровне есть возможность тестировать не только интерфейс пользователя, но также и функциональность, выполняя операции вызывающую бизнес логику приложения. С нашей точки зрения, такого рода сквозные тесты дают больший эффект нежели просто тестирование функционального слоя, так как мы тестируем функциональность, эмулируя действия конечного пользователя, через графический интерфейс.
4. Обзор технологий
4.1 Sikuli IDE
Рисунок 1 - Логотип Sikuli IDE
Sikuli - открытая кросс-платформенная визуальная среда создания сценариев-скриптов, которая ориентирована на программирование графического интерфейса при помощи изображений (скриншотов).
В качестве скриптового языка в Sikuli используется Jython, то есть в скрипте при желании можно использовать конструкции из языка Python. В SikuliX появилась возможность использовать для написания скриптов язык Ruby в реализации jRuby. Sikuli доступна для работы в Windows, Mac OS X и Linux.
Sikuli появилась в 2008 г. как результат совместной работы доктора Rob Miller (профессора в департаменте EECS в MIT), студента Массачусетского технологического института (MIT) из Китая Sean Tsung-Hsiang Chang, и Tom Yeh - соискателя учёной степени в Университете Мэриленда (University of Maryland).
Sikuli переводится с древнего индейского языка Wixarica из Мексики как "глаз бога", что намекает на возможность видеть все на экране. Авторы нового языка считают, что некоторые задачи, например по автоматизации тестирования пользовательского интерфейса или поиску информации в базе данных, проще выполнять с помощью визуальных средств. Sikuli использует алгоритмы распознавания текста и индексации изображений с помощью "визуальных слов". Встроенные функции языка принимают в качестве параметров графические данные (скриншоты).
Sikuli позволяет автоматизировать все, что видно на экране, без углубленного знания внутреннего API (что не мешает также писать сложные скрипты на Jython или Ruby). Простой пример - следить по изображению вебкамеры за ребенком и, если он будет крутиться, подать сигнал.
Jython - это реализация языка Python на языке Java. Первоначальное имя проекта - JPython, которое пришлось поменять из-за конфликта с одноименным проектом (имя было занято на хостинге sourceforge.net), одновременно и компилятор, и интерпретатор.
Программы, выполняющиеся в среде Jython могут одновременно использовать классы языков Java и Python, используя, например, классы стандартной библиотеки Swing.
На языке Java можно разрабатывать апплеты для веб-браузеров. Но в настоящий момент апплеты в Jython не включены. Компилятор был удалён из пакета Jython 2.5.0 с целью внедрения новой технологии, которая лучше реализует создание апплетов. Технология будет включена в другую версию в ближайшем будущем.
Рисунок 2 - Как выглядит интерфейс пользователя Sikuli
Рисунок 3 - так выглядит простейший скрипт для входа на сайт www.yahoo.com
Плюсы данного варианта:
1. Простота - очень просто создать скрипт, даже человеку не понимающему в программировании.
2. Написано на Jython - следовательно можем подключать-использовать Java помимо Python.
3. Нет привязок по id у объектов - следовательно можем тестировать как Веб, так и desktop приложения, что является безусловно очень важным критерием.
4. Бесплатно распространяема.
5. Очень подробная документация.
Минусы:
1. Для мониторинга систем будет необходима разработка способов отправки данных и их хранения.
2. Маленькое количество информации о данной платформе на русском языке.
3. Нет привязок по id у объектов - также является минусом, потому что в этом случае при любом незначительном изменении изображения, либо шрифта, есть шанс того, что фреймворк не сможет переопределить объект.
Что касаемо самого языка программирования Python.
Рисунок 4 - Логотип языка Python
Python - высокоуровневый язык программирования общего назначения, ориентирован на повышение производительности разработчика и читаемости кода. Синтаксис ядра Python минималистичен. В то же время стандартная библиотека включает большой объём полезных функций.
Python поддерживает несколько парадигм программирования, в том числе структурное, объектно-ориентированное, функциональное, императивное и аспектно-ориентированное. Основные архитектурные черты - динамическая типизация, автоматическое управление памятью, полная интроспекция, механизм обработки исключений, поддержка многопоточных вычислений и удобные высокоуровневые структуры данных. Код в Python организовывается в функции и классы, которые могут объединяться в модули (они в свою очередь могут быть объединены в пакеты).
Эталонной реализацией Python является интерпретатор CPython, поддерживающий большинство активно используемых платформ. Он распространяется под свободной лицензией Python Software Foundation License, которая дает использовать его без ограничений в любых приложениях, включая проприетарные. Есть реализации интерпретаторов для JVM (с возможностью компиляции),MSIL (с возможностью компиляции), LLVM и других. Проект PyPy предлагает реализацию Python на самом Python, что уменьшает затраты на изменения языка и постановку экспериментов над новыми возможностями.
Python - активно развивающийся язык программирования, новые версии (с добавлением/изменением языковых свойств) выходят примерно раз в два с половиной года. Вследствие этого и некоторых других причин на Python отсутствуют стандарт ANSI, ISO или другие официальные стандарты, их роль выполняет CPython.
Разработка языка Python была начата в конце 1980-х годов сотрудником голландского института CWI Гвидо Ван Россумом. Для распределённой ОС Amoeba требовался расширяемый скриптовый язык, и Гвидо начал писать Python на досуге, позаимствовав некоторые наработки для языка ABC (Гвидо участвовал в разработке этого языка, ориентированного на обучение программированию). В феврале 1991 года Гвидо опубликовал исходный текст в группе новостей alt. sources. С самого начала Python проектировался как объектно-ориентированный язык.
Название языка произошло вовсе не от вида пресмыкающихся. Дело в том, что автор именовал язык в честь популярнейшего британского комедийного телешоу семидесятых годов - "Летающий цирк Монти Пайтона".
Но, всё равно название языка чаще связывают именно со змеёй, нежели с передачей - пиктограммы файлов в KDE или в Microsoft Windows и даже эмблема на сайте python.org (до выхода версии 2.5) изображают змеиные головы. Важная цель разработчиков Python - создавать его забавным для использования.
Это отражено в его названии, которое пришло из Монти Пайтона,. Также это отражено в иногда игривом подходе к обучающим программам и справочным материалам, таким как примеры использования, которые используют понятия спама и яиц вместо стандартных foo и bar.
Наличие дружелюбного, отзывчивого сообщества пользователей считается наряду с дизайнерской интуицией Гвидо одним из факторов успеха Python. Развитие языка происходит согласно чётко регламентированному процессу создания, обсуждения, отбора и реализации документов PEP (англ. Python Enhancement Proposal) - предложений по развитию Python.
3 декабря 2008 года, после длительного тестирования, вышла первая версия Python 3000 (или Python 3.0, также используется сокращение Py3k). В Python 3000 устранены многие недостатки архитектуры с максимально возможным (но не полным) сохранением совместимости со старыми версиями Python. На сегодня поддерживаются обе ветви развития (Python 3. x и 2. x).
Рисунок 6 - Стандартный редактор-интерпретатор Python
Jython - версия языка Python на языке Java. Первое имя проекта - JPython, но его пришлось изменить так как произошел конфликт с одноименным проектом (имя было занято на хостинге sourceforge.net), одновременно является и компилятором, и интерпретатором.
Рисунок 7 - Логотип языка Jython
Программы, выполняющиеся в среде Jython могут одновременно использовать классы языков Java и Python, используя, например, классы стандартной библиотеки Swing.
4.2 Selenium Webdriver
Selenium - это профессиональный инструмент для автоматизированного управления браузерами. Наиболее популярной областью применения Selenium является автоматизация тестирования веб-приложений. Однако при помощи Selenium можно автоматизировать любые другие рутинные действия, выполняемые через браузер.
Разработка Selenium поддерживается производителями популярных браузеров. Они адаптируют браузеры для более тесной интеграции с Selenium, а иногда даже реализуют встроенную поддержку Selenium в браузере. Selenium является центральным компонентом целого ряда других инструментов и фреймворков автоматизации.
Selenium поддерживает десктопные и мобильные браузеры. Selenium позволяет разрабатывать сценарии автоматизации практически на любом языке программирования. С помощью Selenium можно организовывать распределённые стенды, состоящие из сотен машин с разными операционными системами и браузерами, и даже выполнять сценарии в облаках. WebDriver - это инструмент для автоматизированного тестирования веб-приложений, в частности, для проверки того, что приложение работает в соответствии с ожиданиями. Этот инструмент задумывался таким образом, чтобы иметь удобный программный интерфейс (API), позволяющий повысить читаемость и упростить поддержку тестов, более легкий для изучения и понимания, чем Selenium RC (1.0) API. WebDriver API не привязан ни к каким тестовым фреймворкам, что позволяет использовать любые фреймворки модульного тестирования, равно как и старый добрый метод “main”.
4.3 Auto-it
Рисунок 8 - Логотип языка Auto-it
AutoIt - бесплатно распространяемый язык программирования, используемый при автоматизации задач для Microsoft Windows.
В изначальной версии AutoIt преимущественно использовался для разработки скриптов автоматизации (макросов) для программного обеспечения Microsoft Windows. Скрипты данного типа неиболее подходят для использования на часто запускаемых программах, например установка одинакового набора программ на большое количество персональных компьютеров. В свежих версиях AutoIt эволюционировал дизайн языка и неплохо выросла функциональность - данный шаг приблизил AutoIt к языкам общего назначения.
После апгрейда до AutoIt 3 синтаксис языка стал реструктурирован и стал похож на язык семейства BASIC. Появилась возможность скомпилировать код в отдельный от интерпретатора файл.
Немного о Basic (BASIC - сокращение от англ. Beginner's All-purpose Symbolic Instruction Code - универсальный код символических инструкций для начинающих; англ. basic - основной, базовый) - группа языков программирования высокого уровня.
Рисунок 9 - Логотип Visual Basic Microsoft
В 1963 году преподавателями Дартмутского Колледжа Джоном Кемени и Томасом Куртцом был придуман данный язык и реализован командой студентов колледжа под их руководством. С течением времени, когда стали появляться другие диалекты, этот "изначальный" диалект стали называть Dartmouth BASIC.
Basic создан таким образом, чтобы студенты без специального математического образования могли писать программы. Изначально целью создания языка Basic, было решение проблем, связанных с языками созданными ранее - которые являлись сложными, и предназначался для более "простых" пользователей, интересовавшихся не столько в скорости работы своих программ, сколько просто в потенциальной возможности использовать персональный компьютер и язык программирования для решения своих задач. Для популяризации языка первый компилятор распространялся бесплатно.
Когда создавался язык Basic, были сформулированы восемь правил к нему:
· Легкий старт в изучении для новичков;
· Универсальная направленность (нет определенной специализации);
· При необходимости - расширения возможностей инструментами, доступными разработчикам;
· Интерактивность;
· Разборчивые и простые сообщения об ошибках языка при разработке и отладке;
· Быстрая работа кода в небольших программах;
· Необязательно понимать суть работы аппаратного обеспечения, чтобы программировать;
· Хорошее взаимодействие между пользователем и операционной системой.
Язык был основан частично на Fortran II и частично на Algol-60, с добавлениями, делающими его удобным для работы в режиме разделения времени, обработки текста и матричной арифметики. Первоначально Бейсик был реализован на GE-265 с поддержкой множества терминалов. Вопреки распространённому убеждению, в момент своего появления это был компилируемый язык.
Более популярен, язык оказался в середине семидесятых годов - после установки и применения на микрокомпьютерах. Большое количество языков программирования являлись достаточно громоздкими для использования в маленькой памяти. Медленных носителей, например, бумажная лента, аудиокассета или вообще без подходящего текстового редактора небольшой язык такого плана, как Basic, стал отличным решением.
В 1975 году компания Microsoft выпустила Altair BASIC. После этого был выпущен ряд операционных систем, использующих Basic в качестве основного языка программирования. Для операционной системы CP/M был создан диалект BASIC-80, надолго определивший развитие языка.
В данный период было создано множество новых компиляторов и интерпретаторов Basic. Майкрософт продавала несколько версий BASIC для MS-DOS/PC-DOS, включая BASICA, GW-BASIC и QuickBASIC (QBASIC). Компания Borland в 1985 выпустила Turbo BASIC 1.0 (более поздние его версии впоследствии продавались другой компанией под именем PowerBASIC). На домашних компьютерах появились различные расширения Basic, обычно включающие средства для работы с графикой, звуком, выполнением DOS-команд, а также средства структурного программирования. Некоторые другие языки использовали хорошо известный синтаксис Basic в качестве основы, на которой строилась совершенно иная система (см. например, GRASS).
Начиная с конца восьмидесятых годов, новые компьютеры стали намного более сложными и предоставляли возможности (такие как графический интерфейс пользователя), которые делали Basic уже не столь удобным для программирования. И тут, Basic начал сдавать свои позиции, несмотря на то, что огромное количество его версий ещё использовалось и продавалось, но так как это было изначально.
Вторую жизнь Basic получил с появлением в 1991 году Visual Basic от Microsoft. Этот язык напоминал оригинальный только синтаксисом, но был значительно более современным. Visual Basic и его варианты стали одним из наиболее часто используемых языков на платформе Windows. Позже был создан вариант под названием WordBasic, используемый в MS Word до появления Word 97. Visual Basic for Applications (VBA) был встроен в Excel 5.0 в 1993 году, затем в Access 95 в 1995-ом, а после и во все остальные инструменты, входящие в пакет Office - в 1997-ом. Internet Explorer 3.0 и выше, а также установленная Windows включала в себя интерпретатор скриптового языка VBScript. В полный вариант пакета OpenOffice также включён интерпретатор Basic.
В настоящее время Basic - это не один язык, а группа языков, отличающихся временем создания, парадигмами программирования и синтаксисом, бывает, что и до полной потери совместимости программ. Первые версии не поддерживали даже структурное программирование; со временем структурное и процедурное программирование стали общепринятыми парадигмами, и появились версии, поддерживающие их. Ряд современных компиляторов во главе с Visual Basic и VB.net реализуют объектно-ориентированное и событийное программирование.
AutoIt же, использует симуляцию нажатия клавиш, движений мыши и манипуляции с окнами, элементами управления. Это позволяет автоматизировать задачи пользователя Windows таким образом, какой невозможен или затруднён в других языках программирования. Кроме того, этот язык компактен, самодостаточен и работает на всех версиях Windows "прямо из коробки", без внешних. dll-библиотек и записей в реестре, что позволяет безопасно использовать его на серверах.
Возможности языка включают:
· Совместимость с различными версиями Windows - XP/2003/Vista/2008/7/2008 R2/8/8.1/2012
· 32/64 битные версии.
· Опция User Account Control (UAC) в версиях начиная с Windows Vista, Windows 7 и т.д. (серверные в том числе).
· Поддержка Unicode.
· Работа с консольными приложениями и доступность стандартных потоков ввода-вывода.
· Имеется возможность запустить программу от имени другого пользователя.
· Сохранения скриптов в формат. EXE, благодаря встроенной программе Aut2Exe.
· Файлы можно извлечь при запуске, так как они включаются в скомпилированный файл.
· Сжатие и защита исполняемого файла от декомпиляции с помощью упаковщика UPX.
· Создание пользовательских графических интерфейсов, различных информационных сообщений, форм ввода для информации.
· Использование функций из динамических библиотек и функций Windows API.
· Работа с Windows-реестром, буфером обмена, файлами.
· Использование COM-объектов.
· Перехват, использование и эмуляция клавиатурных нажатий и кликов мышки.
· Использование различных действий с окнами: передвижение, скрытие, отображение, изменение размера, активизация, закрытие. Также есть возможность, обратиться по их заголовку, отображаемому тексту, размеру, расположению, классу, по внутренним дескриторам Win32 АPI, определяемым с помощью входящей в комплект поставки утилиты Au3Info.
· Получение информации и использование элементов управления: поле редактирования, переключатель, список, кнопки, статусная строка и т.д., в том числе неактивных.
· распознавание HTML кода страниц, скачивание файлов, из интернета, использование FTP, отправление E-mail сообщений, работа с БД MySQL и SQLite.
· Использование протоколов TCP и UDP.
· Автоматизированная работа в Internet Explorer, Opera, FireFox.
· Большое число функций для пользования текстом (строками), а так же с регулярными выражениями в стиле Perl (используется библиотека PCRE).
· Работа со сложными математическими расчётами.
· AutoItX - объединённая версия COM и DLL, в которой можно использовать возможности AutoIt в программах, написанных на других языках.
Интерпретатор AutoIt имеет маленький размер и не обязателен к установке. Для работы необходим основной файл, а для создания скрипта - любой текстовый редактор.
В полной версии AutoIt находится интегрированная среда разработки, основанная на бесплатном редакторе SciTE. Компилятор, дополнительные программы и информационные материалы полностью совмещены, что позволяет сделать данный редактор стандартным окружением для программистов, пользующихся AutoIt. Компилятор AutoIt и среда разработки SciTE просто устанавливаются, вспомогательные настройки не необходимы. Имеется полная документация по AutoIt и SciTE на русском языке с дополнительной установкой полной версии редактора.
Как и другие скриптовые языки, AutoIt - язык использующий классическую модель и переменные вариантного типа, разрешающий хранить типы данных различного рода, например массивы. В AutoIt нет (или имеют ограниченную поддержку) пространства имён, объектно-ориентированное программирование, абстрактные типы данных, классы, расширенные графические функции. Также, помимо возможностей, встроенных в ядро, есть вариант использовать большую библиотеку готовых функций.
Распространенное использование AutoIt - разработка программ для Microsoft Windows. Такие популярные задачи, как мониторинг веб-сайтов, мониторинг сетей, дефрагментация дисков и резервное копирование могут быть автоматизированы и скомбинированы в виде настроенной под пользователя утилиты.
Нередко AutoIt используется для создания ботов к онлайн-играм. С помощью ботов можно автоматизировать некоторые определенные действия в играх, в конечном счете, пользователь имеет возможность быстрее добиться необходимого результата. Данное использование Autoit не одобряется сообществом, так как создаёт плохую репутацию программе, но несколько скриптов данного вида могут быть найдены на официальном форуме. Бытует мнение, что использование ботов рассматривается большинством пользователей AutoIt как нечестная игра, и вам не следует ожидать значительной помощи от сообщества в их создании. Большое число членов сообщества вообще не рассматривают запросы такого вида.
Для упрощения разработки GUI существует визуальный редактор форм Koda Form Designer, c интерфейсом, аналогичным Delphi IDE. Поддерживается визуальное создание и изменение всех доступных в AutoIt диалоговых элементов (кнопок, полей ввода, меню и т.д.)
Исходный код AutoIt 3.1.0 на языке С++ доступен для загрузки в архиве AutoIt; код дальнейших версий закрыт. Исходный код AutoIt использовался при создании языка AutoHotkey. Это являлось разработкой небольшой команды, но с активной поддержкой пользователей всего мира. Сторонняя поддержка включает в себя - файлы справки, примеры программ, форумы техподдержки, список рассылки, утилиты.
4.4 SilkTest
Рисунок 10 - Логотип SilkTest
SilkTest является инструментом для автоматизированного и регрессионного тестирования корпоративных приложений. Он был первоначально разработан Segue Software, которая была приобретена компанией Borland в 2006 году. Borland была приобретена компанией Micro Focus International в 2009 году.
SilkTest предлагает различные клиенты:
Ш SilkTest Classic. Использует доменный 4Test специфический язык для написания сценариев по автоматизации. Этот объектно-ориентированный язык похож на C ++. Он использует понятия классов, объектов и наследование.
Ш Silk4J позволяет писать тесты автоматизации в Eclipse, используя Java в качестве языка сценариев.
Ш Silk4Net позволяет то же самое в Visual Studio с помощью VB или C #
Ш SilkTest Workbench позволяет писать тесты по автоматизации на визуальном уровне (по аналогии с бывшим TestPartner), а также с использованием VB.net в качестве языка сценариев.
Особенности:
o SilkTest Хост: содержит все файлы сценариев источника, помимо дополнительных.
o SilkTest Агент: переводит команды сценария в GUI команд (действия пользователя). Эти команды могут быть выполнены на той же машине, как хозяин или на удаленной машине.
SilkTest определяет все окна и элементы управления тестируемого приложения как объекты, и определяет все свойства и атрибуты каждого окна. Исходя из этого, он поддерживает ООП реализацию (частично).
SilkTest может быть запущен, чтобы определить движение мыши вместе с нажатием клавиш (полезно для пользовательского объекта). Он может использовать как запись и воспроизведение или описательные методы программирования для захвата диалоговых окон, что является достаточно важным моментом для разработчиков.
Расширения, поддерживаемые SilkTest:.net, Java (Swing, SWT), DOM, IE, Firefox, SAP графического интерфейса пользователя Windows.
SilkTest использует Silk Bitmap Tool (bitview. exe), чтобы захватить и сравнить окна и области.
5. Выбор технологий
Итак, какую технологию выбрать, вопрос достаточно сложный, исходя из первоначально приведенных условий, можно сделать выбор, что подходят для решения исходных задач почти все технологии, рассмотрим и обоснуем решение, касательно каждого пункта общего стека:
5.1 Auto-it
AutoIt - отличное ПО, для тестирования, бесплатна, есть сносная документация, к сожалению для разработки необходимо более глубокое понимание концепции данной программы, при разработке теста для авторизации на сайте, получилось написать около 100 строк (для сравнения на Sikuli - ~10). Данное ПО заслуживает внимания, но скорее любителям синтаксиса Basic.
Итак обобщим, плюсы:
1. Бесплатен
2. Русскоязычное сообщество
3. Может тестировать как desktop, так и web
Минусы:
1. Синтаксис заявлен простым, но при разработке теста - авторизация на сайте заняла 100 с лишним строк!
2. Сообщество хоть и существует, но поддержка данного сообщества отнюдь небольшая.
3. Придется изучать Basic, а помимо него привыкать к языку AutoIt
5.2 SilkTest
Отличное программное обеспечение для тестирования, имеется и официальная поддержка от известной компании HP, также продаются готовые решения для различных проектов, исходя из условий заказчика, но такие решения достаточно дорогостоящие.
Плюсы:
1. Поддержка
2. Тип нахождения объектов - захват изображения, следовательно, можем тестировать веб и десктоп приложения.
3. Имеется встроенное ПО для захвата видео тестов.
4. Различные клиенты позволяют писать под различные языки программирования.
Минусы:
1. Платный
2. Достаточно обширная база софта, без обширной поддержки на русском языке.
5.3 Selenium
Несомненно, одним из лидеров по тестированию ПО в компаниях мирового уровня на различных платформах является Selenium. Имеется огромная база знаний и поддержка пользователей, но на английском, конечно на данный момент существенным минусом это не является, также есть возможность разработки под различных платформы, что является очень удобным, но, имеется и минус данного варианта, платформа не подходит для тестирования конкретно биллинговых систем, так как система определения шаблонов по Selenium позволяет увидеть ID объектов в браузере, в виду того, у данных приложений ID элементов определить невозможно.
Вариант с Selenium автоматически выбывает, хотя на базе Selenium была разработана умельцами из Новосибирска программа Winium, являющаяся аналогом Selenium, но конкретно для desktop приложений к сожалению полное распределение средств тестирования между двумя системами достаточно сложно, так как придется выставлять таймауты для определенных видов операций и определенных действий, что не совсем корректно, особенно если системы поведут себя не как запланировано заранее, поэтому от данного варианта придется отказаться, так как он хорош только для конкретного вида платформ.
Плюсы данного варианта:
1. Прост в освоении, также имеются сборки под различные языки программирования.
2. Имеется IDE-плагин в firefox в котором уже есть отслеживание логов
3. Имеется инструмент нахождения объектов по id
4. Существует версия не только для Web, но и под Android, Ios и Windows
5. Большое сообщество поддержки и пользователей
6. Бесплатное распространение
Минусы:
1. Для сбора работающего стэка технологий необходимо изучить дополнительные инструменты
2. Ide-плагин отсутствует для других браузеров
3. Очень сложная организация работы тестов при использовании удаленных подключений
4. Нет возможности делать тесты для определенных типов приложений
5.4 Sikuli
Очень гибкое программное обеспечение, хотя очень простое, позволяет решить задачи, касаемо действий на рабочем столе без подключения скриптов PowerShell и Командной строки. С задачами связанными с мониторингом справилось на ура. Также очень легко сочетается с различными библиотеками (например на парсинг), сочетается с отправкой данных, также очень легка в управлении и создании собственных решений с помощью визуального программирования, что является легким решением для отладки кода, при замене шаблонов (это может произойти, например, при обновлении шрифтов в системе)
Подобные документы
Неразрешимость проблемы тестирования программного обеспечения. Виды и уровни тестирования. Стратегии восходящего и нисходящего тестирования. Методы "белого" и "черного" ящика. Автоматизированное и ручное тестирование. Разработка через тестирование.
курсовая работа [112,2 K], добавлен 22.03.2015История развития и виды тестирования программного обеспечения. Инсталляционное, регрессионное, конфигурационное, интеграционное, локализационное, модульное тестирование. Методы сокращения трудоемкости модульного тестирования разрабатываемого приложения.
курсовая работа [309,5 K], добавлен 16.12.2015Изучение различных видов тестирования программного обеспечения. Выявление в программной системе скрытых дефектов до того, как она будет сдана заказчику. Тестирование методом черного ящика. Требования, предъявляемые к процессу тестирования больших систем.
курсовая работа [3,0 M], добавлен 19.11.2009Тестирование как составляющая часть процесса отладки программного обеспечения, его роль для обеспечения качества продукта. Обнаружение ошибок в программах, выявление причин их возникновения. Подходы к формулированию критериев полноты тестирования.
курсовая работа [1,6 M], добавлен 20.12.2012Выбор инструментальной среды разработки программного обеспечения системы. Алгоритм создания теста и ввода его исходных данных. Анализ экономической эффективности применения программного обеспечения "Тестирования знаний обучающихся программированию".
дипломная работа [3,2 M], добавлен 11.09.2014Комплексное функциональное и структурное тестирование программного продукта - граф-программа решения квадратного уравнения. Постановка задачи структурного тестирования маршрутов. Заключение о типе и причине ошибки, предложение по ее исправлению.
курсовая работа [2,8 M], добавлен 05.01.2013Реализация программного средства "Действия над матрицами". Разработка кода программного продукта на основе готовой спецификации на уровне модуля. Использование инструментальных средств на этапе отладки программного модуля. Выбор стратегии тестирования.
отчет по практике [296,1 K], добавлен 19.04.2015Тестирование и отладка программного обеспечения: понятие, принципы, этапы, цели и задачи. Тестирование методом сандвича как компромисс между восходящим и нисходящим подходами. Сущность метода "белого и черного ящика", отладки программного обеспечения.
курсовая работа [36,9 K], добавлен 21.07.2012Сравнительный анализ технологий тестирования. Разработка программного модуля "Интеллектуальная обучающая система для широкого перечня курсов". Обоснование необходимости и важности этапа отладки в процессе разработки данного программного обеспечения.
дипломная работа [101,2 K], добавлен 17.06.2011Цели и задачи программной инженерии. Понятие программного обеспечения. Шесть принципов эффективного использования программного обеспечения. Виды программного обеспечения: общесистемное, сетевое и прикладное. Принципы построения программного обеспечения.
курсовая работа [30,4 K], добавлен 29.06.2010