Объектно-ориентированное тестирование
Заказать уникальную курсовую работу- 37 37 страниц
- 12 + 12 источников
- Добавлена 28.06.2022
- Содержание
- Часть работы
- Список литературы
- Вопросы/Ответы
1. ПОСТАНОВКА ЗАДАЧИ 6
1.1 Общие положения 6
1.2 Принципы тестирования 6
1.3 Обеспечение и контроль качества 7
1.4 Документация 8
1.5 Этапы тестирования: 9
1.7 Дефекты и их описание 10
1.8 Тестовые среды 13
1.9 Основные фазы тестирования 14
1.10 Основные виды тестирования ПО 14
1.11 Тест-дизайн 19
1.12 Тестовая документация 20
2. ОСОБЕННОСТИ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ТЕСТИРОВАНИЯ 23
2.1 Методы тестирования объектно-ориентированных систем 23
2.1.1 Выбор базового компонента для тестирования 23
2.1.2 Тестирование наследования 24
2.1.3 Инкапсуляция 24
2.1.4 Тестирование полиморфизма 25
2.1.5 Тестирование с учетом внутренней структуры 25
2.2 Программная реализация объектно-ориентированного тестирования на примере программы «векторный графический редактор» 26
ЗАКЛЮЧЕНИЕ 31
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ 32
ПРИЛОЖЕНИЕ 1. 34
Тестирование экземпляра класса (объекта) может проводится изолированно, однако, класс можно считать полностью протестированным, только после того как его экземпляр будет создан и проверен в рамках системы. 2.1.2 Тестирование наследованияНаследуемые методы должны быть повторно протестированы при переопределении или дополнении базового метода. Это связано с тем, что новый контекст атрибутов, новые аспекты поведения могут добавить новые ошибки. Таким образом если класс А является базовым для класса В, то сначала тестируются все методы класса А, затем все методы класса В причем так, что все методы класса А, вызываемые из В, тестируются заново.2.1.3ИнкапсуляцияС точки зрения объектно-ориентированного подхода, инкапсуляция – это принцип проектирования, заключающийся в разграничении доступа различных частей программы ко внутренним компонентам друг друга. Хотя инкапсуляция, сама по себе, не является источником ошибок, однако представляет препятствие для проведения тестирования, так как при тестировании требуется получение полной информации о состоянии класса, в том числе и всех его атрибутов, многие из которых могут быть объявлены как "невидимые" извне (например, атрибут private). Решение проблемы сокрытия может быть найдено в определении специальных отладочных методов, возвращающих информацию о состоянии класса или в использовании низкоуровневых отладчиков программного кода. 2.1.4 Тестирование полиморфизма Каждый возможный вариант полиморфного вызова метода должен быть протестирован. Примером такого случая является класс А, содержащий метод ToDo, вызывающий в свою очередь полиморфный метод ToDOSmth. Тогда для любого производного класса В, переопределяющего метод ToDOSmth, должен быть выполнен тест по вызову метода ToDo.2.1.5 Тестирование с учетом внутренней структуры Такой метод получил название "white-boxtesting" (англ. метод "белого\прозрачного ящика"). Тестирование выполняется путем рассмотрения структуры и определения возможных тестовых последовательностей. Существует два варианта подобного тестирования: тестирование, основанное на интерфейсе класса; тестирование, основанное на методах класса. В первом случае набор тестов составляется так, чтобы проверить функционирование интерфейсных свойств объекта, таких как сообщения и исключения.Основными методами составления тестов является анализ графа передачи управления в рамках методов объекта, и анализ потока данных.Программная реализация объектно-ориентированного тестирования на примере программы «векторный графический редактор»До запуска приложения в производство, когда оно станет доступно пользователям, важно убедиться, что данное приложение функционирует, как и должно, что в нем нет ошибок. Для проверки приложения мы можем использовать различные схемы и механизмы тестирования. Одним из таких механизмов являются юнит-тесты.Юнит-тесты позволяют быстро и автоматически протестировать отдельные компоненты приложения независимо от остальной его части. Не всегда юнит-тесты могут покрыть весь код приложения, но тем не менее они позволяют существенно уменьшить количество ошибок уже на этапе разработки.Приложение «векторный графический редактор» предназначено для рисования фигур по заданной формуле, например, линия, кривая Безье, треугольник или равнобедренный треугольник.Пользователь определяет тип линии, высоту, ширину и цвет фигуры. Интерфейс программы показан на рис.2.Рис. 2. Основное окно программы «векторный графический редактор»Базовым компонентом для тестирования является класс Figure.cs, в котором описаны основные методы и свойства отображаемых в приложении фигур.Класс Figureобладает двумя инициализирующими конструкторами – для создания линий и для создания полигонов.В результате создания линии, фигура получает цвет, а также инициализируется будущий набор точек. Тестирование конструктора линий:Рассмотрим конструктор, создающий полигоны. Его отличительная особенность – добавление трёх точек по заданной формуле.Ниже приведен метод, проверяющий, что при создании полигона создались три точки, начальные координаты которых соответствуют заданной формуле. Класс Figureтакже обладает рядом методов. Метод GetPointвозвращает точку по индексу. Для проверки этого метода создаем полигон и проверяем работу метода с помощью сравнения AreEqualтестового класса Assert.В свою очередь метод AddPoint() добавляет к фигуре новую точку. Для тестирования этого метода создаем линию. До вызова метода фигура не содержит точек, после использования добавилась новая точка.Благодаря использованию IDEVisualStudioпокрытие кода тестами можно легко оценить. После запуска всех тестов, в классе Figureвидны подсказки, был ли протестирован данный метод, сколько раз и были ли запуски успешными (см. рис.3).Рис. 3. Оценка покрытия кода тестами.Аналогичным образом были протестированы все методы класса Figure. Полный листинг кода модульных тестов в представлен в приложении 1 данной работы.ЗАКЛЮЧЕНИЕВ результате выполнения курсового проекта был создан набор тестов для проверки корректности работы программы «векторный графический редактор». Были решены следующие задачи. Проведен анализ предметной области, изучены особенности объектно-ориентированного тестирования. Далее был произведен анализ входных и выходных данных, классов и методов в программе. Затем была решена задача по разработке тестов.Благодаря использованию современных стандартов тестированияпрограммный продукт был протестирован с покрытием кода более чем 90%. Были систематизированы и закреплены полученные в период обучения знаний по основной образовательной программе, получены и развиты навыки программированиятестирования ПО. СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВРекс Блек. Ключевые процессы тестирования - М.: Издательство Лори, 2014. - 544 с. Котляров, В. П. Основы тестирования программного обеспечения / В.П. Котляров, Т.В. Коликова. - М.: Интернет-университет информационных технологий, Бином. Лаборатория знаний, 2009. - 288 c.Дж. Уиттакер, Дж. Арбон, Дж. Каролло Как тестируют в Google. — СПб.: Питер, 2014. — 320 с.: илLee Copeland A Practitioner's Guide to Software Test Design Illustrated Edition - Artech House Publishers (November 30, 2003) - 300сДжоэлСпольскиДжоэл о программировании – Симовл Плюс 2006, 352сОшероув Рой Искусство автономного тестирования с примерами на C#, 2017.Старолетов С. Основы тестирования и верификации программного обеспечения. Уч. пособие, 2 издание, 2020.Гленфорд Майерс, Том Баджетт, Кори Сандлер. Искусство тестирования программ, 3-е издание = TheArtofSoftwareTesting, 3rd Edition. — М.: «Диалектика», 2012. — 272 с. ЛайзаКриспин, Джанет Грегори. Гибкое тестирование: практическое руководство для тестировщиков ПО и гибких команд = AgileTesting: A PracticalGuideforTestersandAgileTeams. — М.: «Вильямс», 2010. — 464 с. — (Addison-WesleySignatureSeriesз. Классификация видов тестирования Электронный ресурс: [URL]: https://qa-academy.by/qaacademy/news/klassifikaciya-vidov-testirovaniya/Орлов С.А. Технология разработки программного обеспечения Электронный ресурс: [URL]:https://nashaucheba.ru/v18218/?cc=1&page=21Object Oriented Testing in Software Testing Электронныйресурс: [URL]: https://translated.turbopages.org/proxy_u/en-ru.ru.02ac04d5-628cf890-e767f4ba-74722d776562/https/www.geeksforgeeks.org/object-oriented-testing-in-software-testing/ПРИЛОЖЕНИЕ 1.Листинг кодаnamespace TestProject{ [TestClass]publicclassUnitTest1 { [TestMethod]publicvoid AddPointTest() {var figure = new Figure(System.Drawing.Color.Black, System.Drawing.Color.Red, 0, 1); Assert.AreEqual(figure.points.Count, 0); figure.AddPoint(new System.Drawing.Point(1, 1)); Assert.AreEqual(figure.points.Count, 1); } [TestMethod]publicvoid GetPointTest() {var figure = new Figure(2, new System.Drawing.Point(0, 0), 10, 20, 10, System.Drawing.Color.Red, System.Drawing.Color.Black);var point = figure.GetPointAt(1); Assert.IsNotNull(point); Assert.AreEqual(point.X, 5); Assert.AreEqual(point.Y, 10);var point0 = figure.GetPointAt(0); Assert.IsNotNull(point0); Assert.AreEqual(point0.X, 0); Assert.AreEqual(point0.Y, -10);var point2 = figure.GetPointAt(2); Assert.IsNotNull(point2); Assert.AreEqual(point2.X, -5); Assert.AreEqual(point2.Y, 10); } [TestMethod]publicvoid CreatePoligonTest() {var figure = new Figure(2, new System.Drawing.Point(0, 0), 10, 20, 10, System.Drawing.Color.Red, System.Drawing.Color.Black);var point = figure.points[1]; Assert.IsNotNull(point); Assert.AreEqual(point.X, 5); Assert.AreEqual(point.Y, 10);var point0 = figure.points[0]; Assert.IsNotNull(point0); Assert.AreEqual(point0.X, 0); Assert.AreEqual(point0.Y, -10);var point2 = figure.points[2]; Assert.IsNotNull(point2); Assert.AreEqual(point2.X, -5); Assert.AreEqual(point2.Y, 10); } [TestMethod]publicvoid CretaePolygonTest() {var figure = new Figure(2, new System.Drawing.Point(0, 0), 10, 10, 10, System.Drawing.Color.Red, System.Drawing.Color.Black); Assert.AreEqual(figure.points.Count, 3); Assert.AreEqual(figure.clr_default, System.Drawing.Color.Red); Assert.AreEqual(figure.clr_select, System.Drawing.Color.Black); } [TestMethod]publicvoid CretaeLineTest() {var figure = new Figure(System.Drawing.Color.Black, System.Drawing.Color.Red, 0, 1); Assert.IsNotNull(figure.points); Assert.AreEqual(figure.points.Count, 0); Assert.IsNotNull(figure.savePoints); Assert.AreEqual(figure.savePoints.Count, 0); Assert.AreEqual(figure.clr_default, System.Drawing.Color.Black); Assert.AreEqual(figure.clr_select, System.Drawing.Color.Red); Assert.IsFalse(figure.del); Assert.IsFalse(figure.selected); } [TestMethod]publicvoid SetTypeTest() {var figure = new Figure(2, new System.Drawing.Point(0, 0), 10, 10, 10, System.Drawing.Color.Red, System.Drawing.Color.Black); Assert.AreEqual(figure.getType(), 2); figure.setType(1); Assert.AreEqual(figure.getType(), 1); } [TestMethod]publicvoid RemoveAtTest() {var figure = new Figure(2, new System.Drawing.Point(0, 0), 10, 10, 10, System.Drawing.Color.Red, System.Drawing.Color.Black); Assert.AreEqual(figure.points.Count, 3); figure.RemoveAt(0); Assert.AreEqual(figure.points.Count, 2); figure.RemoveAt(1); Assert.AreEqual(figure.points.Count, 1); } [TestMethod]publicvoid InsertAllTest() {var points = new List
2. Котляров, В. П. Основы тестирования программного обеспечения / В.П. Котляров, Т.В. Коликова. - М.: Интернет-университет информационных технологий, Бином. Лаборатория знаний, 2009. - 288 c.
3. Дж. Уиттакер, Дж. Арбон, Дж. Каролло Как тестируют в Google. — СПб.: Питер, 2014. — 320 с.: ил
4. Lee Copeland A Practitioner's Guide to Software Test Design Illustrated Edition - Artech House Publishers (November 30, 2003) - 300с
5. Джоэл Спольски Джоэл о программировании – Симовл Плюс 2006, 352с
6. Ошероув Рой Искусство автономного тестирования с примерами на C#, 2017.
7. Старолетов С. Основы тестирования и верификации программного обеспечения. Уч. пособие, 2 издание, 2020.
8. Гленфорд Майерс, Том Баджетт, Кори Сандлер. Искусство тестирования программ, 3-е издание = The Art of Software Testing, 3rd Edition. — М.: «Диалектика», 2012. — 272 с.
9. Лайза Криспин, Джанет Грегори. Гибкое тестирование: практическое руководство для тестировщиков ПО и гибких команд = Agile Testing: A Practical Guide for Testers and Agile Teams. — М.: «Вильямс», 2010. — 464 с. — (Addison-Wesley Signature Seriesз.
10. Классификация видов тестирования Электронный ресурс: [URL]: https://qa-academy.by/qaacademy/news/klassifikaciya-vidov-testirovaniya/
11. Орлов С.А. Технология разработки программного обеспечения Электронный ресурс: [URL]: https://nashaucheba.ru/v18218/?cc=1&page=21
12. Object Oriented Testing in Software Testing Электронный ресурс: [URL]: https://translated.turbopages.org/proxy_u/en-ru.ru.02ac04d5-628cf890-e767f4ba-74722d776562/https/www.geeksforgeeks.org/object-oriented-testing-in-software-testing/
Вопрос-ответ:
Какие принципы тестирования существуют?
Существуют следующие принципы тестирования: полное тестирование невозможно, тестирование показывает наличие ошибок, тестирование уменьшает вероятность наличия ошибок в программе, тестирование начинается в самом раннем этапе разработки и продолжается до конца, повторное тестирование необходимо, тестирование является итеративным процессом, оценка эффективности тестирования не является точной.
Какими этапами проходит тестирование ПО?
Тестирование ПО проходит следующими этапами: планирование, проектирование тестов, создание тестовых сценариев, выполнение тестов, анализ результатов, документирование.
Что такое дефекты в контексте тестирования ПО?
Дефекты в контексте тестирования ПО - это ошибки или несоответствия в работе программного продукта, которые могут привести к неправильным результатам или некорректному поведению системы.
Какие основные фазы тестирования существуют?
Существуют следующие основные фазы тестирования: юнит-тестирование, интеграционное тестирование, системное тестирование, приемочное тестирование.
Что такое тестовая документация?
Тестовая документация - это набор документов, в которых описывается план тестирования, тестовые сценарии, описание тестовых случаев, результаты тестирования и другая информация, необходимая для проведения и анализа тестов.
Какие принципы лежат в основе тестирования объектно-ориентированных систем?
Основные принципы тестирования объектно-ориентированных систем включают полноту, независимость, повторяемость, адекватность и экономичность. Полнота означает, что все функции и требования системы должны быть протестированы. Независимость предполагает, что тесты должны быть независимыми друг от друга и от других компонентов системы. Повторяемость означает, что результаты тестирования должны быть воспроизводимыми для обеспечения непрерывности и стабильности системы. Адекватность означает, что тестирование должно быть достаточно точным и соответствовать требованиям качества системы. А экономичность означает, что тестирование должно быть проведено с минимальными затратами времени и ресурсов.
Какие этапы включает процесс тестирования объектно-ориентированных систем?
Процесс тестирования объектно-ориентированных систем включает несколько этапов. Сначала проводится постановка задачи, на которой определяются требования к системе и ее функциональность. Затем происходит обеспечение и контроль качества, включающее создание качественной документации и выбор подходящих тестовых сред. После этого проводятся основные фазы тестирования, включающие модульное, интеграционное и системное тестирование. В конце происходит описание дефектов и составление тестовой документации.
Какие методы тестирования используются для объектно-ориентированных систем?
Для тестирования объектно-ориентированных систем используются различные методы, включая модульное, интеграционное, системное и приемочное тестирование. Модульное тестирование проверяет работу отдельных модулей системы. Интеграционное тестирование проверяет взаимодействие между модулями системы. Системное тестирование проверяет работу всей системы в целом. Приемочное тестирование проверяет соответствие системы требованиям заказчика.