Высшая школа информационных технологий и информационных систем



Скачать 357.43 Kb.
Дата16.02.2018
Размер357.43 Kb.
#12838
ТипДипломная работа

Министерство образования и науки РФ

Федеральное государственное автономное образовательное учреждение

Высшего образования

«КАЗАНСКИЙ (ПРИВОЛЖСКИЙ) ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»

ВЫСШАЯ ШКОЛА ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ И ИНФОРМАЦИОННЫХ СИСТЕМ

Специальность: 09.03.03. – Прикладная информатика

ДИПЛОМНАЯ РАБОТА

Геймификация процесса обучения верификации ПО

и реализация ее в виде игры

Студент 4 курса

Группа 11- 308

«__»__________20__г. ______________ (Р. Залеева)



Научный руководитель

(преподаватель/куратор лаборатории)

«__»__________20__г. _____________ (Р. Сарварова)

Содержание

Введение………………………………………………….….………………..2

Анализ основ тестирования…………………………….……………….…5

Этапы геймификации

Обучающие игры……………………………………………………...14

Сюжет и создание изображений………………………………...........17

Реализация игры……………………………………………………….20



Вывод………………………………………..………………..........................30

Список использованной литературы…………………..…….…..............31

Введение

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


Компьютерные развлечения делают жизнь человека богаче, насыщеннее и отсюда следует что - это мощная экономическая сфера приносящая огромные доходы(источник[12]). 
Поэтому не случайно, что особая роль в жизни современного человека отводится компьютерным играм, первые из которых существовали на самой заре компьютерной технике и не только.
Можно сказать, что создание игры - это cвоеобразный вид искусства, схожий с другими не менее эффектными жанрами. Игры могут нести не только развлекательный характер, но и заставлять задуматься или научить чему-либо.

Обучающая игра (образовательная игра) — программное обеспечение, тренирующее и обучающее человека в игровом режиме. Очень большой плюс обучающих игр заключается в том, что они могут обучить человека таким образом, что игрок не только будет весело проводить время за компьютером, но еще и с пользой. В категорию обучающая игра входят жанры — квест, аркада, 3D-шутер, симулятор, интерактивный курс, компьютерный тренажер по какому-либо предмету. Содержание игры делит на части учебный материал, распределяет по очереди его изучение и на основе этого строится игровой процесс. Усвоение материала проверяется тестом, предлагаемым в конце каждого этапа обучения либо по завершении игрового процесса(источник[19]).

Такие виды игр как — квест, аркада, 3D-шутер, симулятор, интерактивный курс, компьютерный тренажер по какому-либо предмету, могут быть использованы и в образовательной среде.  В ходе игрового процесса развиваются такие навыки как: расширение кругозора, преодоление трудности в понимании предмета, усиление развития, а так же становится проще изучить какой либо предмет или область изучения. С помощью обучающих игр можно научить людей конкретному предмету с нуля. Этот образовательный инструмент, стал обычным явлением в нашей жизни. Интерактивные игры, с самого детства учат нас цели, взаимодействию, правилам, адаптации, которое представлено в виде рассказа и игрок должен сам для себя открыть и преодолеть все трудности. Они удовлетворяют нашу фундаментальную потребность учиться, но делая это с удовольствием, вовлечено, структурируя и мотивируя.

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

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

Согласно ANSI/IEEE 1059 стандартам, тестирование может быть определено как - процесс анализа элемента программного обеспечения, чтобы обнаружить различия между существующими и требуемыми условиями (которые являются дефектами/ошибками/сбоями) и оценить функции элемента программного обеспечения(источник[4]).

Ручное тестирование — часть процесса тестирования на этапе контроля качества в процессе разработки программного обеспечения (источник[14]). Оно проводится тестировщиком исключительно как конечным пользователем, без каких-либо программных средств т.е тестировщик проверяет работоспособность всех компонентов программы, как если бы он был пользователем. Часто, для точности проверки и для того что бы не запутаться, тестировщик использует заранее заготовленный план тестирования, в котором отмечены наиболее важные шаги работы программы ведь функционал у всех программ разный. Составление тест плана явлется ключевым этапом тестирования программного обеспечения. Тестировщик может не придерживаться строго составленному плану тестирования, отклоняться от него для более полной проверки, приближенного к использованию программы обычным пользователем.

На сегодняшний день рынок развлечений является одним из самых прибыльных. Мир стремительно движется в будущее, с момента начала информационно-технической революции. Для того чтобы облегчить жизнь человека, а также занять его досуг создаются все более совершенные компьютерные системы. Сверхнадежное программное обеспечение — мечта любого программиста и пользователя. Без работы опытного специалиста по тестированию невозможен выпуск ни одного качественного программного продукта, а так как на сегодняшний день программных продуктов достаточно много, качество играет очень важную роль. От правильного функционирования ПО может зависеть успех компании, а так же работа промышленных или финансовых компаний (источник[10]).



