К защите допустить
Зав. кафедрой Цехановский В.В.
Санкт-Петербург
2016
ЗАДАНИЕ
НА ВЫПУСКНУЮ КВАЛИФИКАЦИОННУЮ РАБОТУ
Утверждаю
Зав. кафедрой АСОИУ
____________ Цехановский В.В.
«___»______________20___ г.
Содержание ВКР:
Кратко указывается основное содержание ВКР, перечисляются ее основные
разделы
Утверждаю
Зав. кафедрой АСОИУ
____________ Цехановский В.В.
«___»______________20___ г.
№ Срок
Наименование работ
п/п выполнения
00.00 –
1 Обзор литературы по теме работы
00.00
00.00 –
2 Наименование раздела
00.00
00.00 –
3 Наименование раздела
00.00
00.00 –
4 Наименование раздела
00.00
00.00 –
5 Оформление пояснительной записки
00.00
6 Оформление иллюстративного материала
Введение 8
1. Постановка задачи 13
2. Анализ современных технологий верстки веб-интерфейсов 14
2.1. HTML 14
2.2. CSS 14
2.3. Javascript 17
2.4. Фреймворк тестирования web-приложений Selenium
Webdriver 18
2.5. Основные понятия и методы Selenium Webdriver API 19
2.6. Типы локаторов 21
2.7. Ожидания 23
3. Анализ современных подходов к автоматическому
тестированию сайтов 26
3.1. Уровни тестирования 28
3.2. Основные подходы к автоматизации тестирования 28
3.3. GUI - автоматизация 28
3.4. Приложения 31
4. Классификация ошибок верстки и алгоритмы их обнаружения
33
5. Разработка основных программных модулей на основе
полученной информации 43
5.1. Схема работы программы 46
5.2. Сведение результатов в отчет 48
6. Тестирование и отладка программы 50
7. Составление бизнес-плана по коммерциализации результатов 52
НИР магистранта
7.1. Концепция экономического обоснования 52
7.2. Краткое техническое описание системы. 52
7.3. Определение длительности работ и создание календарного 53
плана.
7.4. Расчет основной и дополнительной заработной платы, 57
расходов на страховые взносы.
7.5. Расчет расходов на сырье и материалы. 58
7.6. Расчет затрат на содержание и эксплуатацию оборудования. 60
7.7. Определение себестоимости продукта. 63
7.8. Вывод. 63
8. Дальнейшее развитие 65
8.1. Тестирование Rich Internet Applications 65
8.2. Единовременный запуск в нескольких браузерах 65
8.3. Обратная связь и исключения 65
8.4. Самообучение 66
8.5. Обратная связь и исключения 66
Заключение 69
10
осуществлена. Автоматизация может как принести огромное облегчение всем
тестировщикам, так и завалить работу всего отдела.
Автоматизировать можно сотни вещей. Вот наиболее часто
встречающиеся виды автоматизации:
Инструменты для помощи в черноящичном и сероящичном
тестировании.
Программы для регрессивного тестирования
Программы для тестирования скорости и надежности
Прочие программы, для которых ручной подход совмещается с
автоматизированным
11
состоящих из большого количества шагов может занять неприемлемо много
времени из-за возникновения неожиданных сбоев или технических проблем.
Также в большинства случаев, тратится много времени на поддержку
автотестов при необходимости часто вносить в них изменения вслед за
изменениями в тестируемой функциональности.
14
1. Постановка задачи
15
2. Анализ современных технологий верстки веб-интерфейсов
2.1 HTML
HTML (HyperText Markup Language) является языком гипертекстовой
разметки, который используется для создания (структурирования и
представляния) веб-страниц.
Данный язык разрабатывался в ЦЕРН ученым Тимом Бернерсом-Ли в
1986-1991 годах как язык для обмена различной документацией между
людьми, не обладающими навыками верстки документов, так как с помощью
HTML относительно легко создать простой но легко читаемый и
оформленный документ. Изначально HTML планировалось использовать для
работы с документами без привязки к различным средствам отображения,
текст с данной разметкой должен был воспроизводиться на различном и
сильно отличающемся оборудовании без искажения структуры и стиля,
однако на данный момент из-за потребностей в графическом оформлении и
мультимедиа, поддержка любых платформ представляется слабо возможной.
Код на языке HTML состоит из элементов, построенных на основе
тегов, которые описывают структуру HTML-документа. Существуют
открывающие и закрывающие теги, между которыми обычно располагается
содержимое элемента состоящее из других тегов, причем некоторые
элементы могут состоять только из открывающего тега, такие как тег
переноса строки <br>. Например, в следующей строке есть открывающий тег
<p> который указывает что в данном месте документа начинается новый
абзац, одиночный тег <br> который переносит весь последующий текст на
новую строку и закрывающий тег </p> указывающий конец абзаца.
<p>Язык HTML соответствует<br>международному
стандарту ISO 8879.</p>
Пример вывода
16
Элементы могут иметь различные атрибуты, определяющие их
свойства (например тег <a href="http://www.example.com">Здесь элемент
2.2 CSS
CSS – формальный язык описания внешнего вида документа,
написанного с использованием языка разметки. Обычно CSS используется
для оформления внешнего вида веб-страниц страниц, написанных с
помощью языка HTML, но также может применяться к любым XML-
документам. Язык разрабатывался для удобного разделения описания
логической структуры документа построенного с помощью HTML или
другого языка разметки. Данное разделение обеспечивает большую гибкость
управления отображением документа и уменьшает повторяемость в
структуре документа. Кроме того, становится возможным отображать один
документ в различных стилях без непосредственного редактирования текста.
Правила CSS пишутся на формальном языке CSS и размещаются в
таблицах стилей, которые могут находиться как в самом веб-документе, так и
в отдельных файлах формата .css. В файле .css содержится только набор
правил CSS.
17
Таблицы стилей могут быть подключены к веб-документу следующими
способами :
Когда таблица стилей находится в отдельном файле, она подключается
к веб-странице с помощью тега <link> внутри HTML-тега <head>, который
предназначен для хранения различных элементов, используемых браузером
при работе с данными.
С использованием внутреннего стиля. Внутренний стиль является по
существу расширением для одиночного тега используемого на веб-странице.
Для определения стиля используется параметр тега style, а его атрибуты
указываются с помощью языка таблицы стилей. Внутренние стили
рекомендуется применять на сайте ограниченно или вообще отказаться от их
использования. Дело в том, что добавление таких стилей увеличивает общий
объем файлов, что ведет к повышению времени их загрузки в браузере, и
усложняет редактирование документов для разработчиков.
2.3 Javascript
JavaScript — прототипно-ориентированный сценарный язык
программирования.
Javascript используется для программного доступа к объектам
приложений и применяется в браузерах как язык сценариев для
интерактивных веб-страниц.
Структурно JavaScript можно представить в виде трех частей :
Ядро – это основа для построения скриптовых языков
Объектная модель браузера - часть языка, являющаяся прослойкой
между ядром и объектной моделью документа, предназначенная для
управления окнами браузера и их взаимодействия
Объектная модель документа – интерфейс программирования
приложений для XML-документов, в котором они могут быть представлены в
виде дерева объектов обладающих некими свойствами.
Синтаксис языка Javascript во многом похож на C и Java. Благодаря
поддержке императивного, объектно-ориентированного и функционального
стиля программирования он является удобным инструментом для веб-
разработчика при разработке логики интерфейса динамических страниц.
В настоящее время JavaScript широко используется в подходе к
построению интерактивных интерфейсов веб-сайтов под названием AJAX.
Данный подход позволяет обновлять данные веб-страницы без её полной
перезагрузки, за счет чего работа с сайтом становится значительно быстрее
чем без его применения.
19
JavaScript поддерживается в современных версиях большинства
браузеров.
20
Selenium Webdriver поддерживает различные языки программирования,
такие как Java, C#, Python и Ruby, Perl и PHP.
driver.get("http://mycompany.site.com");
By elementLocator = By.id("#element_id");
21
Или более кратко:
element.click();
driver.quit();
22
2.6 Типы локаторов
1. By.id
Пример:
<div id=”element”>
<p>some content</p>
</div>
Поиск элемента:
Пример:
<div name=”element”>
<p>some content</p>
</div>
Поиск элемента:
3. By.className
23
Пример:
<img class=”logo”>
Поиск элемента:
4. By.TagName
Пример:
<div>
</div>
Поиск элемента:
5. By.LinkText
Пример:
<div>
<a ref=”…”>text</a>
</div>
Поиск элемента:
6. By.PartialLinkText
24
Поиск элемента:
7. By.cssSelector
<div class=’main’>
<p>text</p>
<p>Another text</p>
</div>
Поиск элемента:
WebElement element=driver.FindElement(By.cssSelector(“div.main”));
8. By.Xpath
<div class=’main’>
<p>text</p>
<p>Another text</p>
</div>
Поиск элемента:
2.7 Ожидания
Ожидания – непременный атрибут любых UI тестов для динамических
приложений. Нужны они для синхронизации работы AUT и тестового
скрипта. Скрипт выполняется намного быстрее реакции приложения на
команды, поэтому часто в скриптах необходимо дожидаться определенного
состояния приложения для дальнейшего с ним взамодействия.
25
Самый просто пример - переход по ссылке и нажатие кнопки:
driver.get("http://google.com");
driver.findElement(By.id("element_id")).click();
Ожидания бывают:
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("http://some_url");
driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);
driver.manage().timeouts().setScriptTimeout(10, TimeUnit.SECONDS);
26
2. Явные ожидания - Explicit Waits - это код, который ждет наступления
какого-то события (чаще всего на AUT), прежде чем продолжит
выполнение команд скрипта. Такое ожидание срабатывает один раз в
указанном месте.
driver.get("http://some_url");
.until(ExpectedConditions.presenceOfElementLocated(By.id("dynamicElement_id"
)));
27
3. Анализ современных подходов к автоматическому тестированию
сайтов
28
фактора, присутствующего на всех этапах жизненного цикла программного
обеспечения.)
Существует множество подходов к решению задачи тестирования и
верификации программного обеспечения, но эффективное тестирование
сложных программных продуктов — это процесс в высшей степени
творческий, не сводящийся к следованию строгим и чётким процедурам или
созданию таковых.
Качество программного обеспечения можно определить, как
совокупную характеристику исследуемого ПО с учётом следующих
составляющих:
надёжность,
сопровождаемость,
практичность,
эффективность,
мобильность,
функциональность.
29
3.1 Уровни тестирования
3.3 GUI-автоматизация
Наиболее распространенной формой автоматизации является
тестирование приложений через графический пользовательский
интерфейс (англ. GUI). Есть два фактора из-за которых это один из наиболее
используемых методов тестирования: во-первых, приложение тестируется
30
таким же образом, которым будет использовано конечным клиентом, что
позволяет в некоторой степени уменьшить количество тестов, во-вторых,
можно тестировать приложение, без доступа к его исходному коду, что
впрочем для данной работы является несущественным плюсом и
рассматриваться не будет, поскольку считается что при внедрении системы у
тестировщика будет доступ к исходникам.
GUI-автоматизация развивалась в течение 4 поколений инструментов и
техник:
Утилиты записи и воспроизведения записывают действия
тестировщика во время ручного тестирования. Они позволяют
проводить тесты без непосредственного участия оператора, в
течение длительного временного отрезка значительно увеличивая
продуктивность и уменьшая количество рутинной работы при
ручном тестировании. Однако, любое внесение изменений в
тестируемый продукт потребует повторного написания ручных
тестов. По этим причинам, первое поколение инструментов не
считается достаточно эффективным.
Написание сценария. Форма программирования на языках,
специально разработанных для автоматизации тестирования
ПО — смягчает многие проблемы инструментов записи и
воспроизведения. Но обычно разработкой занимаются
программисты высокого уровня, которые обычно работают
отдельно от тестировщиков, непосредственно запускающих
тесты. К тому же скрипты более всего подходят для тестирования
GUI и не могут быть внедренными или вообще каким-либо
образом объединены в систему. Кроме того, изменения в
тестируемом программном обеспечении требуют сложных и
глобальных изменений в соответствующих скриптах, и
поддержка увеличивающейся библиотеки тестирующих скриптов
31
становится в конце концов непреодолимой задачей, на которую
тратится больше ресурсов, чем их освобождается.
Управляемое данными тестирование — методология,
используемая в автоматизации тестирования. Особенностью
является то, что тестовые скрипты выполняются и
верифицируются на основе данных, которые хранятся в
центральном хранилище данных или базе данных. Управляемое
данными тестирование — это объединение нескольких
взаимодействующих тестовых скриптов и их источников данных
во фреймворк, используемый в методологии. В этом фреймворке
переменные используются для входных значений, и для
выходных проверочных значений: в тестовом скрипте обычно
закодированы навигация по приложению, чтение источников
данных, ведение логов тестирования. Следовательно, логика,
которая будет выполнена в скрипте, также зависит от данных.
Тестирование по ключевым словам - автоматизация
подразумевает разделение процесса создания тестов на 2 этапа:
планирования и реализации. В этом случае конечный тест
представляет собой не программный код, а описание
последовательности действий с их параметрами (например,
«завести в базе данных пользователя с логином XXX и паролем
YYY»). При этом фреймворк отвечает за непосредственную
реализацию действий, а дизайнеру тестов достаточно иметь
представление о наборе действий, реализованных во фреймворке.
Это даёт возможность создавать тесты людям, не имеющим
навыков программирования.
32
часть рутинных операций и ускорить выполнение тестов, большие ресурсы
могут тратиться на обновление самих тестов. Это относится к обоим видам
автоматизации. При рефакторинге часто бывает необходимо обновить и
модульные тесты, а изменение кода тестов может занять столько же времени,
сколько и изменение основного кода. С другой стороны, при изменении
интерфейса приложения необходимо заново переписать все тесты, которые
связаны с обновленными окнами, что при большом количестве тестов может
отнять значительные ресурсы.
3.4 Приложения
Для автоматизации тестирования существует большое количество
приложений. Наиболее популярные из них по итогам 2015 года:
HP LoadRunner, HP QuickTest Professional, HP Quality Center
Segue SilkPerformer
IBM Rational FunctionalTester, IBM Rational PerformanceTester,
IBM Rational TestStudio
TestComplete
33
Инструменты используемые для тестирования ПО:
JUnit — тестирование приложений для Java
TestNG — тестирование приложений для Java
NUnit — порт JUnit под .NET
Selenium — тестирование приложений HTML; поддерживает
браузеры Internet Explorer, Mozilla Firefox, Opera, Google
Chrome, Safari.
TOSCA Testsuite — тестирование
приложений HTML, .NET, Java, SAP
UniTESK — тестирование приложений на Java, Си.
34
4. Классификация ошибок вёрстки и алгоритмы их обнаружения
35
Поиск ошибок в исходном коде не настолько универсален как
симуляция работы пользователя в браузере
Зачастую логика работы браузера с элементами выполняется при
помощи кода javascript
Невозможно получить результат, который будет понятен
человеку не знающему детали построения верстки сайта.
Нерабочие гиперссылки
36
Иногда бывает так, что некоторые страницы на сайте удаляются, либо
переносятся, но при этом на других страницах могут остаться ссылки
ведущие на эти страницы. Как правило после удаления какой-либо страницы
либо файла должна быть создана ссылка перенаправляющая на актуальную
версию страницы, либо её страницу-родителя. В тех случаях когда это не
сделано, пользователь попадает на страницу с ошибкой 404.
Для обнаружения этой ошибки, достаточно клика на каждую
гиперссылку на странице после перехода по которой браузер выводит
ошибку 404.
Флагом для данного состояния будет «false_link»
37
пропадание элемента за границей родителя либо за другим
блоком
Рисунок 1.
Рисунок 2.
Рисунок 3.
38
Чтобы обнаружить ошибки этого рода, необходимо сделать проход по
всему дереву HTML-тегов страницы и для каждого блока имеющего блок-
дитя провести проверку на вложенность блока-дитя в блок-родитель по
координатам. Блоки которые не отображаются или имеют стиль display:none
должны игнорироваться, ввиду того что пользователь не может их увидеть.
Однако есть определенные исключения, когда данное поведение
блоков не ошибочное.
1. Когда блок располагается на странице, не влияя на расположение
других блоков. Эти блоки определяются CCS-стилем position со
значением absolute или fixed. Как правило такие блоки являются
элементами функционала, например, меню навигации по сайту в
верхнем или боковом блоке по краю страницы.
2. Когда блок-родитель имеет полосы для прокрутки содержимого внутри
блока, в этом случае любое его дитя становится доступным. Эти блоки
определяются CCS-стилем overflow со значением scroll или auto.
3. Когда ни один элемент в блоке не имеет видимых признаков, а именно:
Монохромный фон отличный от белого (background-color)
Фоновое изображение (background-image)
Цветная рамка вокруг элемента отличная от цвета фона страницы
(border-color)
Тень вокруг элемента (box-shadow)
4. Когда размер блока-родителя вычисляется браузером самостоятельно
по размеру его содержимого. В отдельных случаях блок-дитя может
выехать за границы родителя, но это не является ошибкой так как
браузер при отображении строчных элементов учитывает размеры всех
строчных тегов, вложенных в него.
39
Иногда для некоторых элементов намеренно задается отрицательный
отступ, выдвигающий их за пределы границ родителя. Данное состояние
следует считать не поддающимся классификации потому как иногда этот
метод приводит к появлению ошибок в виде накладывания блока-ребенка на
другие элементы. Отрицательный отступ задается отрицательным значением
свойства margin, либо свойств top, bottom, left, right при одновременно
заданном свойстве position:relative. Этому состоянию присвоим флаг
«margin_negative_pos»
Для данного типа ошибок необходимо рассмотреть стиль
overflow:hidden. Этот стиль скрывает с экрана все фрагменты детей
вышедшие за границы родительского элемента, что часто используется в
блоках с контентом в виде прокручивающегося слайдера, управляемым через
Javascriprt вместо полосы прокрутки пользователя. В этом случае дитя
выезжает за границы родителя, но при этом части за границами родителя
остаются невидимыми. В некоторых случаях верстальщики добавляют этот
стиль всем элементам страницы чтобы перестраховаться, поскольку
неотображаемые элементы вне границ родителя не так заметны как
накладывающиеся друг на друга. Этому состоянию присвоим флаг
«hidden_overflow».
Данная ошибка определяется по тому, насколько сильно блок-дитя
выходит за границы блока-родителя, следовательно, имеет смысл
рассматривать максимальное значение на четырех координатах, на которое
выезжает блок-дитя.
40
элементы перемещаются во второй ряд что может вызвать дальнейшие
ошибки верстки. Пример данной ошибки приведен на рисунке 4.
Рисунок 4.
41
Также в этот вид ошибок можно включить наложение блоков друг на
друга. Обычно эта ошибка заключается в наложении одного элемента-
ребенка на другой подобный элемент. Эти ошибки находятся таким же
образом : необходимо провести проверку координат отображаемых блоков на
пересечение с соседними блоками. При этом, достаточно проверять пары
блоков находящихся в одном родителе, так как проверка всех пар блоков
будет избыточной.
Пример данной ошибки приведен на рисунках 5-6.
Рисунок 5.
Рисунок 6.
Неправильно расположенные слои
В случае заранее задуманного пересечения блоков необходимо заранее
продумать каким образом они будут накладываться друг на друга. Это может
42
привести к ошибке когда подобных блоков на странице несколько, либо
когда на странице есть баннеры которые могут закрывать какой-либо
функциональный элемент. Как правило подобная ошибка возникает когда
версткой занималось несколько людей которые не согласовывали свою
работу друг с другом.
Несмотря на то что зафиксировать данную ошибку достаточно сложно
из-за отсутствия её признаков в верстке страницы, можно выявлять её на
основе действий пользователя, предполагая, что элементы, появляющиеся в
результате его действий должны располагаться на верхнем слое.
Для этого надо сначала выполнить все возможные действия на
странице, после чего провести их еще раз и выяснить какие из них
невозможно выполнить повторно. К сожалению, при данной проверке
невозможно зафиксировать наложение слоев на блоки с нефункциональными
элементами, однако даже такой тест может значительно облегчить поиск
ошибок.
43
5. Разработка основных программных модулей на основе полученной
информации
44
Для написания тестов используется javascript по той причине, что код
javascript может быть запущен непосредственно в браузере, что дает большое
преимущество в быстродействии.
JavaScript можно использовать как в параметрах специальных команд,
которые принимают на вход фрагмент JavaScript, так и с “обычными”
параметрами.
Часто нужно внутри фрагмента JavaScript получить доступ к значению
некоторой переменной Selenium. Все переменные, создаваемые тестовым
сценарием, сохраняются в ассоциативный массив JavaScript, который
называется storedVars. В ассоциативном массиве используются строковые
индексы, а не последовательные числовые. Для того чтобы получить доступ
к переменной или изменить её значение из фрагмента JavaScript, вам следует
обращаться к ней, как кstoredVars[‘ИмяВашейПеременной’].
В Selenium есть несколько команд, принимающих в качестве параметра
фрагмент JavaScript: assertEval, verifyEval,storeEval и waitForEval.
Параметр не требует специального синтаксиса. Достаточно просто поместить
фрагмент JavaScript в подходящее поле, обычно это поле Цель (так как эти
команды как правило имеют один параметр).
В примере ниже показано использование фрагмента JavaScript для
вычисления значения числового выражения:
Взаимодействие со страницей
Возможность только лишь попасть на нужную страницу сама по себе
не очень ценна. Наибольшую важность имеет возможность взаимодействия
со страницей, а точнее, с HTML-элементами этой страницы. Прежде всего,
нужно найти интересующий вас элемент. WebDriver предоставляет
несколько способ поиска элементов. Например, если у вас есть элемент,
определенный в HTML коде следующим образом:
46
то можно найти его любым из приведенных ниже способов:
1. Инициализация
3. Поиск ошибок.
o название набора
o результат
o время выполнения
49
1. Снимок страницы
2. Список тестов
3. Список найденных ошибок, для удобства можно группировать
их по типу, воспроизводимые в данном разрешении ошибки
помечаются красным, невоспроизводимые зеленым.
4. При наведении указателя мыши на ошибку, соответствующая
ей область на странице помечается синим, при клике по ней
снимок прокручивается до места с ошибкой.
5. Внизу левого блока выводится прочая информация о тесте,
количество запущенных тестов, количество выполненных
тестов, время выполнения тестов, время запуска тестов.
50
6. Тестирование и отладка всей программы в целом
52
таких сервисов как Youtube, Yandex, Adultmult и прочие.
Результаты тестирования приведены на графике.
53
2. Изменение размеров окна браузера и обход HTML-тегов
формирующих страницу с последующим сохранением данных о
измененных свойствах тегов.
3. Из полученных данных формируется структура в виде дерева,
содержащая состояния элементов при различных размерах окна
браузера. Выполняется поиск багов верстки.
4. Кластеризация багов по типам.
5. Формирование отчета по предыдущим пунктам.
6. Формируется файл оглавления для отчета.
Функциональные требования:
Анализ тестируемой страницы
Поиск ошибок на странице
Типизация найденых ошибок
Формирование отчета о пройденных тестах
t оj
где - ожидаемая длительность j-й работы; t min и t max - наименьшая и
наибольшая по мнению эксперта длительность работы.
При этом результаты расчетов удобно свести в таблицу 1.
Таблица 1 - Длительность этапа разработки.
54
Длительность работы,
чел./дни
№ Наименование работы
1 Разработка ТЗ 5 10 7
2 Изучение литературы 6 12 8,4
Анализ современных
3 технологий верстки веб- 3 8 5
интерфейсов
Анализ современных подходов
4 к автоматическому 4 9 6
тестированию сайтов
Разработка методов решения
5 18 26 21,2
задачи
Классификация ошибок
6 3 8 5
верстки
Разработка основных
7 25 40 31
программных модулей
Тестирование и отладка всей
8 10 13 11,2
программы в целом
Составление технической
9 5 9 6,6
документации
Составление техническо-
10 2 4 2,8
экономического обоснования
11 Сдача проекта 1 1 1
ИТО 140
82 105,2
ГО
55
Рисунок 1 – Ленточный график трудоемкости проекта
2 Изучение
литературы Инженер 8,4 1600
56
Анализ
современных
3 технологий
верстки веб-
интерфейсов Инженер 5 1600
Анализ
Инженер 4 1600
современных
4 подходов к
автоматическому
тестированию
сайтов Руководитель 2 2650
Разработка
5 методов решения
задачи Инженер 21,2 1600
6 Классификация Инженер 1 1600
ошибок верстки Руководитель 4
Разработка
7 основных
программных
модулей Инженер 31 1600
Тестирование и
8 отладка всей
программы в
целом Инженер 11,2 1600
Составление
9 Инженер 5,6 1600
технической
документации Руководитель 1 2650
Составление
10 технико-
экономического
обоснования. Инженер 2,8 1600
11 Сдача проекта Инженер 1 1600
Инженер 95,2
Общая трудоемкость
Руководитель 10
57
7.4 Расчет основной и дополнительной заработной платы, расходов на
страховые взносы.
По данным таблицы можно определить расходы на заработную плату
исполнителей и отчислений на страховые взносы на обязательное
социальное, пенсионное и медицинское страхование.
Заработную плату инженера принимаем 32000 р.
р
58
расчетов в ВКР норматив дополнительной заработной платы принимаем
равным 12%.
Отчисления на страховые взносы на обязательное социальное,
пенсионное и медицинское страхование с основной и дополнительной
заработной платы исполнителей определяются по формуле:
Н соц
Зсоц Зосн. з / пл Здоп..з / пл
30
(166827,76 20019,33) * 56054,13 ,
100 1000
59
сорт, марка, изделие, ед. руб. руб.
размер)
Бумага для
А4 2 пачки 240 528
принтера
Карандаш
Пишушие
автоматичес
принадлеж 4 штуки 25 110
кий, ручка
ности
синяя
Картридж Картридж
HP
ч/б для
CF280A 1 штука 1200 1320
лазерного (80A)
принтера
Итого 1958
60
7.6 Расчет затрат на содержание и эксплуатацию оборудования.
Затраты на содержание и эксплуатацию оборудования определяются из
расчета на 1 час работы оборудования с учетом стоимости и
производительности оборудования:
m
З эо Ciмч t iм ,
i 1
61
СЭЭ 0,1 * 0,8 *1937 * 2,37 368[ руб ]
62
Величина амортизационных отчислений по i-му основному средству,
используемому при работе над ВКР, определяется по формуле:
TiBKP 2.6
АiBKP Аi 6650 * 1441[ руб ] ,
12 12
63
Процент накладных расходов по данным предприятия – 15%
рублей
3. Материалы 1958
оборудования
7. Накладные расходы
8. Спецоборудование -
7.8 Вывод.
64
В ходе выполнения расчетов выяснилось, что себестоимость продукта
составляет 283694,48 рублей. При этом основная часть расходов приходится
на основную заработную плату разработчиков.
65
8. Дальнейшее развитие
8.1. Тестирование Rich Internet Applications
В разделе 3.3. данной работы обсуждалось тестирование Rich Internet
Applications – сложных сайтов, богатых клиентской логикой. С
уверенностью можно сказать, что доля подобных сайтов такого типа в
будущем будет только расти. Без умения тестировать такие сайты
представленная программа потеряет свою эффективность, поэтому
дальнейшее развитие в данном направлении необходимо.
66
данных через интернет. В дальнейшем планируется доработать алгоритмы
кластеризации и идентификации ошибок с целью избежать данной
проблемы.
8.3. Обратная связь и исключения
Так как программу планируется использовать на больших массивах
похожих страниц, можно увеличить её эффективность, реализовав
возможность добавлять исключения как для ложноположительных
срабатываний, так и для ложноотрицательных. Внедрение данного
функционала подразумевает внесение некоторых изменении в архитектуру,
так как в этом случае требуется постоянное хранилище для накопленных
исключений.
Необходимо рассмотреть два случая: добавление исключения для
одной ошибки или добавление исключения сразу для всего кластера. Во
втором случае действие исключения распространяется как на все ошибки уже
находящиеся в кластере, так и на все ошибки, которые попадут в него при
следующих запусках. В первом же случае нужно решить что делать с
похожими ошибками которые будут найдены в дальнейших запусках, но
которые не будут полностью совпадать. На этот вопрос невозможно ответить
без проведения полного исследования, можно лишь предположить что
принятие решения должно быть похожим на процесс кластеризации ошибок,
но с дополнительными и более жесткими критериями, чтобы избежать
кластеризации ошибок разного рода.
8.4. Самообучение
Создав работающую систему обратной связи, можно разработать
подобие системы автоматического обучения программы с помощью
элементов искусственного интеллекта. В ходе работы тестировщиков, будет
создаваться и пополняться обучающее множество, в котором будет
содержаться информация о положительных и ложноотрицательных
срабатываниях программы. После чего система, вероятно, станет способна
классифицировать состояния элементов на ошибочные и ожидаемые со
67
значительно большей точностью, нежели текущая жестко
детерминированная реализация, благодаря отладке на обучающем
множестве. Для этих целей представляется возможным использование
нейронной сети, по той причине, что входные данные классификатора
ошибок представляют собой однородные наборы свойств элементов, и целью
является выявление их неверных комбинаций.
Однако, это является непростой задачей, и даже не являясь экспертом в
данной области, можно утверждать, что затраты будет сложно окупить, так
как для реализации потребуется огромное количество времени,
следовательно, создание подобного проекта для нужд одной компании вряд
ли будет рентабельным. Тем не менее, у данного проекта есть потенциал для
развития как отдельного программного продукта.
68
Заключение
69
Разработка системы обратной связи для сбора статистики о
ложных срабатываниях и улучшение точности при проведении
регрессионного тестирования.
Увеличение количества видов определяемых ошибок.
Оптимизация работы программы при тестировании сложных
страниц.
70
Список литературы.
71