Академический Документы
Профессиональный Документы
Культура Документы
of Contents
ОГЛАВЛЕНИЕ 1.1
Лекция 1, ч.1. Введение в тестирование 1.2
Лекция 1, ч.2. Жизненный цикл продукта 1.3
Лекция 1, ч.3. Методологии разработки программного обеспечения 1.4
Лекция 1, ч.4. Жизненный цикл тестирования 1.5
Лекция 2, ч.1. Требования 1.6
Лекция 2, ч.2. Анализ требований 1.7
Лекция 2, ч.3. Тестирование документации 1.8
Лекция 2, ч.4. Виды и направления тестирования 1.9
Лекция 3, ч.1. Отчеты о дефектах 1.10
Лекция 3, ч.2. Жизненный цикл “бага” 1.11
Лекция 3, ч.3. Багтрекинговые системы 1.12
Лекция 4, ч.1. Тестовая документация 1.13
Лекция 4, ч.2. Чек-листы 1.14
Лекция 4, ч.3. Тест-кейсы 1.15
Лекция 4, ч.4. Программное обеспечение для управления тест-кейсами 1.16
Лекция 5, ч.1. Техники тест-дизайна 1.17
Лекция 5, ч.2. Планирование 1.18
Лекция 5, ч.3. Отчетность 1.19
Лекция 6, ч.1. Архитектура клиент-сервер 1.20
Лекция 6, ч.2. Тестирование web 1.21
Лекция 7, ч.1. Тестирование UI и верстки 1.22
Лекция 7, ч.2. Программное обеспечение, применяемое при тестировании UI 1.23
Лекция 8, ч.1. Интеграционное тестирование 1.24
Лекция 8, ч.2. Тестирование API 1.25
Лекция 8, ч.3. Программное обеспечение, применяемое при тестировании API
Лекция 9, ч.1. Тестирование мобильных приложений 1.27 1.26
Лекция 9, ч.2. Программное обеспечение, применяемое при тестировании
мобильных приложений 1.28
Лекция 10, ч.1. Базы данных и их разновидности 1.29
1
Лекция 10, ч.2. Запросы на выборку и модификацию данных 1.30
Лекция 11, ч.1. Виртуальные машины 1.31
Лекция 11, ч.2. Удаленные рабочие столы 1.32
2
ОГЛАВЛЕНИЕ
ОГЛАВЛЕНИЕ:
3
Лекция 1, ч.1. Введение в тестирование
План Тестирования (Test Plan) - это документ, который описывает весь объем работ
по тестированию, начиная с описания объекта, стратегии, расписания, критериев
начала и окончания тестирования до необходимого в процессе работы оборудования,
специальных знаний, а также оценки рисков с вариантами их разрешения.
4
Лекция 1, ч.1. Введение в тестирование
Тест дизайн (Test Design) - это этап процесса тестирования ПО, на котором
проектируются и создаются тестовые случаи (тест-кейсы), в соответствии с
определенными ранее критериями качества и целями тестирования.
Время Прохождения Тест Кейса(Test Case Pass Time) - это время от начала
прохождения шагов тест-кейса до получения результата теста.
Характеристики качества ПО
Функциональность (Functionality) - определяется способностью ПО решать задачи,
которые соответствуют зафиксированным и предполагаемым потребностям
пользователя, при заданных условиях использования ПО. Т.е. эта характеристика
5
Лекция 1, ч.1. Введение в тестирование
6
Лекция 1, ч.1. Введение в тестирование
7
Лекция 1, ч.1. Введение в тестирование
Если выразить образно главную цель тестировщика, то она будет звучать так:
«понимать, что в настоящий момент необходимо проекту, получает ли проект это
необходимое в должной мере и, если нет, то как изменить ситуацию к лучшему».
Звучит похоже на цель руководителя проекта, верно? Верно. Начиная с некоторого
уровня развития, IT-специалисты, по большому счёту, различаются лишь наборами
технических навыков и основной областью приложения этих навыков.
1. Знание иностранных языков. Да, это не технический навык. Но, тем не менее, он
идёт под номером «ноль». Можете считать это аксиомой: «нет знания английского
— нет карьеры в IT». Другие иностранные языки тоже приветствуются, но
английский первичен.
2. Уверенное владение компьютером на уровне по-настоящему продвинутого
пользователя и желание постоянно развиваться в этой области. Можете ли Вы
представить себе профессионального повара, который не может пожарить
картошку (не «не обязан», а «не умеет в принципе»)? Выглядит странно? Не
менее странно выглядит «IT’шник» (именно так, в кавычках), неспособный набрать
вменяемо отформатированный текст, скопировать файл по сети, развернуть
виртуальную машину или выполнить любое иное повседневное рутинное
действие.
3. Программирование. Оно на порядок упрощает жизнь любому IT’шнику, а
тестировщику — в первую очередь. Можно ли тестировать без знания
программирования? Да, можно. Можно ли это делать по-настоящему хорошо? Нет.
И сейчас самый главный (почти религиозно-философский) вопрос: какой язык
программирования изучать? C/C++/C#, Java, PHP, JavaScript, Python, Ruby и т.д. —
начинайте с того, на чём написан ваш проект. Если проекта пока ещё нет,
начинайте с JavaScript (на текущий момент — самое универсальное решение).
4. Базы данных и язык SQL. Здесь от тестировщика тоже не требуется квалификация
на уровне узких специалистов, но минимальные навыки работы с наиболее
распространёнными СУБД и умение писать простые запросы можно считать
обязательными.
5. Понимание принципов работы сетей и операционных систем. Хотя бы на
8
Лекция 1, ч.1. Введение в тестирование
Надеюсь, Вы обратили внимание на то, что самого тестирования в списке нет. Всё
верно, ведь ему посвящена вся эта книга целиком, так что позволим себе не
копировать её сюда.
Почему бывает так, что программы работают неправильно? Все очень просто – они
создаются и используются людьми. Если пользователь допустит ошибку, то это может
привести к проблеме в работе программы – она используется неправильно, значит,
может повести себя не так, как ожидалось.
Дефект, Баг (Defect, Bug) – недостаток компонента или системы, который может
привести к отказу определенной функциональности. Дефект, обнаруженный во время
исполнения программы, может вызвать отказ отдельного компонента или всей
9
Лекция 1, ч.1. Введение в тестирование
системы.
При исполнении кода программы дефекты, заложенные еще во время его написания,
могут проявиться: программа может не делать того, что должна или наоборот делать
то, чего не должна – происходит сбой.
Важно понимать, что не все баги становятся причиной сбоев – некоторые из них могут
никак себя не проявлять и оставаться незамеченными (или проявляться только при
очень специфических обстоятельствах).
10
Лекция 1, ч.1. Введение в тестирование
Во втором случае ошибки были допущены уже при кодировании, что привело к
появлению дефектов в готовом продукте. Но на этом уровне баги достаточно легко
обнаружить и исправить, поскольку мы видим несоответствие требованиям.
11
Лекция 1, ч.1. Введение в тестирование
Принципы тестирования
Тестирование программного обеспечения – креативная и интеллектуальная работа.
Разработка правильных и эффективных тестов – достаточно непростое занятие.
Принципы тестирования, представленные ниже, были разработаны в последние 40 лет
и являются общим руководством для тестирования в целом.
12
Лекция 1, ч.1. Введение в тестирование
3. Раннее тестирование
4. Скопление дефектов
5. Парадокс пестицида
Прогоняя одни и те же тесты вновь и вновь, Вы столкнетесь с тем, что они находят все
меньше новых ошибок. Поскольку система эволюционирует, многие из ранее
найденных дефектов исправляют и старые тест-кейсы больше не срабатывают.
13
Лекция 1, ч.1. Введение в тестирование
Тот факт, что тестирование не обнаружило дефектов, еще не значит, что программа
готова к релизу. Нахождение и исправление дефектов будет не важным, если система
окажется неудобной в использовании и не будет удовлетворять ожиданиям и
потребностям пользователя.
Верификация и валидация
Эти два понятия тесно связаны с процессами тестирования и обеспечения качества. К
сожалению, их часто путают, хотя отличия между ними достаточно существенны.
14
Лекция 1, ч.1. Введение в тестирование
QA, QC и тестирование
Так в чем же разница между QA и тестированием и что такое Quality Control?
15
Лекция 1, ч.1. Введение в тестирование
Многие люди до сих пор путают эти понятия, что, в общем, и не удивительно,
принимая во внимание, что в нашей стране они зачастую могут использоваться для
описания одних и тех же процессов. Но с формальной точки зрения, а именно она нас,
как специалистов, и интересует, эти три понятия имеют существенно отличающиеся
значения.
16
Лекция 1, ч.1. Введение в тестирование
17
Лекция 1, ч.2. Жизненный цикл продукта
Жизненный цикл ПО
Тестирование – не изолированный процесс. Это часть модели жизненного цикла
программного обеспечения (Software Development Life Cycle, SDLC). Именно поэтому
выбор средств и методик тестирования будет напрямую зависеть от выбранной
модели разработки. В этом разделе мы рассмотрим наиболее часто применяемые
подходы к разработке программного обеспечения, а также популярные сегодня
методологии и практики, такие как Agile и Scrum.
18
Лекция 1, ч.2. Жизненный цикл продукта
Анализ требований
Цель этой стадии – определение детальных требований к системе. Кроме этого,
необходимо убедиться в том, что все участники правильно поняли поставленные
задачи и то, как именно каждое требование будет реализовано на практике.
Проектирование
На стадии проектирования (называемой также стадией дизайна и архитектуры)
программисты и системные архитекторы, руководствуясь требованиями,
разрабатывают высокоуровневый дизайн системы.
Блок-схемы.
ER-диаграммы.
UML-диаграммы.
Разработка и программирование
На этом этапе начинается написание программистами кода программы в соответствии
с ранее определенными требованиями.
19
Лекция 1, ч.2. Жизненный цикл продукта
Документация
Существует четыре уровня документации:
Тестирование
Процесс тестирования состоит из таких этапов:
проверить, что все отчеты об ошибках, поданные ранее, были, так или иначе,
закрыты;
20
Лекция 1, ч.2. Жизненный цикл продукта
Внедрение и сопровождение
Когда программа протестирована и в ней больше не осталось серьезных дефектов,
приходит время релиза и передачи ее конечным пользователям.
21
Лекция 1, ч.3. Методологии разработки программного обеспечения
Модели разработки ПО
Чтобы лучше разобраться в том, как тестирование соотносится с программированием
и иными видами проектной деятельности, для начала рассмотрим самые основые —
модели разработки ПО (как часть жизненного цикла ПО). При этом сразу подчеркнём,
что разработка ПО является лишь частью жизненного цикла ПО, и здесь мы говорим
именно о разработке.
Знать и понимать модели разработки ПО необходимо затем, чтобы уже с первых дней
работы понимать, что происходит вокруг, что, зачем и почему Вы делаете. Многие
начинающие тестировщики отмечают, что ощущение бессмысленности происходящего
посещает их, даже если текущие задания интересны. Чем полнее вы будете
представлять картину происходящего на проекте, тем яснее Вам будет виден ваш
собственный вклад в общее дело и смысл того, чем вы занимаетесь.
Ещё одна важная вещь, которую следует понимать, состоит в том, что никакая модель
не является догмой или универсальным решением. Нет идеальной модели. Есть та,
которая хуже или лучше подходит для конкретного проекта, конкретной команды,
конкретных условий.
22
Лекция 1, ч.3. Методологии разработки программного обеспечения
23
Лекция 1, ч.3. Методологии разработки программного обеспечения
Итеративная модель
Итеративные или инкрементальные модели (известно несколько таких моделей)
предполагают разбиение создаваемой системы на набор кусков, которые
разрабатываются с помощью нескольких последовательных проходов всех работ или
их части.
24
Лекция 1, ч.3. Методологии разработки программного обеспечения
25
Лекция 1, ч.3. Методологии разработки программного обеспечения
Преимущества модели:
26
Лекция 1, ч.3. Методологии разработки программного обеспечения
27
Лекция 1, ч.3. Методологии разработки программного обеспечения
Классификация прототипов:
28
Лекция 1, ч.3. Методологии разработки программного обеспечения
То есть, не отрицая важности того, что справа, мы всё-таки больше ценим то, что
слева.
29
Лекция 1, ч.3. Методологии разработки программного обеспечения
SCRUM
30
Лекция 1, ч.3. Методологии разработки программного обеспечения
Scrum (Скрам) — это не аббревиатура, этот термин взят из регби, который обозначает
схватку вокруг мяча.
Сам термин Scrum можно определить так — это методология управления проектами,
которая построена на принципах тайм-менеджмента. Основной ее особенностью
является вовлеченность в процесс всех участников, причем у каждого участника есть
своя определенная роль. Суть в том, что не только команда работает над решением
задачи, но все те, кому интересно решение задачи. Не просто поставили задачу и
расслабились, а постоянно «работают» с командой и эта работа не означает только
постоянный контроль.
31
Лекция 1, ч.3. Методологии разработки программного обеспечения
Бэклог (backlog) — это список всех работ. Можно сказать, это ежедневник общего
пользования. Различают 2 вида бэклогов: Product-бэклог и спринт-бэклог.
Пример работы PR-агентства. Как бы это могло выглядеть, если бы они работали по
Scrum:
32
Лекция 1, ч.3. Методологии разработки программного обеспечения
быть учтено, что, на момент планирования первого спринта, должен быть спланирован
весь список заданий на 2 месяца (product-бэклог), чтобы не получилось так, что к
моменту проведения мероприятия что-то не выполнено.
**1.Планирование спринта.**
33
Лекция 1, ч.3. Методологии разработки программного обеспечения
Этот митинг проходит каждое утро в начале дня. Он предназначен для того, чтобы все
члены команды знали, кто и чем занимается в проекте. Длительность этого митинга
строго ограничена и не должна превышать 15 минут. Цель митинга — поделиться
информацией. Он не предназначен для решения проблем в проекте. Все требующие
специального обсуждения вопросы должны быть вынесены за пределы митинга.
Скрам митинг проводит Скрам Мастер. Он по кругу задает вопросы каждому члену
команды:
Скрам Мастер собирает все открытые для обсуждения вопросы в виде Action Items,
например, в формате что/кто/когда, например:
• Петя и Вася.
34
Лекция 1, ч.3. Методологии разработки программного обеспечения
Ретроспектива
В конце каждого Спринта Скрам Команда собирается на ретроспективу. Цель:
пересмотреть качество существующих процессов, взаимоотношения людей и
применяемые инструменты. Команда определяет, что прошло хорошо, а что прошло
не очень, а также выявляет потенциальные возможности для улучшений. Они создают
план улучшений на будущее.
Канбан
Термин "канбан" имеет дословный перевод: «Кан» значит видимый, визуальный и
«бан» - карточка или доска. На заводах Тойота карточки "канбан" используются
повсеместно для того, чтобы не загромождать склады и рабочие места заранее
созданными запчастями. Например, представьте, что Вы ставите двери на Тойота
Королла. У Вас возле рабочего места находится пачка из 10 дверей. Вы их ставите
одну за другой на новые машины и, когда в пачке остается 5 дверей, то Вы знаете, что
35
Лекция 1, ч.3. Методологии разработки программного обеспечения
пора заказать новые двери. Вы берете карточку "канбан", пишете на ней заказ на 10
дверей и относите ее тому, кто делает двери. Вы знаете, что он их сделает как раз к
тому моменту, как у Вас закончатся оставшиеся 5 дверей. И именно так и происходит:
когда Вы ставите последнюю дверь, прибывает пачка из 10 новых дверей. И так
постоянно: Вы заказываете новые двери только тогда, когда они вам нужны.
А теперь представьте, что такая система действует на всём заводе. Нигде нет складов,
где запчасти лежат неделями и месяцами. Все работают только по запросу и
производят именно столько запчастей, сколько запрошено. Если вдруг заказов стало
больше или меньше, то система сама легко подстраивается под изменения.
Во-первых, нужно сразу понять, что канбан — это не конкретный процесс, а система
ценностей. Как, впрочем, и SCRUM с XP. Это значит, что никто Вам не скажет, что и как
делать по шагам.
В-третьих, канбан — это даже еще более «гибкая» методология, чем SCRUM и XP. Это
значит, что она не подойдет всем командам и для всех проектов. И это также значит,
что команда должна быть еще более готовой к гибкой работе, чем даже команды,
использующие SCRUM и XP.
36
Лекция 1, ч.3. Методологии разработки программного обеспечения
Если менеджер верит команде, то зачем иметь оценку времени? Задача менеджера —
это создать приоритезированный пул задач, а задача команды — выполнить как можно
больше задач из этого пула. Всё. Никакого контроля не нужно. Всё, что нужно от
менеджера — это добавлять задачи в этот пул или менять им приоритет. Именно так
он управляет проектом.
Команда для работы использует канбан-доску. Например, она может выглядеть так:
37
Лекция 1, ч.3. Методологии разработки программного обеспечения
Windows 7».
Очередь задач: тут хранятся задачи, которые готовы к тому, чтобы начать их
выполнять. Всегда для выполнения берется верхняя, самая приоритетная задача
и ее карточка перемещается в следующий столбец.
Проработка дизайна: этот и остальные столбцы до «Закончено» могут меняться,
т.к. именно команда решает, какие шаги проходит задача до состояния
«Закончено». Например, в этом столбце могут находиться задачи, для которых
дизайн кода или интерфейса еще не ясен и обсуждается. Когда обсуждения
закончены, задача передвигается в следующий столбец.
Разработка: тут задача висит до тех пор, пока разработка фичи не завершена.
После завершения она передвигается в следующий столбец. Или ,если
архитектура не верна или неточна, задачу можно вернуть в предыдущий столбец.
Тестирование: в этом столбце задача находится, пока она тестируется. Если
найдены ошибки — возвращается в Разработку. Если нет — передвигается
дальше.
Деплоймент: у всех проектов свой деплоймент. У кого-то это значит выложить
новую версию продукта на сервер, а у кого-то — просто закомитить код в
репозиторий.
Закончено: сюда стикер попадает только тогда, когда все работы по задаче
закончены полностью.
А теперь самое важное. Видите цифры под каждым столбцом? Это число задач,
которые могут быть одновременно в этих столбцах. Цифры подбираются
экспериментально, но, считается, они должны зависеть от числа разработчиков в
команде. Например, если вы имеете 8 программистов в команде, то в строку
«Разработка» вы можете поместить цифру 4. Это значит, что одновременно
программисты будут делать не более 4-х задач, значит, у них будет много причин для
общения и обмена опытом. Если вы поставите туда цифру 2, то 8 программистов,
занимающихся двумя задачами, могут заскучать или терять слишком много времени
на обсуждениях. Если поставить 8, то каждый будет заниматься своей задачей и
некоторые задачи будут задерживаться на доске надолго, а ведь главная задача
канбан — это уменьшение времени прохождения задачи от начала до стадии
готовности.
38
Лекция 1, ч.3. Методологии разработки программного обеспечения
Никто не даст точный ответ, какими должны быть эти лимиты, но попробуйте, для
начала, разделить число разработчиков на 2 и посмотреть, как это работает в вашей
команде. Потом эти числа можно подогнать под вашу команду. Под «разработчиками»
понимаются не только программисты, но и другие специалисты. Например, для
столбца «Тестирование» разработчики — это тестеры, т.к. тестирование — это их
обязанность.
39
Лекция 1, ч.3. Методологии разработки программного обеспечения
40
Лекция 1, ч.3. Методологии разработки программного обеспечения
41
Лекция 1, ч.4. Жизненный цикл тестирования
Важно понимать, что длина такой итерации (и, соответственно, степень подробности
каждой стадии) может варьироваться в широчайшем диапазоне — от единиц часов до
десятков месяцев. Как правило, если речь идёт о длительном промежутке времени, он
разбивается на множество относительно коротких итераций, но сам при этом
«тяготеет» к той или иной стадии в каждый момент времени (например, в начале
проекта больше планирования, в конце — больше отчётности).
Также ещё раз стоит подчеркнуть, что приведённая схема — не догма, но общая суть и
ключевые принципы остаются неизменными. Их и рассмотрим.
42
Лекция 1, ч.4. Жизненный цикл тестирования
43
Лекция 2, ч.1. Требования
Требования
Что такое «требование»
Как мы только что рассмотрели в главе, посвящённой жизненному циклу тестирования,
всё так или иначе начинается с документации и требований.
Важность требований
Требования являются отправной точкой для определения того, что проектная команда
будет проектировать, реализовывать и тестировать. Элементарная логика говорит
нам, что если в требованиях что-то «не то», то и реализовано будет «не то», т.е.
колоссальная работа множества людей будет выполнена впустую.
44
Лекция 2, ч.1. Требования
Если проблема в требованиях будет выяснена на этой стадии, её решение может
свестись к исправлению пары слов в тексте, в то время как недоработка, вызванная
пропущенной проблемой в требованиях и обнаруженная на стадии эксплуатации,
может даже полностью уничтожить проект.
45
Лекция 2, ч.1. Требования
Совещание.
Use case.
Анкетирование
Преимущества:
Недостатки:
Интервью
Этот метод известен многим в качестве своего рода беседа “по душам” с
заинтересованным лицом, тет-а-тет.
46
Лекция 2, ч.1. Требования
Многим этот способ может показаться достаточно легким, но это не так. Провести
хорошее интервью достаточно сложно. Вы должны гибко реагировать на реакцию
интервьюируемого и, в случае необходимости, изменять порядок заготовленных
вопросов или их формулировку. Не забудьте включить диктофон во время интервью
или вести заметки.
Из плюсов:
Из минусов:
Плюс:
Минус:
Мозговой штурм
47
Лекция 2, ч.1. Требования
Плюсы:
Минусы:
Совещание
Совещания являются одной из ключевых практик в Agile, т.к. в них участвуют все
заинтересованные в развитии проекта и решении проблемы стороны.
Плюсы:
Недостатки:
Use case
48
Лекция 2, ч.1. Требования
Плюсы:
Минусы:
49
Лекция 2, ч.2. Анализ требований
Анализ требований
Параметры тестирования документации
1. Четкость и ясность
Последствия:
Как тестировать:
2. Актуальность
Необходимость поддержания актуальности требований кажется очевидной. Однако, на
некоторых проектах требования не обновляются месяцами, а то и годами. Это может
50
Лекция 2, ч.2. Анализ требований
быть связано с тем, что в штате нет аналитика, а у исполняющего его обязанности
сотрудника просто не хватает времени. Случается и другое: требования обновляют
только при наличии действительно значимых изменений, при этом различные
«мелочи», в виде изменения кнопок или текстов, игнорируются.
Последствия:
Как тестировать:
3. Логика
Как следует из названия, работа системы должна быть логичной. Пользователь не
может изменить настройки своего профиля или написать письмо до того, как пройдет
авторизацию в системе. Звучит, опять же, элементарно, но в проектах со множеством
клиентов или со сложной логикой подобные ошибки часто допускаются.
Последствия:
Пользователь в бешенстве.
Дальнейшая работа с аккаунтом без обращения в техподдержку невозможна.
Как тестировать:
51
Лекция 2, ч.2. Анализ требований
4. Возможные сценарии
В документации должны быть подробно описаны как очевидные, так и неочевидные
варианты использования системы. К очевидным (позитивным) вариантам, например,
можно отнести ввод корректной пары логин/пароль. К неочевидным (негативным) –
ввод некорректной пары логин/ пароль или отсутствие этих данных вовсе.
Пример. Часто из виду упускаются такие моменты, как тексты ошибок, поведение
системы при потере связи, а также обработка ошибок, связанных со сторонними
сервисами (например, с оплатой).
Последствия:
Как тестировать:
5. Интеграция
Имеет смысл выделить интеграцию со сторонними сервисами, так как здесь
приходится выходить за рамки проверки документации. Перед началом разработки
аналитики, как правило, изучают работу сторонней системы, а затем описывают схему
взаимодействия этой системы с разрабатываемым продуктом. В данном случае,
вероятность ошибки очень велика, так как ошибиться могут как аналитики, так и
представители стороннего сервиса, которые консультировали или писали
документацию.
52
Лекция 2, ч.2. Анализ требований
Последствия:
Как тестировать:
53
Лекция 2, ч.3. Тестирование документации
Тестирование документации
Документация– это еще одна составляющая программного продукта любой
уважающей себя организации, занимающейся разработкой программного
обеспечения. Но не все организации уделяют достаточное количество времени
разработке стоящей документации. Очень часто нам приходится иметь дело с
толковым программным продуктом и невзрачным, непонятным и беспомощным
документным сопровождением.
И так, начнем:
54
Лекция 2, ч.3. Тестирование документации
55
Лекция 2, ч.3. Тестирование документации
56
Лекция 2, ч.3. Тестирование документации
57
Лекция 2, ч.3. Тестирование документации
58
Лекция 2, ч.4. Виды и направления тестирования
Типы тестирования
White/Black/Grey Box-тестирование
Для того, чтобы лучше понимать подходы к тестированию программного обеспечения,
нужно, конечно же, знать, какие виды и типы тестирования в принципе бывают.
Давайте начнем с рассмотрения основных типов тестирования, которые определяют
высокоуровневую классификацию тестов.
Black Box
Summary: Мы не знаем, как устроена тестируемая система.
59
Лекция 2, ч.4. Виды и направления тестирования
Пример:
классы эквивалентности;
анализ граничных значений;
таблицы решений;
диаграммы изменения состояния;
тестирование всех пар.
Преимущества:
Недостатки:
60
Лекция 2, ч.4. Виды и направления тестирования
White Box
Summary: Нам известны все детали реализации тестируемой программы.
Пример:
61
Лекция 2, ч.4. Виды и направления тестирования
Преимущества:
Недостатки:
Grey Box
Summary: Нам известны только некоторые особенности реализации тестируемой
системы.
Пример:
62
Лекция 2, ч.4. Виды и направления тестирования
1. Статическое тестирование
Статистическое тестирование –тип тестирования, который предполагает, что
программный код во время тестирования не будет выполняться. При этом, само
тестирование может быть как ручным, так и автоматизированным.
63
Лекция 2, ч.4. Виды и направления тестирования
2. Динамическое тестирование
Динамическое тестирование – тип тестирования, который предполагает запуск
программного кода. Таким образом, анализируется поведение программы во время ее
работы.
64
Лекция 2, ч.4. Виды и направления тестирования
Ручное и автоматизированное
При ручном тестировании (manual testing) тестировщики вручную выполняют тесты,
не используя никаких средств автоматизации. Ручное тестирование – самый
низкоуровневый и простой тип тестирования, не требующий большого количества
дополнительных знаний.
Кто угодно может провести ручное тестирование. Нет, выполнение любого вида
тестирования требует специальных знаний и профессиональной подготовки.
Автоматизированное тестирование мощнее ручного.
Полная автоматизация невозможна. Необходимо использовать также и ручное
тестирование.
Ручное тестирование – это просто.
65
Лекция 2, ч.4. Виды и направления тестирования
66
Лекция 2, ч.4. Виды и направления тестирования
Виды тестирования
Все виды тестирования программного обеспечения, в зависимости от
преследуемых целей, можно условно разделить на следующие группы:
1. Функциональные.
2. Нефункциональные.
3. Связанные с изменениями.
67
Лекция 2, ч.4. Виды и направления тестирования
Требования.
Бизнес-процессы.
1. Конфиденциальность.
2. Целостность.
68
Лекция 2, ч.4. Виды и направления тестирования
3. Доступность.
Конфиденциальность
Целостность
Доступность
69
Лекция 2, ч.4. Виды и направления тестирования
70
Лекция 2, ч.4. Виды и направления тестирования
71
Лекция 2, ч.4. Виды и направления тестирования
Уровни проведения
72
Лекция 2, ч.4. Виды и направления тестирования
73
Лекция 2, ч.4. Виды и направления тестирования
Данные ситуации могут быть воспроизведены, как только достигнута некоторая точка в
разработке, когда все системы восстановления или дублирования готовы выполнять
свои функции. Технически реализовать тесты можно следующими путями:
74
Лекция 2, ч.4. Виды и направления тестирования
75
Лекция 2, ч.4. Виды и направления тестирования
76
Лекция 2, ч.4. Виды и направления тестирования
77
Лекция 2, ч.4. Виды и направления тестирования
Уровни Тестирования
1. Компонентное или Модульное тестирование (Component or Unit Testing)
78
Лекция 2, ч.4. Виды и направления тестирования
79
Лекция 2, ч.4. Виды и направления тестирования
Фаза приемочного тестирования длится до тех пор, пока заказчик не выносит решение
об отправлении приложения на доработку или выдаче приложения.
80
Лекция 2, ч.4. Виды и направления тестирования
81
Лекция 2, ч.4. Виды и направления тестирования
82
Лекция 3, ч.1. Отчеты о дефектах
Отчёты о дефектах
Баг(дефект)— расхождение ожидаемого и фактического результата.
Виды ошибок
83
Лекция 3, ч.1. Отчеты о дефектах
84
Лекция 3, ч.2. Жизненный цикл “бага”
85
Лекция 3, ч.2. Жизненный цикл “бага”
86
Лекция 3, ч.2. Жизненный цикл “бага”
Когда была создана эта проблема? Какое именно действие при разработке
явилось ее источником? Это была проблема в требованиях? Проектировании
системы? Коде? Тестировании?
Когда проблема была выявлена? Может, она и не была сразу же устранена, но что
нас интересует: сколько она существовала до того, как мы ее обнаружили?
Какого рода была эта проблема? Когда у Вас огромное количество дефектов, то их
категоризация облегчает анализ и обучение.
87
Лекция 3, ч.2. Жизненный цикл “бага”
88
Лекция 3, ч.2. Жизненный цикл “бага”
89
Лекция 3, ч.2. Жизненный цикл “бага”
90
Лекция 3, ч.2. Жизненный цикл “бага”
в каждом отчёте описывается ровно один дефект (если один и тот же дефект
проявляется в нескольких местах, то эти проявления перечисляются в
подробном описании).
91
Лекция 3, ч.2. Жизненный цикл “бага”
1. Обнаружить дефект.
2. Понять суть проблемы.
3. Воспроизвести дефект.
4. Проверить наличие описания найденного вами дефекта в системе управления
дефектами.
5. Сформулировать суть проблемы в виде «что сделали, что получили, что ожидали
получить».
6. Заполнить поля отчёта, начиная с подробного описания.
7. После заполнения всех полей внимательно перечитать отчёт, исправить
неточности и добавить подробности.
8. Ещё раз перечитать отчёт, т.к. в пункте 6 вы точно что-то упустили.
92
Лекция 3, ч.2. Жизненный цикл “бага”
Копии экрана в виде «копий всего экрана целиком». Чаще всего нужно сделать
копию какого-то конкретного окна приложения, а не всего экрана, тогда поможет
Alt+PrintScreen. Даже если важно захватить больше, чем одно окно, практически
любой графический редактор позволяет отрезать ненужную часть картинки.
Логические ошибки:
93
Лекция 3, ч.2. Жизненный цикл “бага”
94
Лекция 3, ч.2. Жизненный цикл “бага”
95
Лекция 3, ч.3. Багтрекинговые системы
96
Лекция 3, ч.3. Багтрекинговые системы
Task (задание) — некое задание для выполнения тем или иным участником
проектной команды.
97
Лекция 3, ч.3. Багтрекинговые системы
98
Лекция 3, ч.3. Багтрекинговые системы
99
Лекция 4, ч.1. Тестовая документация
Тестовая документация
Создание тестовой документации является вторым
этапом жизненного цикла ПО.
Тестовая документация включает в себя:
тест план;
тестовая стратегия;
чек-лист;
тестовый сценарий;
тестовый комплект;
отчет о дефекте.
Тест план (Test Plan) - это документ, описывающий весь объем работ по
тестированию, начиная с описания объекта, стратегии, расписания, критериев начала
и окончания тестирования, до необходимого в процессе работы оборудования,
специальных знаний, а также оценки рисков с вариантами их разрешения.
100
Лекция 4, ч.1. Тестовая документация
выдержка определенного периода без открытия новых багов Zero Bug Bounce
(ZBB).
2. Отдельным документом.
Тестовая стратегия определяет то, как мы тестируем продукт. Это набор мыслей и
идей, которые направляют процесс тестирования.
1. Тестовую среду.
101
Лекция 4, ч.1. Тестовая документация
Пользовательские истории
Пользовательские истории (User Story) — способ описания требований к
разрабатываемой системе, сформулированных как одно или более предложений на
повседневном или деловом языке пользователя. Пользовательские истории
используются гибкими методологиями разработки программного обеспечения для
спецификации требований.
Примеры:
Несмотря на то, что стори играют в огромной степени роль, ранее принадлежавшую
спецификациям требований (SRS), сценариям использования и т. п., они все же
ощутимо отличаются рядом тонких, но критических нюансов:
102
Лекция 4, ч.1. Тестовая документация
Текст самой юзер стори должен объяснять роль/действия юзера в системе, его
потребность и профит, который юзер получит после того как история случится.
Actor
103
Лекция 4, ч.1. Тестовая документация
1. Разделите всех актеров на группы. Целевая группа, важная группа, менее важная
группа и тп.
2. Дайте уникальные названия актерам в этих группах. Даже если в системе у них
будет одинаковые роли "Пользователя системы".
Действие
Это суть истории, "что нужно сделать". Что можно улучшить. Действие должно быть
одно - основное. Нет смысла описывать" авторизуется и выполняется поиск" или
"указывает параметры поиска и выполняет поиск". Укажите то действие, что вам
действительно нужно.
Ценность
Главная проблема с User Story. Вы всегда знаете первую часть истории, но всегда
сложно указать для чего это делается. Но это Scrum, все должно быть указано как User
story согласно шаблону, и потому вы пишите "чтобы ...".
104
Лекция 4, ч.1. Тестовая документация
У меня Аcceptance Сriteria - это метрика на value в US. Как померить такой value? Как
понять что аналитик принял решение быстрее? Как вы поймете в конце что история
выполнена?
Как можно дольше стоит избегать UI. История должна выполняться без привязки к
конкретным элементам.
продолжение:
105
Лекция 4, ч.1. Тестовая документация
106
Лекция 4, ч.2. Чек-листы
Чек-листы
Чек-лист - набор идей по тестированию, разработке, планированию и управлению. А
также, это перечень формализованных тестовых случаев в удобном для проведения
проверок виде. Тестовые случаи в чек-листе не должны быть зависимыми друг от
друга.
идея проверок;
ожидаемые результаты;
Чек-лист, чаще всего, представляет собой обычный и привычный нам список, который
может быть:
107
Лекция 4, ч.2. Чек-листы
108
Лекция 4, ч.2. Чек-листы
Взаимозаменяемость сотрудников.
109
Лекция 4, ч.3. Тест-кейсы
Тест кейсы
Тестовый случай (Test Case) - это артефакт, описывающий совокупность шагов,
конкретных условий и параметров, необходимых для проверки реализации
тестируемой функции или её части.
110
Лекция 4, ч.3. Тест-кейсы
111
Лекция 4, ч.3. Тест-кейсы
112
Лекция 4, ч.3. Тест-кейсы
Закрыт (closed) - очень редкий случай, т.к. тест-кейс, как правило, оставляют в
состояниях «провален / пройден успешно / заблокирован / пропущен». В некоторых
системах управления тест-кейс переводят в данное состояние, чтобы подчеркнуть тот
факт, что на данной итерации тестирования все действия с ним завершены.
Требует доработки (not ready) - как видно из схемы, в это состояние (или из него)
тест-кейс может быть переведён в любой момент времени, если в нём будет
обнаружена ошибка, если изменятся требования, по которым он был написан, или
наступит иная ситуация, не позволяющая считать тест-кейс пригодным для
выполнения и перевода в иные состояния.
113
Лекция 4, ч.3. Тест-кейсы
114
Лекция 4, ч.3. Тест-кейсы
Механизм запуска:
115
Лекция 4, ч.3. Тест-кейсы
2. Даже если в тест-кейсе всего один шаг, нумеруйте его (иначе возрастает
вероятность в будущем случайно «приклеить» описание этого шага к новому
тексту).
Пишите ожидаемый результат по всем шагам без исключения, если у вас есть хоть
малейшие сомнения в том, что результат некоего шага будет совершенно
тривиальным и очевидным (если вы всё же пропускаете ожидаемый результат для
какого-то тривиального действия, лучше оставить в списке ожидаемых
результатов пустую строку — это облегчает восприятие).
116
Лекция 4, ч.3. Тест-кейсы
Набор тест-кейсов (test case suite, test suite, test set) - совокупность тест-кейсов,
выбранных с некоторой общей целью или по некоторому общему признаку.
117
Лекция 4, ч.3. Тест-кейсы
118
Лекция 4, ч.3. Тест-кейсы
По видам тестирования.
119
Лекция 4, ч.4. Программное обеспечение для управления тест-кейсами
120
Лекция 4, ч.4. Программное обеспечение для управления тест-кейсами
121
Лекция 4, ч.4. Программное обеспечение для управления тест-кейсами
JIRA + Zephyr
122
Лекция 4, ч.4. Программное обеспечение для управления тест-кейсами
Создание тест-плана.
Выполнение тестирования.
Создание отчетов.
Если тестовый продукт ведет себя неправильно, вы можете немедленно создать отчет
о ошибке.
123
Лекция 4, ч.4. Программное обеспечение для управления тест-кейсами
124
Лекция 5, ч.1. Техники тест-дизайна
Техники тест-дизайна
Тест-дизайн – это этап процесса тестирования ПО, на котором проектируются и
создаются тестовые случаи (тест-кейсы), в соответствии с определёнными ранее
критериями качества и целями тестирования.
125
Лекция 5, ч.1. Техники тест-дизайна
126
Лекция 5, ч.1. Техники тест-дизайна
По количеству символов.
По типу символов (цифры, буквы, спец символы).
Рис. 5.1. Пример: функция подсчета комиссии при отмене бронирования авиабилетов
Шаги:
Здесь мы можем поступить так, как нам хочется и выбрать любые значения из класса.
Ведь, если предположить, что мы правильно разбили на классы эквивалентности, то
нет разницы, какое значение из диапазона мы выберем.
127
Лекция 5, ч.1. Техники тест-дизайна
3. Выполним тесты:
1. Во-первых, нужно выделить классы эквивалентности. Опять же, это очень важный
шаг и от правильности разбиения на классы эквивалентности зависит
эффективность тестов граничных значений.
2. Далее нужно определить граничные значения этих классов.
3. Нам нужно понять, к какому классу будет относиться каждая граница.
4. Для каждой границы нам нужно провести тесты по проверке значения до границы,
на границе, и сразу после границы.
128
Лекция 5, ч.1. Техники тест-дизайна
Рис. 5.2. Пример: функция подсчета комиссии при отмене бронирования авиабилетов
Шаги:
2. Определим границы:
5 суток.
24 часа.
0 часов.
129
Лекция 5, ч.1. Техники тест-дизайна
То есть, техника анализа классов эквивалентности просто говорит нам о том, что
нужно разбить все тесты на классы и провести тестирование всех классов. А техника
граничных значений ориентирована на обнаружение конкретной проблемы –
возникновения ошибок на границах классов эквивалентности.
130
Лекция 5, ч.2. Планирование
Планирование
Планирование Спринта
Задачи, над которыми будет трудиться команда разработки во время спринта,
определяются на планировании спринта. План создается совместными усилиями всей
скрам-команды.
131
Лекция 5, ч.2. Планирование
132
Лекция 5, ч.2. Планирование
Цель Спринта
Цель Спринта – это установленный для спринта ориентир, который достигается через
выполнение части бэклога продукта. Цель спринта формируется во время его
планирования и объясняет команде разработки, для чего создается инкремент.
Цель спринта – это ориентир для команды разработки. Чтобы его достичь, команда
должна использовать технологии и реализовывать функциональность. Если объём
работ становится отличным от ожиданий команды разработки, команда
договаривается с владельцем продукта об объёме бэклога текущего спринта.
ЧТО?
133
Лекция 5, ч.2. Планирование
КАК?
ЧАСТЫЕ ПРОБЛЕМЫ
134
Лекция 5, ч.2. Планирование
Мотивированная команда.
Хороший контакт и доверие между ВП и командой.
Если ВП не доверяет выводам команды, встреча быстро станет упражнением по
избеганию, вместо диалога о работе. Команде важно видеть ценность встречи и
преимущества планирования. Если есть какие-либо сомнения ‒ процесс рухнет.
Встреча проходит в установленное время.
Она не должна быть слишком длинной и утомительной, потому что тогда теряется
ценность.
Проведена подготовительная работа, часто, в формате встреч по уточнению
беклога.
ВП гарантирует, что существует здоровый, поддерживаемый и
приоритезированный беклог.
Истории в верхней части беклога, которые должны входить в следующий спринт,
разбиты на небольшие части, чтобы команда могла их обсудить и запланировать.
Скрам-мастер убедился, что участвуют все члены команды: владелец продукта,
скрам-мастер, разработчики, тестировщики, администратор базы данных -
каждый, кто является частью команды разработчиков. Другие заинтересованные
стороны могут присутствовать только в качестве наблюдателей, не прерывающих
процесс.
Каждый участник должен чувствовать свою ценность на встрече, иметь
возможность поделиться своим видением.
Решения о работе принимаются командно.
Если ВП принимает все решения о работе и ее выполнении, команда будет
чувствовать, что это пустая трата времени.
135
Лекция 5, ч.2. Планирование
Консенсус по поводу метода оценки и разбивки работы. Story Points или Planning
Poker - команде нужно договориться о методе оценки, чтобы работать
согласованно.
ДЛИТЕЛЬНОСТЬ
Длительность встречи зависит от длины спринта, чем дольше спринт, тем больше
времени нужно для его планирования. Для ориентира:
ЦЕЛИ
136
Лекция 5, ч.2. Планирование
СТРУКТУРА ВСТРЕЧИ
Производительность команды:
Проще добавить работу в спринт, если у вас хорошо проработан беклог, чем
убрать ее.
137
Лекция 5, ч.2. Планирование
РАЗБИВКА ЗАДАЧ
138
Лекция 5, ч.2. Планирование
РАБОЧАЯ СРЕДА
139
Лекция 5, ч.2. Планирование
обязательства; и если у них есть какие-то сомнения или возникают риски, отнеситесь к
ним всерьез. Очень важно, что последнее слово о поставке остается за командой, а не
владельцем продукта.
Автономия команды
Я большой сторонник самоорганизующихся автономных команд. Не потому, что ленив
.... А потому, что я видел результаты их работы. Автономные команды эффективны,
потому что они владеют продуктом от начала до конца, они независимо принимают
решения и это способствует росту и мотивации всех участников.
Активное слушание
В начале встречи особенно важно вовлечь команду в рассказ ВП, когда он объясняет и
рассказывает о приоритетах. Хорошо, если команда активно слушает и задает
вопросы на этом этапе.
Взаимное уважение
Я говорил о важности доверия, но уважение не менее важно. Я упомянул, что
владелец продукта должен иметь доверие в команде, и важно, чтобы оно было
взаимным. Команда должна уважать ВП и доверять решениям, которые он принимает.
Это тот человек, который приоритезирует их работу, им важно знать, что их работа
имеет ценность и хорошо продумана.
Вопросы
140
Лекция 5, ч.2. Планирование
Процесс
Если Вы используете физическую Kanban доску, предложите команде самостоятельно
выписать свои стикеры, повесить их на доску и расставить приоритеты, опять же, это
хороший способ развивать самоорганизацию. Используйте время встречи для
обновления своего инструмента, будь то физическая Kanban доска, Jira или TFS. Во-
первых, каждый сможет увидеть план, согласиться на него и начать работу. Во-вторых,
хорошо, когда каждый понимает процесс. Тогда, если скрам-мастер болен, то члену
команды несложно подменить его.
ЗАВЕРШЕНИЕ ВСТРЕЧИ
В конце встречи возьмите несколько минут, чтобы снова подумать о том, что
получилось хорошо, чего не было в предыдущем спринте и убедитесь, что забираете
удачные практики с собой, а все плохое не повторится. Это позволяет бросить
последний взгляд на запланированную работу и начать свое путешествие.
141
Лекция 5, ч.2. Планирование
Capacity
Capacity прогноз - количество идеальных часов, доступное в следующем спринте.
Нет смысла планировать задачи на тех, кто будет в отпуске или занят другими
активностями.
Velocity Scrum
Если представить себе движение автомобиля, то скорость в нем оценивается по
спидометру и тогда всё предельно ясно. Однако, в жизни в целом и в каком-то
конкретном деле нет спидометра и как оценить скорость объективно - вопрос. Если
представить, что на автомобиле сломался спидометр, то скорость может быть оценена
постфактум, то есть, когда человек будет ехать 60 минут и проедет, например, 100 км,
затем опять пройдет 60 минут, но проедет 120 км, он будет видеть с какой скоростью
он двигался – около 110 км/ч. При этом, если во время следующих 60 минут он
остановится и потратит на заправку 12 минут, на обед 15 минут и проедет 55 км, то
средняя скоростьза весь путь составит – 98 км/ч.
142
Лекция 5, ч.2. Планирование
143
Лекция 5, ч.2. Планирование
144
Лекция 5, ч.2. Планирование
Хочется, однако, отметить, что по поводу метрики Velocity в Scrum ходят споры, и кто-
то считает данные графики не очень полезными и сложными в определении
возможных проблем, да и самого разгона. В целом, все сходятся во мнении, что
Velocity должен использоваться специалистом, как дополнительное наглядное
отображение эффективности, которое как калька накладывается на другие данные,
помогая скорректировать аналитическую работу Scrum Master.
145
Лекция 5, ч.2. Планирование
Оценка трудозатрат
Любая оценка лучше её отсутствия. Даже если область предстоящей работы для
Вас совершенно нова, даже если Вы ошибётесь в своей оценке на порядок, Вы
как минимум получите опыт, который сможете использовать в будущем при
возникновении подобного рода задач.
146
Лекция 5, ч.2. Планирование
Учтите ошибки при формировании новых оценок. На этом этапе очень полезно не
просто отметить отклонение, а подумать, что привело к его появлению.
Повторяйте этот алгоритм как можно чаще для самых различных областей жизни.
Сейчас цена Ваших ошибок крайне мала, а наработанный опыт от этого
становится ничуть не менее ценным.
147
Лекция 5, ч.2. Планирование
148
Лекция 5, ч.2. Планирование
описать весь объём работ с точностью, достаточной для чёткого понимания сути
задач, формирования достаточно точной оценки трудозатрат и выработки
показателей достижения результатов.
определить весь объём трудозатрат как сумму трудозатрат по отдельным задачам
(с учётом необходимых поправок).
от интуитивного представления перейти к конкретному перечню отдельных
действий, что упрощает построение плана, принятие решений о
распараллеливании работ и т.д.
149
Лекция 5, ч.2. Планирование
Экспертная оценка
Название метода полностью отображает его суть в том, что оценка осуществляется на
основании работы с предыдущими проектами либо же для работы привлекаются
эксперты определённой области или специалисты, знакомые с тестируемым
приложением.
Специальный метод
Метод Дельфи
150
Лекция 5, ч.2. Планирование
151
Лекция 5, ч.2. Планирование
На самом деле, таких вариантов карт очень много и каждый может придумывать свои,
например, означающие количество дней на разработку.
Данный вид имеет следующие значения: 0, ?, 1, 2, 3, 5, 8, 13, 20, 40, 100, «?», «Чашка
кофе». Знак вопроса означает, что «игрок» не понял до конца смысл обсуждаемого или
не обладает достаточно информацией, чтобы оценить её. Чашка кофе, в свою
очередь, означает: «Я устал, давайте передохнем».
152
Лекция 5, ч.2. Планирование
После этого карты выбрасываются снова и обычно разрыв уже сокращается, однако,
если этого не произошло, то цикл повторяется. В данном случае, рекомендуется
ввести таймер на цикл и поставить ограничения по циклам, но, в большинстве
случаев, после третьего раза показатели примерно одинаковые. Если имеются
небольшие расхождения, то в приоритете показатель человека, который
непосредственно будет в разработке этой задачи.
Главной проблемой всегда был эффект привязки, который может проявлять себя по-
разному. Главной ошибкой, вызывающей этот эффект, является открытое обсуждение
оценок. Если тот, кто начинает обсуждение, говорит примерно следующее: «Я считаю,
что данное задание займет 18 часов разработки», то, так или иначе, все будут
акцентированы на сроке в 18 часов, и тот, кто считал, что задача будет решена за 2
дня, может подумать, что на самом деле и 18 часов будет достаточно, а тот, кто думал
про 5 часов, может подумать, что недооценил. С одной стороны, консенсус
достигается быстрее, но с другой стороны, он не будет эффективным, а
эффективность – это то, для чего мы всё это делаем. В такой ситуации больше в
результат войдет мнение одного человека, а не команды.
Не выделяться из толпы
153
Лекция 5, ч.2. Планирование
Story Points
Одна из самых важных сторон методологии Scrum – так называемые Story Points. Эта
сторона очень плотно интегрирована в Scrum совместно с технологией Planning Poker.
Самая частая проблема в работе Scrum Team – это неумение правильно оценивать
сложность работы и временные затраты на её выполнение.
154
Лекция 5, ч.2. Планирование
Когда Scrum Team способна оценивать свою работу, ведет график Velocity, следит за
Диаграммой сгорания задач, рано или поздно (или с самого начала работы) абсолютно
все оценки будут вестись в Story Points.
Ретроспектива спринта
155
Лекция 5, ч.2. Планирование
156
Лекция 5, ч.2. Планирование
Sprint Review Meeting проводится в конце каждого спринта и носит обзорный характер.
На встрече команда оценивает то, что она сделала, и ,чаще всего, это выглядит в виде
демонстрации новых возможностей.
В ходе Sprint Review Meeting проект оценивается в отношении цели спринта, которая
была определена во время планирования. В идеале, команда выполнила все задачи
из Product Backlog, помещенные в Sprint, но это не самое важное, а важно то, что была
достигнута цель спринта.
Один созданный пример на всю базу знаний можно и упомянуть здесь. Разработка
интернет магазина, описываемая в разных статьях нашей Info Base, само собой
разумеется, имеет спринты, а спринты имеют Sprint Review Meeting.
157
Лекция 5, ч.2. Планирование
Имея данный Product Backlog, в Sprint были добавлены задачи из первого релиза. А
точнее, мы имеем задачи:
1. Добавление продукта.
2. Удаление продукта.
3. Оплата - наложенный платеж.
4. Оплата - оплата с помощью карт Visa и Mastercard.
158
Лекция 5, ч.2. Планирование
159
Лекция 5, ч.3. Отчетность
Отчётность
Отчётность - сбор и распространение информации о результатах работы (включая
текущий статус, оценку прогресса и прогноз развития ситуации).
160
Лекция 5, ч.3. Отчетность
161
Лекция 5, ч.3. Отчетность
Для того, чтобы отчёт о результатах тестирования был действительно полезным, при
его создании следует постоянно помнить об универсальной логике отчётности:
Краткими.
Информативными.
Краткими.
Реально выполнимыми.
162
Лекция 5, ч.3. Отчетность
Definition of Done
Вы это уже сделали?
Что отвечать на такой вопрос рядовому сотруднику? Варианта два, но и два пути,
которые данному работнику могут и не понравиться. Если он отвечает «да», то это
означает, что он может взять еще работу на исполнение, а потом окажется, что ему
нужно доделать старую. Также если он отвечает «нет», то его могут посчитать
медлительным и он тормозит процесс.
Такой вопрос обычно задается бесчисленное количество раз при разработке какого-
либо программного продукта, да и, в целом, во время рабочего процесса. В этих
моментах, как и в любых других, должна быть оптимизация способная
минимизировать или исключить полностью негативные стороны этого процесса.
Вообще, понимание выражения "Definition of Done" в полной мере понятна людям,
знакомыми с философией Scrum. Определенно сделанная задача – это та задача,
которая не нуждается в доработках, но тут встает законный вопрос: "А как оценить, что
задача действительно выполнена?"
Как может показаться изначально, вопрос так себе. Ну что значит "как оценить?"
Выполнена - значит, выполнена, не выполнена - значит ,не выполнена.
163
Лекция 5, ч.3. Отчетность
лаконично, поэтому зачастую отводится для этого одно предложение, однако это не
единственный вариант.
164
Лекция 5, ч.3. Отчетность
Как видно, любое описание начинается с “done=”, что дает понять, на что обращать
внимание. Вообще, в листе принято писать такие результаты, которые можно
проверить. Нет смысла описывать мысли, ведь, скажем, «done = придуман внешний
вид интерфейса корзины» звучит странно и никак это проверить нельзя.
165
Лекция 5, ч.3. Отчетность
В заключении, хочется сказать, что не стоит пренебрегать Definition of Done, ведь это
приводит не только к осознанию того, что было сделано, но и к тому, как это нужно
сделать в будущем. Благодаря использованию Definition of Done все будут стараться
делать задачи более четкими и конкретными, чтобы потом гордо сказать: «Точно
сделано!». Помимо этого, набор рейтинга в Velocity будет гораздо выше.
166
Лекция 5, ч.3. Отчетность
Как может показаться на первый взгляд, данная диаграмма сгорания задач / Burndown
chart служит всего лишь для самоконтроля и самоотчета, однако ее использование
может рассказать об очень многом.
167
Лекция 5, ч.3. Отчетность
Одной из возможных причин здесь может быть постоянное добавление новых задач во
время спринта, что увеличило нагрузку.
168
Лекция 5, ч.3. Отчетность
Может быть даже команда и работала, только забыла или не захотела использовать
диаграмму сжигания задач, что является прямо сказать дурным тоном и противоречит
эффективной работе. Команда не может контролировать себя, не может
совершенствоваться и так далее.
169
Лекция 5, ч.3. Отчетность
170
Лекция 5, ч.3. Отчетность
171
Лекция 5, ч.3. Отчетность
Этот пример диаграммы сгорания задач уже значительно лучше, нежели другие, ведь
в нем можно увидеть, как усовершенствовать команду. Возможные проблемы здесь
такие же, как и в пункте «Слишком рано», но Scrum Team решили не заканчивать
Sprint раньше, а более расслаблено продолжить работу, что также является ошибкой.
172
Лекция 5, ч.3. Отчетность
Еще одной причиной, к примеру, может быть то, что команда брала дополнительные
задачи.
173
Лекция 5, ч.3. Отчетность
На лицо опытная группа, которая, после начала работы, сразу исправляет все
возникающие трудности и совершенствуется так, что резко переходит к активному
сжиганию.
174
Лекция 5, ч.3. Отчетность
Бесконечно можно смотреть на три вещи: как горит огонь, как течет вода и как строится
идеальный график =).
175
Лекция 5, ч.3. Отчетность
количеством тестов).
176
Лекция 6, ч.1. Архитектура клиент-сервер
Архитектура клиент-сервер
Веб-приложение – это клиент-серверное приложение, в котором клиентом выступает
браузер, а сервером – веб-сервер (в широком смысле).
177
Лекция 6, ч.1. Архитектура клиент-сервер
Клиент – это браузер, но встречаются и исключения (в тех случаях, когда один веб-
сервер (ВС1) выполняет запрос к другому (ВС2), роль клиента играет веб-сервер ВС1).
В классической ситуации (когда роль клиента выполняет браузер) для того, чтобы
пользователь увидел графический интерфейс приложения в окне браузера, последний
должен обработать полученный ответ веб-сервера, в котором будет содержаться
информация, реализованная с применением HTML, CSS, JS (самые используемые
технологии). Именно эти технологии «дают понять» браузеру, как именно необходимо
«отрисовать» все, что он получил в ответе.
178
Лекция 6, ч.1. Архитектура клиент-сервер
179
Лекция 6, ч.1. Архитектура клиент-сервер
Двухзвенная архитектура проще, так как все запросы обслуживаются одним сервером,
но именно из-за этого она менее надежна и предъявляет повышенные требования к
производительности сервера.
Клиент-серверные технологии
Архитектура клиент-сервер применяется в большом числе сетевых технологий,
используемых для доступа к различным сетевым сервисам.
Типы сервисов:
Web-серверы
Серверы приложений
Файл-серверы
180
Лекция 6, ч.1. Архитектура клиент-сервер
Прокси-сервер
Файрволы (брандмауэры)
Почтовые серверы
Для доступа к тем или иным сетевым сервисам используются клиенты, возможности
которых характеризуются понятием «толщины». Оно определяет конфигурацию
оборудования и программное обеспечение, имеющиеся у клиента. Рассмотрим
возможные граничные значения:
«Тонкий» клиент
«Толстый» клиент
181
Лекция 6, ч.1. Архитектура клиент-сервер
Сетевые протоколы:
TCP/IP — набор протоколов передачи данных, получивший название от двух
принадлежащих ему протоколов: TCP (англ. Transmission Control Protocol) и IP (англ.
Internet Protocol).
182
Лекция 6, ч.1. Архитектура клиент-сервер
SMTP (Simple Mail Transfer Protocol) — протокол, который задает набор правил
для передачи почты.
183
Лекция 6, ч.2. Тестирование web
Тестирование web
Тестирование веб приложений включает:
Функциональное тестирование.
Тестирование безопасности.
Нагрузочное тестирование.
Кроссбраузерное тестирование.
Требования.
Бизнес-процессы.
184
Лекция 6, ч.2. Тестирование web
Виды уязвимостей
Наиболее распространенными видами уязвимости в безопасности программного
обеспечения являются:
185
Лекция 6, ч.2. Тестирование web
Сами по себе XSS атаки могут быть очень разнообразными. Злоумышленники могут
попытаться украсть ваши куки, перенаправить вас на сайт, где произойдет более
серьезная атака, загрузить в память какой-либо вредоносный объект и т.д., всего
навсего разместив вредоносный скрипт у вас на сайте. В качестве примера можно
рассмотреть следующий скрипт, выводящий на экран ваши куки:
<script>alert(document.cookie);</script>
<script>window.parent.location.href='[[[[[[[http://hacker\_site';</script>\]\
(http://hacker\_site\]\(http://hacker\_site\]\(http://hacker\_site\]\
(http://hacker\_sitehttp://hacker\_site\]\(http://hacker\_site\]\(http://hacker\_site\)';\[/script>\]\
(http://hacker\_site\]\(http://hacker\_site\)';</script>\\]\(\[http://hacker\\_site\\)';</script>\\]\
(http://hacker\_site\)';</script\]\(/script>\]\(http://hacker\_site\]\(http://hacker\_site\)';
</script>\]\(\[http://hacker\_site\)';</script>\]\(http://hacker\_site\)';</script>\]\(';</script\)\)\]\
(http://hacker\_site\]\(http://hacker\_site/script>\]\(http://hacker\_site\]\(http://hacker\_site\]\
(http://hacker\_site\]\(http://hacker\_sitehttp://hacker\_site\]\(http://hacker\_site\]\
(http://hacker\_site\)';\[/script>\]\(http://hacker\_site\]\(http://hacker\_site\)';
</script';http://hacker\_site\)http://hacker\_site\)\]\(\[/script\]\(/script>\]\(http://hacker\_site\]\
(http://hacker\_site\)';</scripthttp://hacker\_site\)';</script>\]\
(http://hacker\_site\)http://hacker\_site\)';\[/script>\]\(http://hacker\_site\]\
(http://hacker\_site\]\(http://hacker\_site\]\(http://hacker\_sitehttp://hacker\_site\]\
(http://hacker\_site\]\(http://hacker\_site\)';\[/script>\]\(http://hacker\_site\]\
(http://hacker\_site\)';</script\]\(/script>\]\(http://hacker\_site\]\(http://hacker\_site\]\
(http://hacker\_site\]\(http://hacker\_sitehttp://hacker\_site\]\(http://hacker\_site\]\
(http://hacker\_site\)';\[/script>\]\(http://hacker\_site\]\
186
Лекция 6, ч.2. Тестирование web
(http://hacker\_site\)';http://hacker\_site\)http://hacker\_site\)\]\(\[http://hacker\_site\]\
(http://hacker\_site\)';</script\]\(/script\]\(/script>\]\(http://hacker\_site\]\
(http://hacker\_site\)http://hacker\_site\)';</script>\]\(http://hacker\_site\)';</script>\]\(';
</script\)\)\]\(';</script\)\]\(\[';</script>\]\(';\[/script\]\(/script>\]\(';</script\)\]\(\[';</script>\]\(';
</script>\]\(';</script\)\)\)\\]
(http://hacker_site';/script>]%28http://hacker_site]%28http://hacker_site]%28http://hacker_
site]%28http://hacker_sitehttp://hacker_site]%28http://hacker_site]%28http://hacker_site%29
';[/script>]%28http://hacker_site]%28http://hacker_site%29';
</script]%28[http://hacker\_site\%29';
</script>]%28http://hacker_site%29';/script]%28/script>]%28http://hacker_site]%28http://h
acker_site%29';</script]%28[http://hacker_site%29';</script>]%28http://hacker_site%29';
</script>]%28';/script%29%29]%28http://hacker_site]%28http://hacker_site/script>]%28htt
p://hacker_site]%28http://hacker_site]%28http://hacker_site]%28http://hacker_sitehttp://hack
er_site]%28http://hacker_site]%28http://hacker_site%29';
[/script>]%28http://hacker_site]%28http://hacker_site%29';
</script';http://hacker_site%29http://hacker_site%29]%28[/script]%28/script>]%28http://ha
cker_site]%28http://hacker_site%29';</scripthttp://hacker_site%29';
</script]%28http://hacker_site%29http://hacker_site%29';
[/script>]%28http://hacker_site]%28http://hacker_site]%28http://hacker_site]%28http://hac
ker_sitehttp://hacker_site]%28http://hacker_site]%28http://hacker_site%29';
[/script>]%28http://hacker_site]%28http://hacker_site%29';/script]%28/script>]%28http://
hacker_site]%28http://hacker_site]%28http://hacker_site]%28http://hacker_sitehttp://hacker_
site]%28http://hacker_site]%28http://hacker_site%29';
[/script>]%28http://hacker_site]%28http://hacker_site%29';http://hacker_site%29http://hack
er_site%29]%28[http://hacker_site]%28http://hacker_site%29';
</script]%28/script]%28/script>]%28http://hacker_site]%28http://hacker_site%29http://hac
ker_site%29';</script]%28http://hacker_site%29';</script>]%28';</script%29%29]%28';
</script%29]%28[';</script>]%28';[/script]%28/script>]%28';</script%29]%28[';</script>]%28';
</script>]%28';</script%29%29%29\));
187
Лекция 6, ч.2. Тестирование web
(http://hacker\_site"http://hacker\_site">\]\(http://hacker\_site">\)\[/object>\]\
(http://hacker\_site"\]\(/object>\]\(http://hacker\_site"\)\]\(\[http://hacker\_site">\)\
[/object>\]\(http://hacker\_site"\]\(/object>\]\(http://hacker\_site"\)\)http://hacker\_site">\)\
[/object>\]\(http://hacker\_site"\]\(/object>\]\(http://hacker\_site"\)\)\]\(\]\
(http://hacker\_site">\)\[/object>\]\(http://hacker\_site"\]\(/object>\]\(http://hacker\_site"\)\]\
(\[http://hacker\_site">\]\(http://hacker\_site">\]\(http://hacker\_site">/object>\]\
(http://hacker\_site"http://hacker\_site">\]\(http://hacker\_site">\)\[/object>\]\
(http://hacker\_site"\]\(/object>\]\(http://hacker\_site"\)\]\(\[http://hacker\_site">\)\
[/object>\]\(http://hacker\_site"\]\(/object>\]\(http://hacker\_site"\)\)\]\
(http://hacker\_site">\]\(http://hacker\_site">\]\(http://hacker\_site">/object>\]\
(http://hacker\_site"http://hacker\_site">\]\(http://hacker\_site">\)\[/object>\]\
(http://hacker\_site"\]\(/object>\]\(http://hacker\_site"\)\]\(\[http://hacker\_site">\)\
[/object>\]\(http://hacker\_site"\]\(/object>\]\(http://hacker\_site"\)\)\)</object>\]\(\
[http://hacker\_site">\)\[/object>\]\(http://hacker\_site"\]\(/object>\]\
(http://hacker\_site"\)\)\]\(\]\(http://hacker\_site">\)\[/object>\]\(http://hacker\_site"\]\
(/object>\]\(http://hacker\_site"\)\)\]\(\)</object>\)\)\</object>\]\(</object>\)\]\(\\]
(http://hacker_site">/object>]%28http://hacker_site"]%28http://hacker_site">]%28http://hac
ker_site">]%28http://hacker_site">/object>]%28http://hacker_site"http://hacker_site">]%28
http://hacker_site">%29[/object>]%28http://hacker_site"]%28/object>]%28http://hacker_
site"%29]%28[http://hacker_site">%29[/object>]%28http://hacker_site"]%28/object>]%2
8http://hacker_site"%29%29</object>]%28http://hacker_site">%29[/object>]%28http://hac
ker_site"]%28/object>]%28http://hacker_site"%29%29]%28</object>%29]%28http://hacke
r_site">]%28http://hacker_site">/object>]%28http://hacker_site"http://hacker_site">]%28htt
p://hacker_site">]%28http://hacker_site">/object>]%28http://hacker_site"http://hacker_site"
>]%28http://hacker_site">%29[/object>]%28http://hacker_site"]%28/object>]%28http://h
acker_site"%29]%28[http://hacker_site">%29[/object>]%28http://hacker_site"]%28/object&
gt]%28http://hacker_site"%29%29http://hacker_site">%29[/object>]%28http://hacker_site"]
%28/object>]%28http://hacker_site"%29%29]%28]%28http://hacker_site">%29[/object>]
%28http://hacker_site"]%28/object>]%28http://hacker_site"%29]%28[http://hacker_site">]
%28http://hacker_site">]%28http://hacker_site">/object>]%28http://hacker_site"http://hack
er_site">]%28http://hacker_site">%29[/object>]%28http://hacker_site"]%28/object>]%28
http://hacker_site"%29]%28[http://hacker_site">%29[/object>]%28http://hacker_site"]%28/
object>]%28http://hacker_site"%29%29]%28http://hacker_site">]%28http://hacker_site">]
%28http://hacker_site">/object>]%28http://hacker_site"http://hacker_site">]%28http://hack
er_site">%29[/object>]%28http://hacker_site"]%28/object>]%28http://hacker_site"%29]
%28[http://hacker_site">%29[/object>]%28http://hacker_site"]%28/object>]%28http://hac
ker_site"%29%29%29</object>]%28[http://hacker_site">%29[/object>]%28http://hacker_si
te"]%28/object>]%28http://hacker_site"%29%29]%28]%28http://hacker_site">%29[/object
>]%28http://hacker_site"]%28/object>]%28http://hacker_site"%29%29]%28%29</object
>%29%29\</object>]%28</object>%29]%28\));
188
Лекция 6, ч.2. Тестирование web
Наиболее частыми CSRF атаками являются атаки использующие HTML <IMG> тэг или
Javascript объект image. Чаще всего, атакующий добавляет необходимый код в
электронное письмо или выкладывает на веб-сайт таким образом, что, при загрузке
страницы осуществляется запрос, выполняющий вредоносный код. Примеры:
IMG SRC
<img src="[[[[[[http://hacker_site/?command">](http://hacker_site/?command">]
(http://hacker_site/?command">](http://hacker_site/?command">)](http://hacker_site/?
command">](http://hacker_site/?command">](http://hacker_site/?command">]
(http://hacker_site/?command">))](http://hacker_site/?command">](http://hacker_site/?
command">](http://hacker_site/?command">](http://hacker_site/?command">)]
(http://hacker_site/?command">](http://hacker_site/?command">](http://hacker_site/?
command">](http://hacker_site/?command">)))\](http://hacker_site/?command">]
(http://hacker_site/?command">](http://hacker_site/?command">](http://hacker_site/?
command">)](http://hacker_site/?command">](http://hacker_site/?command">]
(http://hacker_site/?command">](http://hacker_site/?command">))](http://hacker_site/?
command">](http://hacker_site/?command">](http://hacker_site/?command">]
(http://hacker_site/?command">)](http://hacker_site/?command">](http://hacker_site/?
command">](http://hacker_site/?command">](http://hacker_site/?command">)))\)]
(http://hacker_site/?command">](http://hacker_site/?command">](http://hacker_site/?
command">](http://hacker_site/?command">)](http://hacker_site/?command">]
(http://hacker_site/?command">](http://hacker_site/?command">](http://hacker_site/?
command">))](http://hacker_site/?command">](http://hacker_site/?command">]
(http://hacker_site/?command">](http://hacker_site/?command">)](http://hacker_site/?
command">](http://hacker_site/?command">](http://hacker_site/?command">]
(http://hacker_site/?command">)))](http://hacker_site/?command">](http://hacker_site/?
command">](http://hacker_site/?command">](http://hacker_site/?command">)]
(http://hacker_site/?command">](http://hacker_site/?command">](http://hacker_site/?
command">](http://hacker_site/?command">))](http://hacker_site/?command">]
(http://hacker_site/?command">](http://hacker_site/?command">](http://hacker_site/?
command">)](http://hacker_site/?command">](http://hacker_site/?command">]
(http://hacker_site/?command">](http://hacker_site/?command">)))))\\);
SCRIPT SRC
189
Лекция 6, ч.2. Тестирование web
<script src="[[[[[[http://hacker_site/?command">](http://hacker_site/?command">]
(http://hacker_site/?command">](http://hacker_site/?command">)](http://hacker_site/?
command">](http://hacker_site/?command">](http://hacker_site/?command">]
(http://hacker_site/?command">))](http://hacker_site/?command">](http://hacker_site/?
command">](http://hacker_site/?command">](http://hacker_site/?command">)]
(http://hacker_site/?command">](http://hacker_site/?command">](http://hacker_site/?
command">](http://hacker_site/?command">)))\](http://hacker_site/?command">]
(http://hacker_site/?command">](http://hacker_site/?command">](http://hacker_site/?
command">)](http://hacker_site/?command">](http://hacker_site/?command">]
(http://hacker_site/?command">](http://hacker_site/?command">))](http://hacker_site/?
command">](http://hacker_site/?command">](http://hacker_site/?command">]
(http://hacker_site/?command">)](http://hacker_site/?command">](http://hacker_site/?
command">](http://hacker_site/?command">](http://hacker_site/?command">)))\)]
(http://hacker_site/?command">](http://hacker_site/?command">](http://hacker_site/?
command">](http://hacker_site/?command">)](http://hacker_site/?command">]
(http://hacker_site/?command">](http://hacker_site/?command">](http://hacker_site/?
command">))](http://hacker_site/?command">](http://hacker_site/?command">]
(http://hacker_site/?command">](http://hacker_site/?command">)](http://hacker_site/?
command">](http://hacker_site/?command">](http://hacker_site/?command">]
(http://hacker_site/?command">)))](http://hacker_site/?command">](http://hacker_site/?
command">](http://hacker_site/?command">](http://hacker_site/?command">)]
(http://hacker_site/?command">](http://hacker_site/?command">](http://hacker_site/?
command">](http://hacker_site/?command">))](http://hacker_site/?command">]
(http://hacker_site/?command">](http://hacker_site/?command">](http://hacker_site/?
command">)](http://hacker_site/?command">](http://hacker_site/?command">]
(http://hacker_site/?command">](http://hacker_site/?command">)))))\\);
<
script
>
<
/script
>
190
Лекция 6, ч.2. Тестирование web
Форма входа в систему имеет 2 поля имя и пароль. Обработка происходит в базе
данных через выполнение SQL запроса:
SELECT Username
FROM Users
WHERE Name = 'tester'
AND Password = 'testpass';
testpass' OR '1'='1
SELECT Username
FROM Users
WHERE Name = 'tester'
AND Password = 'testpass' OR '1'='1';
Условие '1'='1' всегда будет истинным и поэтому SQL запрос всегда будет возвращать
много значений.
Authorization Bypass
Вывод
191
Лекция 6, ч.2. Тестирование web
192
Лекция 6, ч.2. Тестирование web
Кросс-браузерное тестирование
Кросс-браузерное тестирование представляет собой процесс тестирования веб-
приложений в нескольких браузерах.
В настоящее время пользователи имеют широкий выбор браузеров для доступа к веб-
приложениям, поэтому в современных условиях стало крайне важным выполнять
кросс-браузерное тестирование. В разных браузерах компоненты приложений могут
вести себя по-разному.
Из-за разной работы браузеров или ошибок, допущенных в нем, могут возникать
дефекты в Вашем продукте. Часто встречающиеся дефекты:
Верстка.
193
Лекция 6, ч.2. Тестирование web
Навигация.
Ошибки JavaScript.
Десктопные браузеры:
Chrome
Firefox
IE
Safari
Edge
Opera
Мобильные браузеры:
Chrome
Safari
UC Browser
Opera
Samsung Internet
Android
194
Лекция 6, ч.2. Тестирование web
Движки браузеров:
Edge - новый движок от компании Microsoft для браузера Microsoft Edge. Является
ответвлением Trident.
4. Microsoft Edge - это целая платформа для тестирования сайта в IE. Microsoft Edge
предоставляет виртуальную машину только для тестирования в IE7 и новее.
195
Лекция 6, ч.2. Тестирование web
196
Лекция 6, ч.2. Тестирование web
Инструменты разработчика
197
Лекция 6, ч.2. Тестирование web
198
Лекция 6, ч.2. Тестирование web
199
Лекция 6, ч.2. Тестирование web
URL-адрес запроса.
Метод запроса.
Удаленный IP-адрес и порт.
Код состояния.
HTTP-запросы и заголовки ответов, которые были отправлены.
200
Лекция 6, ч.2. Тестирование web
201
Лекция 6, ч.2. Тестирование web
202
Лекция 7, ч.1. Тестирование UI и верстки
Тестирование UI и верстки
UI (user interface — пользовательский интерфейс) — является точкой
взаимодействия человека и продукта. Дизайн кнопок, полей ввода и т.д. — это место,
где пользователь взаимодействует с системой. Таким образом, Вы можете сравнить UI
с рулем, педалями и приборной панелью автомобиля. Они используются для
управления автомобилем так же, как приложение использует UI (пользовательский
интерфейс) для управления системой. Короче говоря, дизайн пользовательского
интерфейса (UI) — это дизайн точек взаимодействия, через которые пользователь
может взаимодействовать с системой.
203
Лекция 7, ч.1. Тестирование UI и верстки
204
Лекция 7, ч.1. Тестирование UI и верстки
205
Лекция 7, ч.1. Тестирование UI и верстки
Ощущение, что мы получаем, когда едим бутерброд, можно считать UX, а ингредиенты
сэндвича ассоциируются с UI
206
Лекция 7, ч.1. Тестирование UI и верстки
207
Лекция 7, ч.1. Тестирование UI и верстки
Эффективность использования.
Запоминаемость.
208
Лекция 7, ч.1. Тестирование UI и верстки
навигация;
визуальное оформление;
навигация;
логичность.
Виды тестов:
209
Лекция 7, ч.1. Тестирование UI и верстки
Такой тип интерфейса, как было описано выше, называется также "полный WIMP-
интерфейс". Элементами интерфейса (элементами управления) становятся
примитивы графического пользовательского интерфейса, имеющие унифицированное
визуальное исполнение и выполняющие стандартные действия. Основополагающим в
графическом пользовательском интерфейсе становится визуализация информации,
т.е. предпочтение в использовании графических элементов вместо текстовой
информации (например, выбор пиктограммы программного приложения вместо поиска
его в списке имеющихся).
210
Лекция 7, ч.1. Тестирование UI и верстки
211
Лекция 7, ч.1. Тестирование UI и верстки
Android, Apple iOS, Windows Mobile, Palm OS, Symbian OS, BlackBerry OS. Ha рынке
России первую позицию занимает операционная система Android (50,65% рынка
декабрь 2014 г.), на втором месте находится iOS (43,59%), на третьем — Windows
Phone, которая становится все менее популярной (2,42%) . В рамках данной работы,
будем акцентировать внимание на программных продуктах, работающих на
платформе Android.
Именно поэтому бизнес все больше вливается в мобильную разработку и ищет ниши,
на которых можно заработать.
Если Вы хотите создать приложение для iOS или Android, то особое внимание нужно
уделить его юзабилити.
Юзабилити приложений Android или iOS очень важно для пользователей, например, я
удалю приложение, если мне не будет комфортно и удобно в нем работать. Какое бы
оно полезное ни было, я загружу аналог из Google Play.
212
Лекция 7, ч.1. Тестирование UI и верстки
юзабилити.
Цели теста.
Задачи, которые будет выполнять приложение.
Тестовые документы (форма содержания, сценарий ориентации, анкеты до и
после тестирования).
Участники теста.
Метод испытания.
213
Лекция 7, ч.1. Тестирование UI и верстки
Итак, как же установить цели? Майкл Марголис из Google Ventures предлагает задать
несколько вопросов заинтересованным сторонам приложения (в том числе и
разработчикам):
214
Лекция 7, ч.1. Тестирование UI и верстки
Как только цели будут установлены, настало время перейти к следующему этапу -
задачи. Формулировка должна состоять из взаимодействий, которые должны
выполняться пользователями, например:
Зарегистрировать аккаунт.
Войти в свой аккаунт.
Загрузить фото.
Принять запрос друга.
Как и при любой форме тестирования, очень важно выполнить сухой тест на
юзабилити, чтобы гарантировать, что выполнение задач в конечном итоге достигнет
поставленных целей.
Участники тестирования
215
Лекция 7, ч.1. Тестирование UI и верстки
персонажа.
216
Лекция 7, ч.2. Программное обеспечение, применяемое при тестировании UI
Программное обеспечение,
применяемое при тестировании UI
Для тестирования пользовательского интерфейса, в зависимости от поставленных
задач, можно ограничится такими программами, как Photoshop (путем наложения
существующей web-страницы на макет) и экранной линейкой, типа mySize, с помощью
которой можно легко узнать размеры элементов на экране монитора.
217
Лекция 7, ч.2. Программное обеспечение, применяемое при тестировании UI
218
Лекция 7, ч.2. Программное обеспечение, применяемое при тестировании UI
FitNesse:
219
Лекция 7, ч.2. Программное обеспечение, применяемое при тестировании UI
iMacros:
Это первый сервис, который я открыл для себя. Очень удобно спроектирован. Можно
посмотреть все варианты разрешений на одной странице.
220
Лекция 7, ч.2. Программное обеспечение, применяемое при тестировании UI
quirktools.com
221
Лекция 7, ч.2. Программное обеспечение, применяемое при тестировании UI
Deviceponsive
222
Лекция 7, ч.2. Программное обеспечение, применяемое при тестировании UI
Adobe BrowserLab
Browsershots
223
Лекция 7, ч.2. Программное обеспечение, применяемое при тестировании UI
IE Tester
Firefox, Web Developer Toolbar, вкладка Resize , пункт меню View Responsive Layouts.
224
Лекция 7, ч.2. Программное обеспечение, применяемое при тестировании UI
https://addons.mozilla.org/ru/firefox/addon/web-developer/
Плагин Web Developer Toolbar предоставляет веб-разработчику множество вариантов
для тестирования сайта. Среди них есть отдельная закладка Resize в которой можно
через Edit Resize Dimensios добавить расширений для изменения размера окна, или
нажав на View Responsive Layouts увидеть как ваш сайт будет отображаться для
наиболее популярных расширений.
Google Chrome
Основное расширение для Google Chrome - это Window Resizer и порядка 12 похожих
расширений.
225
Лекция 7, ч.2. Программное обеспечение, применяемое при тестировании UI
Resize Window
Viewport Resizer
Расширения, как правило, работают таким образом, что изменяют или размер browser
(разрешение), или размер viewport (внутри окна browser).
226
Лекция 8, ч.1. Интеграционное тестирование
Интеграционное тестирование
Интеграционное тестирование (в общем случае) - это вид тестирования, при
котором проверяется взаимодействие модулей между собой, а также интеграция
подсистем в одну общую систему.
1. Компонентный;
2. Системный.
227
Лекция 8, ч.1. Интеграционное тестирование
Данный подход считается полезным, если все (или практически все) модули
разрабатываемого уровня готовы. Также данный подход помогает определить уровень
готовности приложения по результатам тестирования.
Недостатком такого подхода является то, что приходится тестировать модули еще до
того, как будет реализована "главная" программа, что, соответственно, требует
технических навыков.
228
Лекция 8, ч.1. Интеграционное тестирование
Такой подход очень хорош для сохранения времени. Однако если тест кейсы и их
результаты записаны не верно, то сам процесс интеграции сильно осложнится, что
станет преградой для команды тестирования при достижении основной цели
интеграционного тестирования. Так же данный подход требует больше ресурсов, в
связи с его сложностью.
229
Лекция 8, ч.2. Тестирование API
Тестирование API
API (Application Programming Interface) расшифровывается как “интерфейс
прикладного программирования” или “интерфейс программирования приложений”. Он
позволяет осуществлять связь и обмениваться данными между двумя отдельными
модулями программы. Система программного обеспечения, реализующая API,
содержит функции/подпрограммы, которые могут быть выполнены с помощью другого
программного обеспечения.
Форматы данных
230
Лекция 8, ч.2. Тестирование API
{“name”:”JamesKirk”}
{“name”}
{”JamesKirk”}
“name”:”JamesKirk”,
"age":40
231
Лекция 8, ч.2. Тестирование API
Например:
XML является более громоздким форматов данных и все больше разработчиков API от
него отказываются.
Понятие HTTP
HTTP (Hyper Text Transfer Protocol) – широко распространённый протокол передачи
данных, изначально предназначенный для передачи гипертекстовых документов. По
умолчанию используется 80-ый порт.
Спецификация HTTP (и HTTPS) определяет то, как запросы к серверу должны быть
построены, и то, как сервер должен отвечать на эти запросы.
232
Лекция 8, ч.2. Тестирование API
Запросы HTTP
Клиент отправляет запрос на сервер в виде метода, URL и версии протокола, после
которого идет некоторое сообщение, которое и содержит данные запроса.
233
Лекция 8, ч.2. Тестирование API
Только
Может получать и Перезаписывает Удаляет
получает
отправлять данные существующий указанный
данные
ресурса ресурс ресурс
ресурса
Данные могут
Передает
Передает данные в Передает данные в передаваться в
данные в
теле запроса теле запроса теле и в URL
URL
запроса
Имеет
Нет
ограничение Нет ограничений по Нет ограничений по
ограничений по
на длину 255 длине длине
длине
символов
Можно
Можно использовать Можно использовать Можно
использовать
символы любой символы любой использовать
только
кодировки и кодировки и только
символы
передавать файлы передавать файлы символы ASCII
ASCII
Не
безопасен
(нельзя Более безопасен Более безопасен Не безопасен
передавать
пароли)
234
Лекция 8, ч.2. Тестирование API
В свою очередь, ответ сервера так же содержат заголовки. Эти значения могут
содержать информацию о софте сервера при последнем изменении страницы/файла
и прочее. Опять же, большинство этих headers на самом деле являются
необязательными.
Кроме этого, сервер отправляет так же код состояния (statuscode) ответа. Коды
состояния делятся на 5 групп:
1хх Информационные
2хх Успешные
3хх Перенаправление
4хх Ошибки клиента
Полный список кодов ошибок из каждой группы и их описание можно посмотреть тут.
235
Лекция 8, ч.2. Тестирование API
GET /api/users?page={page_number}
Как мы видим, в поле ниже мы получили ответ в формате JSON, который содержит 3
записи о пользователях.
POST /api/login
236
Лекция 8, ч.2. Тестирование API
PUT /api/users/{user_id}
237
Лекция 8, ч.2. Тестирование API
DELETE /api/users/{user_id}
238
Лекция 8, ч.2. Тестирование API
Понятие REST
REST (Representational state transfer) - подход к разработке клиент-серверных
приложений.
Клиент-серверными.
Взаимодействие между клиентом и сервером должно быть на HTTP.
Все операции над ресурсами указываются в самих запросах. В архитектуре REST
все данные являются "ресурсами" Все, что необходимо сделать с ресурсом в
архитектуре REST, несется в самом запросе.
Stateless – состояние клиента не сохраняется на сервере. Каждый раз, при
обращении клиента к серверу, сервер воспринимает клиента как нового. Для
аутентификации клиента на сервере могут использоваться cookies, например:
сookies предоставляет дополнительную информацию от клиента пользователю
(позиции в корзине пользователя в интернет-магазине).
Возможность работать с любыми форматами данных (json, xml, text…).
Понятие SOAP
SOAP (Simple Object Access Protocol) является стандартизированным протоколом
передачи сообщений между клиентом и сервером. Обычно он используется совместно
с HTTP(S), но может работать и с другими протоколами прикладного уровня
(например, SMTP и FTP).
239
Лекция 8, ч.2. Тестирование API
WSDL
(Web Services Description Language) – это язык на основе XML, который
используется для описания веб-сервисов. В WSDL-документе содержится информация
о местонахождении сервиса и доступных методах (операциях). Для каждого метода
определяются параметры отправляемого и получаемого сообщения. Обратите
внимание на то, что XSD может быть «встроен» внутрь WSDL-документа (например, у
Yandex Speller API).
240
Лекция 8, ч.2. Тестирование API
Проверяйте, что клик по одной и той же кнопке вызывает один и тот же запрос.
Вникайте в отправляемые запросы. Анализ запросов – это возможность
обнаружить спрятавшийся дефект гораздо быстрее, чем осуществляя его поиск в
интерфейсе.
Мониторьте трафик на предмет запросов на другие сервера.
Внимательно следите за кодами состояний
241
Лекция 8, ч.2. Тестирование API
скоростью.
Можно начать тестирование на ранних этапах, когда еще нет интерфейса
242
Лекция 8, ч.3. Программное обеспечение, применяемое при тестировании API
Программное обеспечение,
применяемое при тестировании API
Postman
Для начала необходимо нажать на иконку в правом углу, а затем выбрать Manage
Environments.
243
Лекция 8, ч.3. Программное обеспечение, применяемое при тестировании API
244
Лекция 8, ч.3. Программное обеспечение, применяемое при тестировании API
Составление запросов
Тело запроса формируется на вкладке Body. Здесь можно указать формат ввода
параметров тела запроса, например, так же указывать параметры в виде "Ключ-
Значение", JSON, XML, отправка файлов или даже обычный текстовый формат.
245
Лекция 8, ч.3. Программное обеспечение, применяемое при тестировании API
Ответы сервера отображаются чуть ниже запроса. Здесь так же можно отдельно
посмотреть хедеры, тело запроса, куки, время выполнения запроса и код HTTP-ответа.
246
Лекция 8, ч.3. Программное обеспечение, применяемое при тестировании API
SoapUI
Тестирование SOAP практически всегда подразумевает использование SoapUI.
Прочитать про использование этого инструмента можно в разных источниках (источник
1, источник 2), но эффективнее всего - ознакомиться с официальной документацией. К
тому же, SoapUI позволяет работать не только с SOAP, но и с REST API.
После этого проект будет готов к тестированию в виде загруженных запросов слева.
Для отправки запроса необходимо раскрыть список до уровня Request, заполнить
параметры в уже подготовленном XML файле запроса и отправить его, нажав на
кнопку . Ответ сервера будет отображен в правой части экрана.
SoapUI так же позволяет составлять Test Suites и Test Cases. Тест-комплекты и тест-
кейсы позволяют создавать сценарии тестирования API, подготавливать данные для
запросов и автоматически проверять полученный ответ на соответствие ожидаемому.
247
Лекция 8, ч.3. Программное обеспечение, применяемое при тестировании API
Fiddler
Fiddler - прокси, который работает с трафиком между Вашим компьютером и
удаленным сервером, и позволяет инспектировать и менять его. Использовать его
можно с любым браузером.
Для начала инспекции всех запросов, который отправляет браузер, необходимо просто
открыть его и дать команду "начать работу" в браузере параллельно. Вы увидите, что
каждый запрос, отправляемый браузером, отображается в окне запросов слева. Их
можно просматривать и выбирать запросы, смотреть их заголовки, сохранять их на
диск все вместе или по отдельности.
248
Лекция 8, ч.3. Программное обеспечение, применяемое при тестировании API
В Advanced Rest Client можно задавать множество параметров, как в режиме ввода
XML, JSON и др., так и в графическом режиме по каждому параметру поля.
249
Лекция 8, ч.3. Программное обеспечение, применяемое при тестировании API
250
Лекция 9, ч.1. Тестирование мобильных приложений
Формат apk (название файла.apk) имеют все установочные файлы приложений для
ОС Андроид.
Главные характеристики:
Поддержка медиа форматов: звук, видео, картинки (MPEG4, H.264, MP3, AAC,
AMR, JPG, PNG, GIF).
251
Лекция 9, ч.1. Тестирование мобильных приложений
Ipa файл - файл программы для установки на iOS. Система имеет встроенный
браузер Safari. Последняя версия ОС — iOS 11. Новая версия выходит раз в году.
Достоинства:
2. Все элементы должны быть такого размера, чтобы пользователь мог однозначно
попасть по ним.
252
Лекция 9, ч.1. Тестирование мобильных приложений
2. Ресурсы устройства:
253
Лекция 9, ч.1. Тестирование мобильных приложений
Проверка того, что все надписи входят в соответствующие формы, кнопки и т.п.
7. Обновления:
254
Лекция 9, ч.1. Тестирование мобильных приложений
255
Лекция 9, ч.1. Тестирование мобильных приложений
Простая разработка.
Легкий доступ.
Простое обновление.
256
Лекция 9, ч.1. Тестирование мобильных приложений
Простое распространение.
Встроенный браузер.
Особенности устройства.
257
Лекция 9, ч.1. Тестирование мобильных приложений
258
Лекция 9, ч.2. Программное обеспечение, применяемое при тестировании мобильных
приложений
Программное обеспечение,
применяемое при тестировании
мобильных приложений
Установка с PlayMarket.
Использование AirDroid.
AirDroid – это приложение только для ОС Android, которое позволит Вам подключить
Ваше устройство к компьютеру по беспроводной сети. Она работает почти так же, как
если бы Вы подключили Ваше устройство к компьютеру с помощью USB-кабеля, к
тому же, AirDroid располагает несколькими прекрасными функциями. Среди них,
например, удобная передача файлов и отправка SMS-сообщений.
2.iOS:
Testflight.
iTunes.
Xcode.
iTools.
259
Лекция 9, ч.2. Программное обеспечение, применяемое при тестировании мобильных
приложений
Catlog.
260
Лекция 9, ч.2. Программное обеспечение, применяемое при тестировании мобильных
приложений
iTunes.
Xcode.
QuickTime Player.
Screens - Home+Power.
**Xcode**
261
Лекция 9, ч.2. Программное обеспечение, применяемое при тестировании мобильных
приложений
Эмуляторы и симуляторы
Эмулятор - это программа, которая копирует (эмулирует) функции мобильного
устройства (или нескольких устройств) на ПК.
Android:
Genymotion.
BrowserStack.
iOS:
Xcode.
BrowserStack.
262
Лекция 9, ч.2. Программное обеспечение, применяемое при тестировании мобильных
приложений
iOS:
Xcode.
263
Лекция 9, ч.2. Программное обеспечение, применяемое при тестировании мобильных
приложений
BrowserStack.
iOS Simulator:
1. Установить Xcode.
264
Лекция 9, ч.2. Программное обеспечение, применяемое при тестировании мобильных
приложений
265
Лекция 10, ч.1. Базы данных и их разновидности
Виды:
Иерархическая.
Объектная и объектно-ориентированная.
Объектно-реляционная.
Реляционная.
Сетевая.
Функциональная.
266
Лекция 10, ч.1. Базы данных и их разновидности
Следует сказать, что базы данных подобного вида оптимизированы под чтение
информации, то есть базы данных, имеющие иерархическую структуру умеют очень
быстро выбирать запрашиваемую информацию и отдавать ее пользователям. Но
такая структура не позволяет столь же быстро перебирать информацию. Здесь можно
привести первый пример из жизни: компьютер может легко работать с каким-либо
конкретным файлом или папкой (которые, по сути, являются объектами иерархической
структуры), но проверка компьютера антивирусам осуществляется очень долго. Второй
пример – реестр Windows.
Такая модель баз данных, несмотря на то, что она существует уже много лет,
считается новой. И её создание открывает большие перспективы, в связи с тем, что
использование объектной модели баз данных легко воспринимается пользователем,
так как создается высокий уровень абстракции. Объектная модель идеально подходит
для трактовки такого рода объектных данных как изображение, музыка, видео, разного
вида текст.
267
Лекция 10, ч.1. Базы данных и их разновидности
Такую базу удобно представлять в виде двумерной таблицы (или, чаще всего,
нескольких связанных между собой таблиц).
Строки таблицы являются записями. Записи разбиты на поля. Каждая строка таблицы
содержит запись об одном единственном объекте, включая все его свойства.
В каждой таблице должно быть хотя бы одно ключевое поле, содержимое которого
уникально для любой записи в этой таблице. Значения ключевого поля однозначно
определяют каждую запись в таблице. В приведенном выше примере ключевым полем
может являться поле "Номер личного дела". Очень часто в качестве ключевого поля
используется поле, содержащее данные типа счетчик.
268
Лекция 10, ч.1. Базы данных и их разновидности
тем, что у дочернего элемента может быть несколько предков, то есть элементов
стоящих выше него. Для большей наглядности и понимания структуры сетевых баз
данных обратите внимание на изображение:
1. Классификация по содержимому
Примеры:
Географическая.
Историческая.
Научная.
Мультимедийная.
Клиентская.
269
Лекция 10, ч.1. Базы данных и их разновидности
SQL
SQL - язык структурированных запросов, основной задачей которого является
предоставление простого способа считывания и записи информации в базу данных.
270
Лекция 10, ч.1. Базы данных и их разновидности
СУБД
Большинство современных СУБД построено на реляционной модели данных. Для
получения информации из отношений (таблиц) базы данных в качестве языка
манипулирования данными в теоретическом плане используется язык SQL
SQL разработчики должны решить, какие типы данных будут храниться внутри каждого
столбца таблицы при создании таблицы SQL. Тип данных представляет собой метку и
ориентир для SQL, чтобы понять, какой тип данных, как ожидается, внутри каждого
столбца, а также определяет, как SQL будут взаимодействовать с хранимыми
данными.
271
Лекция 10, ч.1. Базы данных и их разновидности
272
Лекция 10, ч.1. Базы данных и их разновидности
273
Лекция 10, ч.2. Запросы на выборку и модификацию данных
Чаще всего, под SQL запросами понимается именно группа операторов манипуляции
данными. Каждая отдельно взятая СУБД поддерживает ту или иную группу SQL
запросов в разной мере/объеме, но, наибольшим образом, все они пересекаются
именно в реализации операций манипуляции данными. По этой причине будет
рассматриваться только эта группа команд: выбор, обновление, добавление и
удаление записей из таблиц.
Все запросы на получение практически любых данных из одной или нескольких таблиц
выполняются с помощью единственного предложения SELECT.
274
Лекция 10, ч.2. Запросы на выборку и модификацию данных
прямая черта (|) означает наличие выбора из двух или более возможностей.
Например, обозначение ASC|DESC указывает, можно выбрать один из терминов
ASC или DESC; когда же один из элементов выбора заключен в квадратные
скобки, то это означает, что он выбирается по умолчанию (так, [ASC]|DESC
означает, что отсутствие всей этой конструкции будет восприниматься как выбор
ASC);
275
Лекция 10, ч.2. Запросы на выборку и модификацию данных
FROM PC.
276
Лекция 10, ч.2. Запросы на выборку и модификацию данных
Следует отметить, что вертикальная выборка может содержать дубликаты строк в том
случае, если она не содержит потенциального ключа, однозначно определяющего
запись. В таблице PC потенциальным ключом является поле code, которое выбрано в
качестве первичного ключа таблицы. Поскольку это поле отсутствует в запросе, в
приведенном выше результирующем наборе имеются дубликаты строк (например,
строки 1 и 3). Если требуется получить уникальные строки (скажем, нас интересуют
только различные комбинации скорости процессора и объема памяти, а не
характеристики всех имеющихся компьютеров), то можно использовать ключевое
слово DISTINCT:
Помимо DISTINCT, может применяться также ключевое слово ALL (все строки),
которое принимается по умолчанию. Чтобы упорядочить строки результирующего
набора, можно выполнить сортировку по любому количеству полей, указанных в
предложении SELECT. Для этого используется предложение ORDER BY, являющееся
всегда последним предложением в операторе SELECT. При этом, в списке полей могут
указываться как имена полей, так и их порядковые позиции в списке предложения
SELECT. Так, если требуется упорядочить результирующий набор по объему
оперативной памяти в порядке убывания, можно записать:
FROM PC
Или
FROM PC
ORDER BY 2 DESC
277
Лекция 10, ч.2. Запросы на выборку и модификацию данных
FROM PC
278
Лекция 10, ч.2. Запросы на выборку и модификацию данных
279
Лекция 10, ч.2. Запросы на выборку и модификацию данных
Предикат в языке SQL может принимать одно из трех значений TRUE (истина), FALSE
(ложь) или UNKNOWN (неизвестно). Исключение составляют следующие предикаты:
NULL (отсутствие значения), EXISTS (существование), UNIQUE (уникальность) и
MATCH (совпадение), которые не могут принимать значение UNKNOWN.
280
Лекция 10, ч.2. Запросы на выборку и модификацию данных
SELECT * FROM PC
281
Лекция 10, ч.2. Запросы на выборку и модификацию данных
Например, запрос:
FROM PC
WHERE cd = '24x';
282
Лекция 10, ч.2. Запросы на выборку и модификацию данных
Все эти функции возвращают единственное значение. При этом, функции COUNT, MIN
и MAX применимы к любым типам данных, в то время как SUM и AVG используются
только для числовых полей. Разница между функцией COUNT(*) и COUNT() состоит в
том, что вторая при подсчете не учитывает NULL-значения.
FROM PC;
Иные операторы
Язык манипуляции данными (DML - Data Manipulation Language) помимо оператора
SELECT, осуществляющего извлечение информации из базы данных, включает
операторы, изменяющие состояние данных. Этими операторами являются:
Оператор INSERT.
Оператор INSERT вставляет новые строки в таблицу. При этом, значения столбцов
могут представлять собой литеральные константы либо являться результатом
выполнения подзапроса. В первом случае для вставки каждой строки используется
283
Лекция 10, ч.2. Запросы на выборку и модификацию данных
Синтаксис оператора:
| <выражение запроса>
| {DEFAULT VALUES};
Пусть требуется добавить в эту таблицу модель ПК 1157 производителя B. Это можно
сделать следующим оператором:
INSERT INTO Product (type, model, maker) VALUES ('PC', 1157, 'B');
284
Лекция 10, ч.2. Запросы на выборку и модификацию данных
Отметим, что здесь значения всех столбцов имеют значения по умолчанию (первые
два - NULL, а последний столбец - type - 'PC'). Теперь мы могли бы написать:
В этом случае, отсутствующее значение при вставке строки будет заменено значением
по умолчанию - 'PC'. Заметим, что если для столбца в операторе CREATE TABLE не
указано значение по умолчанию и не указано ограничение NOT NULL, запрещающее
использование NULL в данном столбце таблицы, то подразумевается значение по
умолчанию NULL.
285
Лекция 10, ч.2. Запросы на выборку и модификацию данных
UNION ALL
UNION ALL
Оператор UPDATE
UPDATE
| NULL
| DEFAULT},...}
[ {WHERE }];
С помощью одного оператора могут быть заданы значения для любого количества
столбцов. Однако в одном и том же операторе UPDATE можно вносить изменения в
каждый столбец указанной таблицы только один раз. При отсутствии предложения
WHERE будут обновлены все строки таблицы.
286
Лекция 10, ч.2. Запросы на выборку и модификацию данных
Если столбец допускает NULL-значение, то его можно указать в явном виде. Кроме
того, можно заменить имеющееся значение на значение по умолчанию (DEFAULT) для
данного столбца.
UPDATE Laptop
UPDATE Laptop
287
Лекция 10, ч.2. Запросы на выборку и модификацию данных
Оператор DELETE
WHERE screen
Все блокноты можно удалить с помощью оператора DELETE FROM Laptop или
TRUNCATE TABLE Laptop.
При помощи этого предложения можно выполнять соединения таблиц, что логически
заменяет использование подзапросов в предложении WHERE для идентификации
удаляемых строк.
Заметим, что предикат type='pc' необходим здесь, чтобы не были удалены также
модели принтеров и ПК-блокнотов.
288
Лекция 10, ч.2. Запросы на выборку и модификацию данных
Виды JOIN:
(INNER) JOIN возвращает записи, имеющие соответствующие значения в обеих
таблицах.
FULL (OUTER) JOIN возвращает все записи, когда есть совпадение в левой или
правой таблице.
289
Лекция 10, ч.2. Запросы на выборку и модификацию данных
290
Лекция 10, ч.2. Запросы на выборку и модификацию данных
Использование JOIN
Использование синтаксиса SQL JOINS при работе с базами данных достаточно
популярно, без них не обходится любой серьезный SQL запрос.
Предположим, что у нас есть две следующие таблицы. Слева Таблица A, и таблица B
справа. Поместим в каждой из них по 4 записи (строки).
Давайте соединим эти таблицы с помощью SQL join по столбцу "name" несколькими
способами и посмотрим, как это будет выглядеть на диаграммах Венна.
291
Лекция 10, ч.2. Запросы на выборку и модификацию данных
Full outer join (полное внешнее соединение - объединение) производит выбор всех
строк из таблиц А и В, причем со всеми возможными вариантами. Если с какой-либо
стороны не будет записи, то недостающая запись будет содержать пустую строку (null
значения).
Left outer join(левое внешнее соединение) производит выбор всех строк таблицы А с
доступными строками таблицы В. Если строки таблицы В не найдены, то
подставляется пустой результат (null).
292
Лекция 10, ч.2. Запросы на выборку и модификацию данных
293
Лекция 10, ч.2. Запросы на выборку и модификацию данных
294
Лекция 10, ч.2. Запросы на выборку и модификацию данных
295
Лекция 11, ч.1. Виртуальные машины
Виртуальные машины
Виртуальная машина – это программа, которая эмулирует реальный (физический)
компьютер со всеми его компонентами (жёсткий диск, привод,BIOS, сетевые адаптеры
и т.д.). На такой виртуальный компьютер можно установить, например, операционную
систему, драйверы, программы и т.д. Таким образом, Вы можете запустить на своем
реальном компьютере еще несколько виртуальных компьютеров с такой же или другой
операционной системой. Вы можете без проблем осуществить обмен данными между
вашим реальным и виртуальным компьютером.
296
Лекция 11, ч.1. Виртуальные машины
Безусловно, одной из самых серьезных проблем при разработке ПО является тот факт,
что на ранних этапах разработки и сборки программного продукта разработчики, в
процессе своей работы, могут причинить непоправимый вред системе (например,
различные драйвера устройств). Поэтому приходится планировать восстановление
операционных систем и их настроек после сбоев из резервных копий и тратить
значительное время на их восстановление.
Надо отметить еще одну проблему, которая довольно часто встречается при
разработке программного обеспечения и заставляет потратить значительное время на
ее решение. Всем программистам, имеющим опыт взаимодействия с командами
тестирования, известна следующая ситуация: в системе багтрекинга тестировщик
297
Лекция 11, ч.1. Виртуальные машины
фиксирует дефект, который программисту никак не удается повторить. После того, как
программист ставит статус проблемы как решенный, тестировщик зовет его к своей
машине и наглядно демонстрирует ошибку. В этой ситуации доходит до того, что
программисту приходится установить на машину тестировщика множество отладчиков
и прочей ненужной ерунды и «отлавливать» дефект, полностью останавливая работу
тестировщика. Если к этому прибавить время на удаление тестировщиком
программистских утилит, получаются серьезные потери времени команды.
298
Лекция 11, ч.1. Виртуальные машины
299
Лекция 11, ч.1. Виртуальные машины
300
Лекция 11, ч.1. Виртуальные машины
301
Лекция 11, ч.1. Виртуальные машины
После того, как тестовая виртуальная инфраструктура будет создана, можно настроить
параметры каналов связи между виртуальными машинами.
302
Лекция 11, ч.1. Виртуальные машины
303
Лекция 11, ч.1. Виртуальные машины
304
Лекция 11, ч.1. Виртуальные машины
305
Лекция 11, ч.1. Виртуальные машины
306
Лекция 11, ч.1. Виртуальные машины
307
Лекция 11, ч.1. Виртуальные машины
виртуальных систем, при этом процесс выглядит так, будто пользователь работает с
физическим компьютером. Модель работы виртуальной лаборатории представлена на
Рис. 11.6:
308
Лекция 11, ч.1. Виртуальные машины
Заключение
309
Лекция 11, ч.1. Виртуальные машины
310
Лекция 11, ч.2. Удаленные рабочие столы
311
Лекция 11, ч.2. Удаленные рабочие столы
После того, как фаза инициализации будет завершена, сервер начинает передавать на
компьютер (где установлен RDP-клиент) графический вывод. Затем сервер ожидает,
когда к нему поступят входные данные от устройств ввода-вывода (мышь и
клавиатура). Если говорить простым языком, то принцип работы RPD выглядит
следующим образом: пользователь при помощи мыши и клавиатуры управляет
компьютером удалённо.
Сегодня эта технология используется повсеместно. Она нужна, в первую очередь, для
того, чтобы управлять компьютерными системами. Также многие наработки этой
технологии используются и в робототехнике. Даже простейшая радиоуправляемая
игрушка основана на схожем принципе. Человеку, в руках которого находится пульт
управления, нужно использовать его, чтобы управлять движением радиоуправляемой
игрушки.
312
Лекция 11, ч.2. Удаленные рабочие столы
1. В целях администрирования.
2. В целях получения доступа к любому серверу приложений.
313
Лекция 11, ч.2. Удаленные рабочие столы
Многих пользователей интересует вопрос о том, какой порт использует RDP (RDP
сервер). Стандартный порт - это порт под номером 3389/TCP.
314
Лекция 11, ч.2. Удаленные рабочие столы
Удаленный рабочий стол Microsoft хорош тем, что для удаленного доступа компьютеру
с его помощью не требуется установка какого-либо дополнительного программного
обеспечения, при этом протокол RDP, который используется при доступе, в
достаточной мере защищен и хорошо работает.
315
Лекция 11, ч.2. Удаленные рабочие столы
TeamViewer
316
Лекция 11, ч.2. Удаленные рабочие столы
317
Лекция 11, ч.2. Удаленные рабочие столы
Подводя итог, TeamViewer — это тот вариант, который можно рекомендовать почти
всем, кому потребовалась бесплатная программа для удаленного рабочего стола и
управления компьютером в бытовых целях — в ней почти не придется разбираться,
так как все интуитивно понятно и она проста в использовании. Для коммерческих
целей придется покупать лицензию (в противном случае, Вы столкнетесь с тем, что
сессии будут разрываться автоматически).
318
Лекция 11, ч.2. Удаленные рабочие столы
319
Лекция 11, ч.2. Удаленные рабочие столы
AnyDesk
320
Лекция 11, ч.2. Удаленные рабочие столы
321
Лекция 11, ч.2. Удаленные рабочие столы
Remote Utilities, представленная на российском рынке как Удаленный доступ RMS (на
русском языке) — одна из самых мощных программ для удаленного доступа к
компьютеру. При этом бесплатна для управления до 10 компьютеров даже для
коммерческих целей.
322
Лекция 11, ч.2. Удаленные рабочие столы
Это далеко не все возможности RMS (Remote Utilities), если Вам требуется что-то
действительно функциональное для удаленного администрирования компьютеров и
бесплатно, то стоит попробовать этот вариант.
323