Спрос на вакансию тестировщика растет довольно быстро и поэтому данная дипломная работа является актуальной так как, несмотря на то, что эта профессия стала востребована в России относительно недавно, к ней уже проявляется довольно большой интерес. Многие современные компании уже начали рассматривать QA-отдел не как равнение на западные компании, а как обязательный и необходимый элемент IT-системы. При этом может показаться, что обучение — это сложно или дорого. Но, рамках созданной мной игры пользователь научится разрабатывать тестовые примеры (TestCase), выполнять тестирование в соответствии с заранее подготовленным тестовым планом, обнаруживать ошибки при выполнении тестирования и документировать их, оценивать и тестировать программный продукт с точки зрения функциональности. И после прохождения будет иметь полное представление о том, что такое тестирование ПО и усваивать не вошедшую информацию гораздо легче и быстрее.

В связи с выше изложенным, целью данной работы является создание игровой платформы на базе Unity 3D для упрощение обучения навыкам и основам тестирования с помощью геймификации процесса обучения верификации ПО и реализацию этой системы.



Задачи исследований:

  1. Определение существующих проблем и поиск возможного решения.

  2. Изучение ключевых фаз процесса тестирования.

  3. Изучение возможностей Unity 3D.

  4. Создание обучающей игры на основе полученных результатов.

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

Анализ основ тестирования

Тестирование программного обеспечения (Software Testing) - проверка соответствия между реальным и ожидаемым поведением программы, осуществляемая на конечном наборе тестов, выбранном определенным образом. [IEEE Guide to Software Engineering Body of Knowledge, SWEBOK, 2004]. В более широком смысле, тестирование - это одна из техник контроля качества, включающая в себя активности по планированию работ (Test Management), проектированию тестов (Test Design), выполнению тестирования (Test Execution) и анализу полученных результатов (Test Analysis).



Главная деятельность тестировщиков заключается в том, что они предоставляют участникам проекта по разработке программного обеспечения отрицательную обратную связь о качестве программного продукта (рис. 1).

http://testitquickly.files.wordpress.com/2010/03/barancev_basic_about_testing_001.jpg?w=499&h=377

Рис.1 Тестирование


«Обратная связь» это некоторые данные, которые с выхода попадают обратно на вход, или какая-то часть данных, которые с выхода попадают обратно на вход. Эта обратная связь может быть положительной и отрицательной.
И та, и другая разновидности обратной связи равноценно важны.
В разработке программных систем положительной обратной связью, конечно же, является какая-то информация, которую мы получаем от конечных пользователей. Это запросы на какую-то новую функциональность, это увеличение объема продаж (если мы выпускаем качественный продукт).
Отрицательная обратная связь тоже может поступать от конечных пользователей в виде каких-то негативных отзывов. Либо она может поступать от тестировщиков(источник[8]).

Чем раньше предоставляется отрицательная обратная связь, тем меньше ресурсов и времени нужно для модификации этого сигнала. Именно поэтому тестировать необходимо начинать как можно раньше, на самых ранних стадиях проекта. Отсюда и произрастает понимание того, что тестировщики не отвечают за качество. Они помогают тем, кто за него отвечает.
Синонимы термина «тестирование»
Нельзя считать обеспечением качества простое предоставление отрицательной обратной связи, ведь Обеспечение — это некоторые позитивные меры. Подразумевается, что в этом случае мы именно обеспечиваем качество, своевременно предпринимаем какие-то меры для того, чтобы качество разработки ПО повысилось.
«Контроль качества» — Quality Control, можно считать в широком смысле синонимом для термина «тестирование», потому что контроль качества это и есть предоставление обратной связи в самых разных ее разновидностях, на самых разных этапах программного проекта (рис.2).

http://testitquickly.files.wordpress.com/2010/03/barancev_basic_about_testing_003.jpg?w=499&h=375

Рис.2 Синонимы

Иногда тестирование подразумевается как некоторая отдельная форма контроля качества.
Внешние определения

Определения, которые в разное время дали Майерс, Бейзер, Канер, описывают тестирование как раз с точки зрения его внешней значимости. То есть, с их точки зрения, тестирование — это деятельность, которая предназначена для чего-то, а не состоит из чего-то. Все три этих определения можно обобщить как предоставление отрицательной обратной связи.
Внутренние определения

Это определения, которые приведены в стандарт терминологии, используемой в программной инженерии, например, в стандарт де-факто, который называется SWEBOK.
Такие определения конструктивно объясняют, ЧТО представляет из себя деятельность по тестированию, но не дают ни малейшего представления о том, для чего нужно тестирование, для чего потом будут использоваться все полученные результаты проверки соответствия между реальным поведением программы и ее ожидаемым поведением.
Итак, тестирование — это

  • проверка соответствия программы требованиям,

  • осуществляемая путем наблюдения за ее работой

  • в специальных, искусственно созданных ситуациях, выбранных определенным образом.


Отсюда и далее будем считать это рабочим определением «тестирования» (рис.3).

http://testitquickly.files.wordpress.com/2010/03/barancev_basic_about_testing_004.jpg?w=500&h=376

Рис.3 Схема тестирования

Общая схема тестирования примерно следующая:



  1. Тестировщик на входе получает программу и/или требования.

  2. Он с ними что-то делает, наблюдает за работой программы в определенных, искуственно созданных им ситуациях.

  3. На выходе он получает информацию о соответствиях и несоответствиях.

  4. Далее эта информация используется для того, чтобы улучшить уже существующую программу. Либо для того, чтобы изменить требования к еще только разрабатываемой программе. (источник[4]).



Что такое тест

  • Это специальная, искусственно созданная ситуация, выбранная определенным образом,

  • и описание того, какие наблюдения за работой программы нужно сделать

  • для проверки ее соответствия некоторому требованию.

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

1.Во-первых, он управляет выполнением программы и создает эти самые искусственные ситуации, в которых мы собираемся проверять поведение программы.
2.И, во-вторых, он наблюдает за поведением программы и сравнивает то, что он видит с тем, что ожидается.
Любая программа представляет собой механизм по переработке информации. На вход поступает информация в каком-то одном виде, на выходе информация в некотором другом виде. При этом входов и выходов у программы может быть много, они могут быть разными, то есть у программы может быть несколько разных интерфейсов, и эти интерфейсы могут иметь разные виды:

  • Пользовательский интерфейс (UI)

  • Программный интерфейс (API)

  • Сетевой протокол

  • Файловая система

  • Состояние окружения

  • События


Наиболее распространенные интерфейсы это

  • пользовательский,

  • графический,

  • текстовый,

  • консольный,

  • и речевой.


Используя все эти интерфейсы, тестировщик:

  • каким-то образом создает искусственные ситуации,

  • и проверяет в этих ситуациях как программа себя ведет

Другие классификации видов тестирования
Чаще всего используется разбиение на три уровня, это


  1. модульное тестирование,

  2. интеграционное тестирование,

  3. системное тестирование.

Под модульным тестированием обычно подразумевается тестирование на достаточно низком уровне, то есть тестирование отдельных операций, методов, функций.
Под системным тестированием подразумевается тестирование на уровне пользовательского интерфейса.
Практика показывает, что инструменты, которые позиционируются производителем как инструменты модульного тестирования, с равным успехом могут применяться и на уровне тестирования всего приложения в целом.
А инструменты, которые тестируют все приложение в целом на уровне пользовательского интерфейса иногда хотят заглядывать, например, в базу данных или вызывать какую-то отдельную хранимую процедуру.
То есть разделение на системное и модульное тестирование чисто условное, если говорить с технической точки зрения.
Используются одни и те же инструменты, и это нормально, используются одни и те же техники, на каждом уровне можно говорить о тестировании различного вида(рис. 4).
Комбинируем:

http://testitquickly.files.wordpress.com/2010/03/barancev_basic_about_testing_006.jpg?w=500&h=374

Рис.4 Виды тестирования


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

Наконец, при интеграционном тестировании мы проверяем, если в рамках какой-то системы модули взаимодействуют друг с другом корректно. То есть, мы фактически выполняем те же самые тесты, что и при системном тестировании, только еще дополнительно обращаем внимание на то, как именно модули взаимодействуют между собой. Выполняем некоторые дополнительные проверки. Это единственная разница.
И разница эта проявляется тогда, когда мы выполняем не технологическую классификацию, а классификацию по целям тестирования. (источник[8]).

Классификацию по целям удобно выполнять с использованием «магического квадрата» (рис. 5), который был изначально придуман Брайаном Мариком и потом улучшен Эри Тенненом.

http://testitquickly.files.wordpress.com/2010/03/barancev_basic_about_testing_007.jpg?w=500&h=374

Рис.5 Магический квадрат

В этом магическом квадрате все виды тестирования располагаются по четырем квадрантам в зависимости от того, чему в этих тестах больше уделяется внимания.
По вертикали — чем выше располагается вид тестирования, тем больше внимания уделяется некоторым внешним проявлениям поведения программы, чем ниже он находится, тем больше мы внимания уделяем ее внутреннему технологическому устройству программы. По горизонтали — чем левее находятся наши тесты, тем больше внимания мы уделяем их программированию, чем правее они находятся, тем больше внимания мы уделяем ручному тестированию и исследованию программы человеком.
В правом верхнем углу у нас окажутся ручные тесты, нацеленные на внешнее какое-то поведение программы, в частности, тестирование удобства использования, а в правом нижнем углу у нас, скорее всего, окажутся проверки разных нефункциональных свойств: производительности, защищенности и так далее.
Так вот, исходя из классификации по целям, модульное тестирование у нас оказывается в левом нижнем квадранте, а все остальные квадранты — это системное тестирование. (источник[11]).

Обучающие игры

Первая попытка дать компьютеру геймерскую огранку произошла в 1952 году. Такая возможность появилась, когда к монитору подсоединили электроннолучевую трубку. Монитор демонстрировал состояние одной из ртутных линий задержки, которые использовались как оперативная память. И хотя патент на подобное «развлекающее устройство» был оформлен в США еще в 1948 году, к компьютеру это устройство не имело никакого отношения. И официальных свидетельств о его реализации тоже не наблюдалось. Пионером компьютерных игр стала (вполне привычная нам в виде настольной) игра «Крестики-нолики». Самые обыкновенные, с полем 3х3 клеточки. Наибольшей проблемой была не ограниченная мощность компьютеров, а ограничение машинного времени. Ведь основными сферами использования компьютеров были военная, правительственная и научная. Лишь спустя шесть лет появилась вторая известная миру компьютерная игра. И это, не смотря на стремительное усовершенствование компьютерных технологий! Игра называлась «Теннис на двоих», но помимо названия информации об игре сохранилось мало. Это была «видеоигра», и в отличие от пошаговых аналогов, где игроки могут сделать перерыв и поразмышлять, здесь приходилось действовать в реальном времени, управляя теннисистом. Игра представлялась в виде стандартного осциллографа, подключенного к аналоговому компьютеру. Прилагались также два устройства для управления. Один «опытный образец» был построен в Брукхэвенской лаборатории, США. Настоящим прорывом в мирёе компьютерных игр стала созданная в 1962 году в Массачусетском технологическом институте игра SpaceWar! Впервые именно для этой игры был разработан игровой контроллер. Впервые появляется виртуальный мир - примитивный, но не имеющий аналога в мире реальном. Игра SpaceWar! была предназначена для компьютера PDP-1, компания DEC. Поскольку компания распространяла игру вместе с компьютером в качестве тестовой программы, SpaceWar! вскоре стала популярна по всему миру, получив статус массовой игры.

Особую роль в современном становлении игрового обучения сыграло стихийное развитие игротехнического движения, опиравшегося в первую очередь на использование деловых игр, которые послужили основой развития большой группы методов обучения, получивших название методов активного обучения. Теоретически их использование было обосновано в ряде концепций, в первую очередь в теории активного обучения. Первая деловая игра была разработана и проведена М. М. Бирштейн в СССР в 1932 году (М. М. Бирштейн, 1989).

«Эдьютейнмент» это: «представление опыта и развлечений через созидание» (Я. Ванг), «эффективный баланс между информацией, мультимедийными продуктами, психологическими приемами и современными технологиями» (Ш. Де Вари), «соединение социального заказа с развлекательным механизмом» (Р. Донован). (источник[17]).

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

В первую очередь, я обратила внимание на разновидности компьютерных игр, которые способствуют развитию интеллекта, логики, внимания, памяти и других качеств. Это различные логические игры, головоломки, ребусы. Особое место среди таких игр занимают стратегии. Такие игры не требуют повышенного внимания, скорости, напряжения глаз. Они размеренны и предназначены для длительного времяпровождения. Их можно прервать в любой момент, не рискуя быть убитым или съеденным. 

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

Значимые игры встраивают образовательное содержание и требуют, чтобы студенты участвовали во множестве навыков 21-го века, чтобы быть успешными. Эти игры заставляют студентов применять разнообразие знания, навыки и стратегий решения проблемы. Такие игры обеспечивают богатую среду, которая способствует умственному развитию, быстрому принятию решений, критическому мышлению и коммуникации

Я решила совместить тестирование именно с обучающими играми так как это:

1. Мотивационная природа. В отношении когнитивной деятельности игра требует и заставляет участников проявлять инициативу, настойчивость, творчество, воображение, стремление.

2. Позволяет решать проблемы передачи знаний, навыков, способностей;

3. Многофункциональность, его влияние на человека не может быть ограничено каким-либо одним аспектом, но все его возможные эффекты обновляются одновременно.

4. В первую очередь коллективная, групповая форма деятельности, основанная на конкурентном аспекте.

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



Скучные и унылые определения забывают через час после прочтения, через неделю после заучивания, а яркий и запоминающийся образ остается в голове. Поэтому мной была выбрана тема геймификации процесса обучения верификации ПО и реализация системы в виде игры.

Сюжет и создание изображений

Мной был выбран жанр игры – графический квест (Quest). Квест (англ. quest), или приключенческая игра (англ. adventure game) — один из основных жанров компьютерных игр, представляющий собой интерактивную историю с главным героем, управляемым игроком (источник[11]). Наиболее важные элементы игры в жанре поиска предметов или фактического исследование мира является главный персонаж и испытания, которые ему предстоит пройти. Ключевую роль в геймплее играют головоломки и задачи, которые склоняют игрока умственным усилиям. Такие элементы, как экономическое планирование, изучение языков, развитие внимания и решения множества других задач, в зависимости от области изучения, максимально раскрыты в жанре игры квест. А вот требующие скорости реакции игрока и быстрого реагирования на какие -либо действия больше характерны для других жанров компьютерных игр. В отличие от текстовых приключенческих игр, в которых игрок взаимодействовал с игровым миром с помощью текстовых команд, стало возможным управлять и взаимодействовать с различными объектами на экране игры с помощью курсора и клавиатуры.

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

Сюжет, который лег в основу игры, заключается в том, что главный герой (рис. 6) ходит по дому, разгадывая головоломки попутно получая нужную образовательную информацию. Тем самым переходя из одной комнаты в другую. В самой последней комнате главный герой проходит небольшой тест на проверку всех полученных знаний и успешно покидает дом.

c:\users\бл\appdata\local\microsoft\windows\inetcache\content.word\au_akqrrhgq.jpgc:\users\бл\appdata\local\microsoft\windows\inetcache\content.word\adzchnok2gi.jpgc:\users\бл\appdata\local\microsoft\windows\inetcache\content.word\wh2zpmnml6s.jpgРис.6 Главный герой

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

Герой появляется в первой комнате и первое что он видит – это табличка и три двери (Рис.7). На табличке расписано задание. После прочтения, герой должен подойти к любой двери попытаться пройти дальше, но для начала нужно заполнить таблицу, которая появляется в левом нижнем углу. Это пример оформления багов, в ней нужно указать:


    1. Id и название бага

    2. Описание

    3. Шаги, которые привели к такому результату

    4. Ожидаемый результат

    5. Фактический результат

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

c:\users\бл\appdata\local\microsoft\windows\inetcache\content.word\room1_tabl1.jpgРис. 7 Первая комната

Во второй комнате (рис. 8) герой сперва так же должен ознакомится с заданием и подойти к одиноко-стоящему конвейеру. После чего в низу экрана откроется лента, на которой нам нужно отсеять ненужные предметы и оставить только ключи. После прокликивания по ключам герою открывается проход в третью комнату.



c:\users\бл\appdata\local\microsoft\windows\inetcache\content.word\gqu1z2yxzd4.jpg

Рис. 8 Вторая комната

Попадая в третью комнату (рис. 9) герою нужно будет ввести числа, которые входят в диапазон, которые не могут входить и их граничные значения. После чего он попадает в последнюю главную комнату (рис. 10) где проходит тест и успешно покидает здание.c:\users\бл\appdata\local\microsoft\windows\inetcache\content.word\room3.jpgРис. 9 Третья комната



c:\users\бл\appdata\local\microsoft\windows\inetcache\content.word\room4.jpg

Рис. 10 Финальная комната

Стилистика игры была взята из игры “The Binding of Isaac” и “Don't Starve” так как они являются для меня самыми интересными.



Реализация игры

Для реализации проекта был выбран язык программирования С#. Компилятор в C# входит в стандартную установку самой .NET, поэтому программы на нём можно создавать и компилировать даже без инструментальных средств вроде Visual Studio. Синтаксис C# очень выразителен, но все же это не мешает просто и легко изучить его. Синтаксис с фигурной скобкой в C# будет быстро распознанным любым, кто знаком с C, C++ или Java. Разработчики, которые знают любой из этих языков, обычно в состоянии начать работать продуктивно в C# за очень короткое время. Синтаксис C# упрощает многие сложности C++ и обеспечивает, мощные функции, такие как nullable, перечисления, делегаты, лямбда-выражения и прямой доступ к памяти, которые не найдены в Java. C# поддерживает универсальные методы и типы, которые обеспечивают увеличенную безопасность типов и производительность и iterators, которые позволяют разработчикам классов набора определить пользовательские итеративные поведения, которые просто использовать клиентским кодом. Интегрированный языком Запрос (LINQ) выражения делает запрос со строгим контролем типов первоклассной конструкцией языка.



Как объектно-ориентированный язык, C# поддерживает понятие инкапсуляции, наследования и полиморфизма. Все переменные и методы, включая Основной метод, точку входа приложения, инкапсулируются в определениях классов. Класс может наследоваться непосредственно от одного родительского класса, но это может реализовать любое количество интерфейсов. Методы, которые переопределяют виртуальные методы в родительском классе, требуют ключевого слова переопределения как способа избежать случайного переопределения.

В дополнение к этим основным объектно-ориентированным принципам, C# упрощает разработку компонентов программного обеспечения через несколько инновационных конструкций языка, включая следующее:

  • Инкапсулированные сигнатуры методов вызов делегатов, которые включают безопасные с точки зрения типов уведомления о событии.

  • Свойства, которые служат средствами доступа для переменных

  • Атрибуты, которые обеспечивают декларативные метаданные о типах во время выполнения.

  • Встроенные комментарии документации XML.

  • Интегрированный языком Запрос (LINQ), который обеспечивает встроенные возможности запроса через множество источников данных.

Реализовывать игру я буду на платформе Unity 3D, потому что, поддержка 2D в Unity появилась относительно недавно в последних версиях игрового движка можно комфортно создавать игры для широкой палитры различных устройств. Благодаря ему можно создавать игры с хорошей графикой, но в то же время не выставлять жестких требований к устройствам. Первое преимущество, на мой взгляд – сам язык C#. Данный язык высокоуровневый и позволяет программисту легко войти в разработку игры. Это важный момент, потому что в отличие от других движков, где используется язык C++, в C# есть много элементов и приемов, которые уже реализованы, и программисту нужно только воспользоваться ими. Второе преимущество – кроссплатформенность, т.е. один и тот же код, написанный на движке Unity, с минимальными изменениями может быть перенесен на различные платформы (PC, Mac, Android, iOS, Web, игровые консоли). Это огромный плюс, который сокращает время на разработку игры в несколько раз.  Третье преимущество — хорошее Community. Это означает, что у различных функций движка есть четкое описание с примерами на сайте разработчика, обратиться к которому можно в любой момент. Если что-то все же осталось непонятным, служба поддержки обязательно ответит на возникший вопрос.
И четвертым преимуществом является Asset Store, где имеется огромное количество различных плагинов и ресурсов для создания игры. Разумеется, какие-то из них бесплатные, какие-то платные, но все они собраны в одном месте с удобным поиском и возможностью загрузить, интегрировать и получить сразу рабочий функционал.

Unity 3D - межплатформенный игровой механизм, работающий под операционными системами Windows, Linux и OS X. Созданные с помощью Unity приложения работают под операционными системами Windows, OS X, Windows PhoneAndroidApple iOSLinux, а также на игровых приставках WiiPlayStation 3PlayStation 4Xbox 360Xbox One и MotionParallax3D дисплеях (устройства для воспроизведения виртуальных голограмм), например, Nettlebox. Есть возможность создавать приложения для запуска в браузерах с помощью специального подключаемого модуля Unity (Unity Web Player), а также с помощью реализации технологии WebGL. Ранее была экспериментальная поддержка реализации проектов в рамках модуля Adobe Flash Player, но позже команда разработчиков Unity приняла сложное решение по отказу[4] от этого. (источник[18]).

Приложения, созданные с помощью Unity, поддерживают DirectX и OpenGL. Активно движок используется как крупными разработчиками (BlizzardEA, QuartSoft, Ubisoft), так и разработчиками Indie-игр (например, ремейк Мор. Утопия (Pathologic)Kerbal Space ProgramSlender: The Eight PagesSlender: The ArrivalSurgeon Simulator 2013, Baeklyse Apps: Guess the actor и т. п.) в силу наличия бесплатной версии, удобного интерфейса и простоты работы с движком.

Были выпущены пять основных версий Unity. В WWDC 2006 года показывают, Apple под названием Unity как бегун для ее Лучшего Использования категории Графики Mac OS X.



Проект в Unity делится на сцены (уровни) — отдельные файлы, содержащие свои игровые миры со своим набором объектов, сценариев, и настроек. Сцены могут содержать в себе как, собственно, объекты (модели), так и пустые игровые объекты — объекты, которые не имеют модели («пустышки»). Объекты, в свою очередь содержат наборы компонентов, с которыми и взаимодействуют скрипты. Также у объектов есть название (в Unity допускается наличие двух и более объектов с одинаковыми названиями), может быть тег (метка) и слой, на котором он должен отображаться. Так, у любого объекта на сцене обязательно присутствует компонент Transform — он хранит в себе координаты местоположения, поворота и размеров объекта по всем трём осям. У объектов с видимой геометрией также по умолчанию присутствует компонент Mesh Renderer, делающий модель объекта видимой.

Также Unity поддерживает физику твёрдых тел и ткани, а также физику типа Ragdoll (тряпичная кукла). В редакторе имеется система наследования объектов; дочерние объекты будут повторять все изменения позиции, поворота и масштаба родительского объекта. Скрипты в редакторе прикрепляются к объектам в виде отдельных компонентов.

При импорте текстуры в Unity можно сгенерировать alpha-канал, mip-уровни, normal-map, light-map, карту отражений, однако непосредственно на модель текстуру прикрепить нельзя — будет создан материал, которому будет назначен шейдер, и затем материал прикрепится к модели. Редактор Unity поддерживает написание и редактирование шейдеров. Редактор Unity имеет компонент для создания анимации, но также анимацию можно создать предварительно в 3D-редакторе и импортировать вместе с моделью, а затем разбить на файлы.

Unity 3D поддерживает систему Level Of Detail (сокр. LOD), суть которой заключается в том, что на дальнем расстоянии от игрока высокодетализированные модели заменяются на менее детализированные, и наоборот, а также систему Occlusion culling, суть которой в том, что у объектов, не попадающих в поле зрения камеры не визуализируется геометрия и коллизия, что снижает нагрузку на центральный процессор и позволяет оптимизировать проект. При компиляции проекта создается исполняемый (.exe) файл игры (для Windows), а в отдельной папке — данные игры (включая все игровые уровни и динамически подключаемые библиотеки) (источник[18]).

Первое с чего я начну создание игры – это сцены(Рис.11).

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



первая сцена на unity

Рис.11 часть настройки сцены

Инстанцирование уже готовых объектов

После создания объектов, можно быстро и легко сделать копии этих объектов, называемые Экземпляром. Чтобы создать экземпляр любого объекта, перенесем его от представления проекта до представления иерархии или сцены. Теперь мы имеем уникальный экземпляр нашего объекта к позиции и со всеми уже ранее установленными параметрами. Добавление Компонента & Сценариев

Когда у нас есть собранный объект или любой выделенный GameObject, мы можем добавить дополнительную функциональность к нему при помощи Компонентов. Сценарии - тип Компонента. Чтобы добавить Компонент, просто выделяем свой GameObject и выбераем Component из меню Component. После чего мы будем видеть, что Компонент появляется в иерархии GameObject. Сценарии также содержатся в меню Component по умолчанию.

Этими двумя свойствами мы будем пользоваться, когда будем создавать отдельные уровни и при переносе информационной таблички, которая находится на всех представленных уровнях. Скрипты в редакторе прикрепляются к объектам в виде отдельных компонентов.

Если добавление Компонента повреждает соединение GameObject со своим ранее собранным объектом, мы можем всегда использовать GameObject->, Применив изменения в собранном объекте из меню, чтобы восстановить ссылку.

Далее настроим камеры (Рис. 12). Камеры важны для отображения игры пользователю. Они могут быть настроены, заданы сценарием или зафиксированы, чтобы достигнуть примерно любого эффекта. Для головоломки можно сохранить камеру статичной для полного представления проблемы. Для этого мной был выбран именно вид сверху.

Скорректировать значения свойства Normalized View Port Rectangle, чтобы изменить размеры и расположить представление камеры на экране. Это может создать многократные мини-представления как представления всего уровня. Настраиваем путь рендеринга, используемый проектом, выбираем в параметрах настройки проигрывателя. Близкие и Далекие свойства Clip Plane определяют, где обзорность камеры начинается и заканчивается. Плоскости размечены перпендикулярно к направлению камеры и измерены от его позиции. Плоскости отсечения также определяют точность буфера глубины распределения по сцене. В целом чтобы получить лучшую точность мы перемещаем близкую плоскость в максимально возможной степени.



Рис. 12 Камера

Теперь займемся персонажем. Создадим пустой игровой объект (Game Object  Create Empty). Переименуем этот объект и добавим к нему компонент Rigidbody 2D. Это нужно для того что бы передвижение нашего объекта выглядело гораздо реалистичнее. Будем делать это с помощью - специализированного символьный контроллера. Это - просто сформированный коллайдер. Контроллер выполнит перемещение, но будет ограничен коллизиями. Проще говоря главный герой будет скользить вдоль стен, идти по лестнице (если они будут ниже, чем Смещение Шага).

Контроллер не реагирует на силы самостоятельно, и он автоматически не отодвигает Rigidbodies.

Но мы хотим, чтобы наш персонаж был максимально приближен к реальной физике и для того что бы он не вращался при ходьбе настраиваем различные компоненты в Rigidbody, для придания нашему персонажу физических свойств твердого тела. Документация Unity рекомендует устанавливать это значение для персонажей, управляемых игроком, особенно, если за ним следует камера. Это связано с синхронизацией расчета физики и отрисовкой графики. На следующем шаге нужно добавить компонент Sprite Render, для анимации персонажа. У созданного персонажа будет не один а несколько спрайтов, чтобы получился анимированный главный герой (Рис.13) (источник[10]). 

c:\users\бл\appdata\local\microsoft\windows\inetcache\content.word\shag_3.pngc:\users\бл\appdata\local\microsoft\windows\inetcache\content.word\shag_2.pngc:\users\бл\appdata\local\microsoft\windows\inetcache\content.word\shag_1.pngc:\users\бл\appdata\local\microsoft\windows\inetcache\content.word\shag_1.png

Рис. 13 Анимация персонажа

Взаимодействие с другими объектами

У объектов, с которыми будет взаимодействовать главный герой будет иметь другой GameObject, скажем, "Открытие таблички"(Рис.14). Добавим компонент коллайдера к тому игровому объекту, сделаем его (коллайдер) триггером. Будем делать коллайдер цилиндром с большим радиусом, для того чтобы мы могли ввести всплывающее окно, на самом деле, не сталкиваясь с другим объектом.

Добавьте сценарий для нашего персонажа, который активирует табличку, когда "Открытие таблички" ввходит в коллизию с другим GameObject’ом того же имени или тега. В этой точке будет установлено для всего игрового символа: у них всех должен быть коллайдер "Открытие таблички" в GameObject в основном GameObject, на всех последующих уровнях. Тем самым мы можем оставить обнаружение коллизий UnityEngine и не проверять его на каждом фрейме. Но так как на всех уровнях разные диалогивые таблички, я решила сделайте его абстрактным классом, от которого можно будет наследоваться и переопределить некоторые методы, таким образом, будет сохранена вся основная функциональность с самого начала и достаточно гибкой, чтобы измениться/расширить поведение NPC позже.

https://pp.userapi.com/c837727/v837727992/4e42d/lwjj19govys.jpg

Рис. 14 Элементы взаимодействия с персонажем

Управление игроком

Для того что бы создать объект, который будет контролировать пользователь, требуется наличия определенных элементов, таких как: спрайт и скрипт с помощью которого будет осуществляться сам способ управления им и его взаимодействия с игровым миром (Рис. 16).



  1. Скорируем картинку в папку "Textures"

  2. Создадим новый спрайт и назовем его "Player"

  3. Настроим спрайт так, чтобы он отображался в свойстве "Sprite" компонента "Sprite Renderer"

  4. Добавим бокс-коллайдет

  5. Добавим 2D полигональный коллайдер

  6. Regidbody




Рис.15 Настройка управления главным героем

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

float transV = Input.GetAxis("Vertical") * playerSpeed * Time.deltaTime;
        float transH = Input.GetAxis("Horizontal") * playerSpeed * Time.deltaTime;

        transform.Translate(new Vector3(transH, transV, 0));


        if (click)
        {
            if (Input.GetKeyDown(KeyCode.E) && !click1)
            {
                text.SetActive(true);
                exit1.SetActive(true);
                click1 = true;
                selectexit = true;
            }

Сначала определим публичную переменную, которая будет отображаться в окне "Инспектора". Это скорость, используемая для персонажа.

Сохраним движение для каждого кадра.

Используем дефолтную ось, которую можно отредактировать в "Edit" -> "Project Settings" -> "Input". При этом мы получим целые значения между [-1, 1], где 0 будет означать, что главный герой неподвижен, 1 - движение вправо, -1 - влево.

Умножим направление на скорость.

Изменим скорость rigidbody. Это даст движку команду к перемещению объекта. Сделаем это в FixedUpdate(), предназначенном для всего, что связано с физикой.

float transV = Input.GetAxis("Vertical") * playerSpeed * Time.deltaTime;
        float transH = Input.GetAxis("Horizontal") * playerSpeed * Time.deltaTime;

        transform.Translate(new Vector3(transH, transV, 0));


        if (click)
        {
            if (Input.GetKeyDown(KeyCode.E) && !click1)
            {
                text.SetActive(true);
                exit1.SetActive(true);
                click1 = true;
                selectexit = true;
            }

Теперь добавим скрипт к игровому объекту.



Вывод

Мною был проведен опрос среди 15 человек состоящий из 6 вопросов:



    1. Знаете ли вы, что такое тестирование ПО?

    2. В чем заключается работа тестироващика?

    3. Хотели бы вы заниматься тестированием?

    4. Хотели бы вы изучать тестирование в игровой форме?

    5. Знаете ли вы, что такое баг и как правильно его оформлять?

    6. Хорошо ли вы относитесь к компьютерным играм?

Я задала их до прохождения игры и после прохождения. После чего провела анализ полученных данных и построила наглядный график (Рис.16).

Рис. 16 Результат работы

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



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

Список использованной литературы

  1. Ручное тестирование программного обеспечения [Текст] / Элфрид Дастин, Джефф Рэшка, Джон Пол
  2. Обучение ручному тестированию [Текст] / Satya Avasarala Издательство “PACKT

  3. Основы тестирования [Текст] / Richard Thrust Издательство “Kindle edition” 2014 г.

  4. Тестирование Дот Ком, или Пособие по жесткому обращению с багами в интернет стартапах [Текст] / Роман Савин, Издательство “Депо” 2007

  5. The Testing Handbook [Текст] / Linda G. Hayes

  6. Functional Testing / [форум для тестировщиков] http://software-testing.ru/forum/index.php?/forum/129-selenium-functional-testing/

  7. Введение в тестирование программного обеспечения [Текст] /
    Луиза Тамре, Издательство “Вильямс”

  8. Основы геймификации [Текст] / David Burns. Издательство “PACKT

  9. Быстрое тестирование. [Текст] / Роберт Калбертсон, Крис Браун, Гэри Кобб.

  10. Тестирование производительности Web-приложений Microsoft. NET (+ CD-ROM) [Текст] / В. Вшивцев (переводчик). Издательство “Русская редакция”

  11. Про игры [Текст] / Мартин Фаулер, Кент Бек, Джон Брант,Уильям Апдайк, Дон Робертс, Эрих Гамма. Издательство “Символ-Плюс”

  12. Ключевые процессы тестирования. Планирование, подготовка, проведение, совершенствование [Текст] / Рекс Блэк, М. Павлов (переводчик). Издательство Лори

  13. Основы тестирования программного обеспечения [Текст] / В. П. Котляров, Т. В. Коликова

  14. Тестирование программного обеспечения. Фундаментальные концепции менеджмента бизнес-приложений [Текст] / Сэм Канер, Джек Фолк, Енг Кек Нгуен

  15. A Field Guide To Usability Testing [Текст] / Smashing Magazine ИздательствоSmashing Media GmbH ” 2012 г.

  16. https://docs.unity3d.com/ru/530/Manual/Overview2D.html [Текст] / методичка по Unity 3D


  1. http://software-testing.ru/library/testing/testing-for-beginners/88-how-to-start-testing-ii [Текст] / тестирование, с чего начать




  1. https://docs.unity3d.com/ru/500/Manual/ControllingGameObjectsComponents.html [Текст] / создание игры на unity 3D



  1. http://websketches.ru/blog/2d-igra-na-unity-podrobnoye-rukovodstvo-p1 [Текст] / Руководство по созданию 2D игр.





Каталог: portal -> docs -> F100934898
docs -> Выпускная квалификационная работа
docs -> Выпускная квалификационная работа
docs -> №4: Действия работников организаций при угрозе и возникновении на территории организации чрезвычайных ситуаций техногенного характера и пожаров
docs -> Выпускная квалификационная работа
docs -> В. Р. Ильдиряков защита информации при разработке и эксплуатации корпоративных информационных систем и систем обработки персональных данных практические занятия учебно-методическое пособие
F100934898 -> Высшая школа информационных технологий и информационных систем

Скачать 357.43 Kb.

Поделитесь с Вашими друзьями:




База данных защищена авторским правом ©vossta.ru 2022
обратиться к администрации

    Главная страница