Когда и кто?
По мнению опытных разработчиков, тестирование программного продукта должно проводиться прям с самого начала его создания. Но при этом, сами опытные разработчики в тестировании не должны принимать участия, так как не царское это дело. Тестировать программный продукт должны специально обученные сотрудники, называемые тестировщиками, ибо даже самый опытный разработчик не сможет увидеть свою ошибку, даже с использованием самых новейших оптических приборов.
Тем не менее, все разработчики сходятся во мнении, что тестирование программного продукта с точки зрения классификации по целям должно делиться на два класса:
- Функциональное тестирование
- Нефункциональное тестирование
Что тестируют на разных этапах разработки
Есть несколько уровней тестирования. Их проводят в разное время:
- Модульное тестирование делается в самом начале, когда готовы те куски кода, которые можно проверить по отдельности: объекты, классы, функции, программные модули. Тесты пишутся отдельно для каждой функции или метода. На этом этапе проверяют работоспособность части кода, нет ли регрессии — не появились ли после изменения кода ошибки там, где раньше всё работало нормально. Это самый нижний уровень тестирования, часто это делают те, кто пишет код.
- К интеграционному тестированию переходят после модульной проверки. Здесь тестируют связи между проверенными элементами и то, как программа взаимодействует с операционной системой, оборудованием.
- Системное тестирование показывает, соответствует ли готовая система функциональным и нефункциональным требованиям.
- Приёмочное тестирование проходит, когда заказчик принимает приложения от разработчиков. Его цель — убедиться, что продукт удовлетворяет требованиям клиента. На основании этого покупатель решает, готова ли программа или её нужно дорабатывать.
В зависимости от этапа разработки перед тестировщиками стоят разные цели:
- Когда пишется код, нужно найти как можно больше сбоев и дефектов, чтобы их исправить.
- Во время приёмочного тестирования нужно показать заказчику, что система работает без ошибок.
- На этапе сопровождения программы тестирование помогает исправить баги, которые появились в коде после изменения.
Тест стабильности видеокарты OCCT
Следующий тест стабильно, который обитает на третьей вкладке, а именно GPU: OCCT, позволяет протестировать стабильность видеокарты, а именно, как уже говорилось, её графического процессора и памяти.
Поддерживается Crossfire и SLI, проверка и выявление множества ошибок при сильном прогреве в ходе нагрузок, а так же, при помощи специальной системы, определяются артефакты (искажения изображения). Можно делать тестирование при разном количестве шейдеров, FPS и всем остальным.
Здесь, собственно, выставляем следующее:
- Тип теста: авто
- Длительность теста: 1 час 0 минут
- Версия DirectX: если доступна, то 11, если нет, то 9, если нужно специфично протестироваться под какое-то приложение, то выбираем то значение, которое использует приложение;
- Разрешение: текущее, либо, если нужно специфично протестироваться под какое-то приложение, то выбираем то значение, которое использует приложение;
- Тип: полноэкранный (галочка);
- Проверка наличия ошибок: для первого теста обычно ставить нет необходимости, для второго (если проблема визуально сохраняется, но ошибки не найдены) есть смысл поставить галочку;
- Сложность шейдеров: в целом, этот параметр отвечает за количество операций выполняемых видеокартой за один проход (чаще всего выбирается максимально доступное значение, либо , если нужно специфично протестироваться под какое-то приложение, то выбираем то значение, которое использует приложение);
- Ограничитель: 0 (ноль), либо 60 (если используете вертикальную синхронизацию и нужно протестировать работу под неё).
Дальше остается только нажать на кнопочку ON и подождать часик (или меньше, если будет найдена ошибка, компьютер зависнет, выключится или проявит еще какие-то признаки перегрева и сбоя) пока будет идти сканирование системы. Об анализе результатов сказано в конце статьи.
Сам тест выглядит обычно, как на скриншоте выше. Запускается не сразу (см.периоды бездействия), может менять тип картинки (изображения). Существенные визуальные искажения (их сложно с чем-то перепутать) являются артефактами и свидетельствуют о проблемах с видеокартой, её памятью и чем-либо еще.
Что такое режим Rapid Mode и как он работает
Режим Samsung Rapid Mode позволяет значительно ускорить работу вашего жёсткого диска, когда речь идёт о многократно используемых данных. Здесь надо понимать несколько принципов использования памяти на ПК:
Постоянная память – это данные на диске. Длительное время основным хранилищем были HDD-винчестеры. Сейчас на смену им приходят SSD-диски: лёгкие, без движущихся частей и не подверженные таким простым повреждениям, как было с HDD. Кроме того, скорость чтения и записи на SSD в разы быстрее, чем на HDD. Те из вас, кто сменил старый диск на новый, заметили это изменение, когда ОС загружается всего за несколько секунд.
Оперативная память – это данные, которые нужны компьютеру «здесь и сейчас». Скорость этой памяти значительно выше самых быстрых SSD. Именно объём «оперативки» позволяет установить более мощную систему, работать с более сложными программами или играть в современные игры. Эта память каждый раз очищается при выключении ПК, в ней не хранится никаких данных на постоянной основе.
Технология Rapid Samsung позволяет взять часть неиспользуемой оперативной памяти и временно хранить там данные, которые могут понадобиться ПК. Увеличение скорости очень существенное, но пользователь не всегда может это заметить. Плюсов при активировании режима очень много, даже если они не видны невооружённым взглядом.
Преимущества и недостатки использования Rapid Mode
После включения режима можно провести тесты – специальными программами или просто переписав файлы. Цифры будут отличаться, но они в любом случае покажут ускорение SSD.
Первый вопрос, который у меня возник: нужно ли включать Samsung Rapid Mode? Не приводит ли это к износу диска или ПК, не уменьшает ли срок его работы? Как оказалось, здесь всё с точностью до наоборот. SSD работает до тех пор, пока не закончится лимит перезаписи его ячеек. После этого он включает режим «только чтение». Но включение режима уменьшает число циклов перезаписи диска, тем самым делая срок его работы больше. Для этого используется оперативная память, предназначенная для кэширования и доступа к данным с большой скоростью.
Кроме этого преимущества, существуют и другие:
- Ускорение чтения или записи файлов. Лучше всего работает с большим количеством маленьких файлов – ускорение порядка 50% и более. Но если вы захотите проверить скорость, переписав большие файлы по несколько гигабайт, то не заметите разницы. Это происходит тогда, когда они не помещаются в выделенный под Rapid Mode объём «оперативки».
- Ускорение работы операционной системы. Обычно она обменивается с диском большим количеством данных, запрашивает информацию из небольших файлов. Режим ускорения убыстряет этот процесс в разы – вот что такое Rapid Mode SSD Samsung.
Однако есть и явные «противопоказания», при которых включать режим не стоит:
Объём оперативной памяти до 2 Гб. Это информация из инструкции, а по факту лучше, когда объём ОЗУ составляет 8-16 Гб и выше. При значениях ниже может произойти дефицит «оперативки», что чревато зависаниями и сбоями.
- У вас стационарный ПК, или же ноутбук с нерабочей батареей. В этом случае решите «на свой страх и риск», стоит ли включать Samsung SSD Rapid Mode. При сбое питания весь объём ОЗУ стирается. Если там были ваши рабочие данные, они не сохранятся. Если там были системные файлы, то вам придётся восстанавливать или переустанавливать Windows.
- Ваш ПК или система склонна к сбоям. Здесь та же проблема, описанная в предыдущем пункте. При сбое ваша ОС может быть повреждена.
В чем ценность UI-тестирования для компании и пользователей
UI-тестирование обволакивает контролем качества два основных круга ответственности:
- Во-первых, берет под контроль то, как приложение реагирует на действия пользователя с клавиатуры, мыши и других устройств ввода.
- Во-вторых, исследует корректность отображения и срабатывания визуальных элементов.
UI-тестирование помогает гарантировать соответствие приложения функциональным требованиям, а также то, что пользователи смогут применять приложение в настоящей работе без рисков для дела. По этой причине тестирование пользовательского интерфейса играет важную роль перед релизом приложения.
Тестирование черного ящика против белого ящика
Тестирование черного ящика против белого ящика с точки зрения тестировщика
Существует множество различных типов тестирования программного обеспечения, каждый из которых специализируется на тестировании на определенные дефекты. Все типы тестирования в общих чертах можно охарактеризовать как тестирование черного или белого ящика. Это различие описывает базовые знания, необходимые тестировщику программного обеспечения.
Тестирование черного ящика : внутренняя структура программного обеспечения скрыта от тестера. Другими словами, тестер знает, что программный продукт должен делать, но не как достичь этого.
Тестировщик наблюдает только за результатами или поведением программирования и не должен быть самим программистом.
Этот тестировщик часто оказывается вне процесса разработки и высказывает постороннее мнение. Тестирование черного ящика в основном используется для тестирования поведения программы и оценки взаимодействия с пользователем.
Тестирование белого ящика: тестирование белого ящика противоположно тестированию черного ящика; тестировщик знает внутреннюю структуру программного обеспечения. Эти тестировщики оценивают логику программы в исходном коде, используя определенные входные данные тестового примера.
Отслеживая поток входных данных теста, тестировщик может проверить правильность обработки тестовых примеров за кулисами.
Тестировщики «белого ящика» часто являются программистами в процессе разработки и используются для проверки эффективности исходного кода.
Автоматизация против ручного тестирования
Другая важная категория методов тестирования — это ручное и автоматическое тестирование. Многие конкретные методики тестирования можно выполнить как вручную, так и с помощью автоматизации тестирования. Это различие описывает, как завершается тест.
Ручное тестирование:
При ручном тестировании человек-тестировщик играет роль конечного пользователя и проверяет тестовые примеры по одному. Это традиционная форма тестирования, при которой могут обнаруживаться проблемы, которые сложно распознать автоматизированными средами тестирования (внешний вид элемента веб-приложения, запутанный макет и т. Д.).
Тестирование автоматизации:
Автоматическое тестирование (или автоматизация тестирования) — это процесс использования программного обеспечения, называемого структурой тестирования, для создания автоматических тестовых примеров, которые сравнивают текущий вывод программы с ожидаемым результатом. Наиболее распространены фреймворки Selenium и Cucumber.
Два наиболее распространенных подхода к тестированию для автоматизированных сред тестирования — это тестирование графического пользовательского интерфейса, которое имитирует такие события пользовательского интерфейса, как щелчки или нажатия клавиш, и тестирование API, которые обходят пользовательский интерфейс для проверки базового поведения.
Автоматическое тестирование используется для быстрого выполнения тестов, ориентированных на результат, или для планирования повторных тестов для тестирования обслуживания.
Чек-лист для UI-тестирования: что тестировать в первую очередь
В этом разделе основные UI-тесты, которые помогут QA-инженерам тщательнее проводить тестирование интерфейсов. Кейсы охватывают различные аспекты интерфейса: изображения, цвет, контент страниц, навигацию, юзабилити.
- Типы данных. Убедитесь, что для определенных типов данных, таких как валюта и даты, можно вводить только допустимые значения.
- Ширина поля. Если определенное текстовое поле предназначено для определенного количества символов, укажите в пользовательском интерфейсе, что введенные данные не должны превышать границу по количеству символов. (Например, поле, которое позволяет использовать 50 символов в базе данных приложения, не должно позволять пользователям вводить более 50 символов в интерфейсе).
- Элементы навигации. Убедитесь, что все кнопки навигации на странице работают и перенаправляют пользователей на нужную страницу или экран.
- Индикаторы прогресса. Иногда приложению нужно время, чтобы выполнить порученную работу, в таких случаях используйте индикатор прогресса, он поможет понять, что работа все еще выполняется.
- Подсказки ввода. В выпадающем меню с сотнями элементов при вводе первой буквы должны остаться только те элементы, которые начинаются с этой буквы, так вы убережете пользователей от просмотра длинной портянки значений.
- Скролл таблиц. Когда данные из таблицы перетекают на следующую страницу, функция прокрутки должна позволять пользователям прокручивать данные, но не трогать все заголовки.
- Ведение журнала ошибок. Когда в системе возникает фатальная ошибка, убедитесь, что приложение записывает сведения об ошибке в специальный файл журнала для последующего просмотра.
- Пункты меню и режим. Убедитесь, что приложение отображает только те пункты меню, которые доступны в определенном режиме.
- Комбинации клавиш. Проверьте комбинации клавиш, правильно ли они работают, независимо от браузера, платформы или устройства.
- Кнопки подтверждения действий. Убедитесь, что пользовательский интерфейс имеет работающую кнопку подтверждения каждый раз, когда пользователь хочет сохранить или удалить элемент.
Очень важно. Тестируйте также сквозные процессы
Пользователи как бы нанимают продукт на помощь в определенном деле, поэтому тестировать нужно не только элементы интерфейса, а сценарии достижения целей.
Тестирование производительности
В ходе этапа тестирования производительности в первую очередь проводят нагрузочное тестирование, целью которого является проверка, будет ли система адекватно реагировать на внешние воздействия в режиме, близком к режиму реальной эксплуатации.
Кроме нагрузочного тестирования проводят испытания в условиях минимальных аппаратных средств и максимальной нагрузки – стрессовое тестирование, а также, испытания в условиях предельных объемов обрабатываемой информации – объемное тестирование.
Выделяют еще один вид тестирования: тестирование стабильности и надежности, которое включает в себя не только длительное испытание программного продукта в нормальных условиях, но и способность его возвращаться в нормальный режим функционирования после непродолжительных периодов стрессовых нагрузок.
Документация для тестирования
Как уже было указано выше, тестирование проводится в соответствии с программой и методикой испытаний, которая разрабатывается в соответствии с ГОСТ 34.603-92.
Для проведения тестирования разрабатывается контрольный пример, который должен содержать достаточно данных для проверки всех режимов работы программного продукта. Обычно, контрольный пример создается совместно заказчиком и исполнителем на основе реальных данных.
Для проведения всех видов тестирования производительности чаще всего создается так называемый генератор данных, который позволяет в автоматическом режиме создать достаточное количество данных, для достижения объективного результата при оценке производительности.
В ходе проведения тестирования составляется протокол тестирования, куда заносится информация о прохождении всех этапов и шагов тестирования и замечаниях полученных на испытаниях.
Если результат тестирования отрицательный, проводится устранение недостатков и повторное тестирование.
Что важно учесть при UI-тестировании
Тестировщики UI приложений сталкиваются с рядом нюансов при выполнении тестов пользовательского интерфейса. Вот некоторые из наиболее заметных историй:
- Постоянно меняющийся пользовательский интерфейс. Обычно приложения активно развиваются и обновляются, чтобы соответствовать новым требованиям рынка. При частом обновлении выполнение комплексных тестов пользовательского интерфейса становится сложной задачей. Особенно в веб- и мобильных приложения, где активно развита культура A/B тестирования небольших изменений верстки в UI.
- Возрастающая сложность тестирования. Современные приложения обладают значительной функциональностью: фреймы, блок-схемы, карты, диаграммы и другие комплексные элементы управления. Это делает тесты пользовательского интерфейса нелинейными.
- Тесты пользовательского интерфейса могут занимать много времени. Создание эффективных сценариев UI-тестирования интерфейса и выполнение самих тестов может занимать значительное время, особенно если тестировщик не использует подходящие инструменты.
- Сопровождение сценариев тестирования пользовательского интерфейса. По мере того как разработчики вносят изменения в пользовательский интерфейс, становится растет база тест-кейсов на сопровождении.
- Обработка множественных ошибок. При выполнении сложных тестов пользовательского интерфейса в сжатые сроки тестировщики тратят много времени на создание сценариев. В таких сценариях исправление ошибок в процессе тестирования становится проблемой.
- Вычисление рентабельности инвестиций для автоматизации тестирования пользовательского интерфейса. Так как пользовательский интерфейс развивается, меняются и тесты. Это увеличивает время, на тестирование пользовательского интерфейса и влияет на строки релизов. В конце концов, становится сложно рассчитать ROI для непрерывного выполнения тестов пользовательского интерфейса.
Нагрузочное тестирование
Нагрузочное тестирование — процесс анализа производительности тестируемой системы под воздействием нагрузок. Цель нагрузочного тестирования- определить способность приложения к внешним нагрузкам. Обычно испытания проводятся в несколько этапов.
1. Генерация тестовых сценариев
Для эффективного анализа сценарии должны быть наиболее близки к реальным сценариям использования
Важно понимать, что всегда возможны исключения, и даже самый подробный план тестирования может не покрыть отдельно взятого случая.. 2
Разработка тестовой конфигурации
2. Разработка тестовой конфигурации
Имея сценарии тестирования, важно распределить порядок возрастания нагрузки. Для успешного анализа необходимо выделить критерии оценки производительности (скорость отклика, время обработки запроса и т.д.).. 3
Проведение тестового испытания
3. Проведение тестового испытания
При проведении тестов важно своевременно следить за исполнением сценариев и откликом тестируемой системы. Для эмуляции высоких нагрузок требуется серьезная аппаратная и программная инфраструктура
В некоторых случаях для удешевления работ применяются методы математического моделирования. За основу берутся данные, полученные при низких нагрузках, и аппроксимируются. Чем выше уровень моделируемой нагрузки, тем ниже точность оценки. Однако подобный способ существенно сокращает расходы.
Функциональное тестирование
Под функциональным тестированием понимается проверка соответствия программного продукта функциональным требованиям, указанным в техническом задании на создание это продукта.
Если говорить проще, то при функциональном тестировании проверяется выполняет ли программный продукт все функции, которые должен.
Итак, Вы таки решились провести функциональное тестирование. Вы заглядываете в техническое задание, читаете функциональные требования и понимаете, что по крайней мере они расположены не в том порядке, в каком можно производить тестирование. Вы будете удивлены, что еще достаточно давно другие уже заметили это несоответствие и придумали как его преодолеть.
Для проведения функционального тестирования персоналом отдела технического контроля разрабатывается документ программа и методика испытаний функционала приложения (ПМИ). Документ ПМИ содержит перечень сценариев тестирования программного продукта (test cases) с подробным описанием шагов. Каждый шаг сценария тестирования характеризуется действиями пользователя (специалиста по тестированию) и ожидаемыми результатами – ответной реакции программы на эти действия. Программа и методика испытаний обязана имитировать эксплуатацию программного продукта в реальном режиме. Это означает, что сценарий тестирования должен быть построен на основе анализа операций, которые будут выполнять будущие пользователи системы, а не быть искусственно составленной последовательностью понятных только разработчику манипуляций.
Обычно, функциональное тестирование проводится на двух уровнях:
- Компонентное (модульное) тестирование. Тестирование отдельных компонентов программного продукта, сфокусированное на их специфике, назначении и функциональных особенностях.
- Интеграционное тестирование. Данный вид тестирования проводится после компонентного тестирования и направлен на выявление дефектов взаимодействия различных подсистем на уровне потоков управления и обмена данными.
Почему ручное тестирование не вымерло?
Да, автоматизация значительно сокращает время на тестирование определенных фич. Плюс есть вещи, которые просто невозможно проверить вручную. Но не стоит забывать и о ее стоимости. Не все продукты финансово могут потянуть автоматизацию. Да и не всегда требуется что-то автоматизировать.
Также вручную можно протестировать практически любое приложение, в то время как автоматизировать стоит только стабильные системы. То есть мы не можем, по крайней мере на сегодняшний день, автоматизировать все проверки.
Автоматизированное тестирование используется главным образом для регрессии. Кроме того, некоторые виды тестирования, например, исследовательское тестирование, могут быть выполнены только вручную.
Автоматизация начинается с ручного тестирования. То есть для того, чтобы начать процесс автоматизации тестирования, нужно точно знать, что и как вы собираетесь делать. Идеальный автотест базируется на ручном тест-кейсе с должным уровнем детализации.
________________________________
Ручное тестирование существует, так как невозможно автоматизировать все проверки и автоматизация не всегда финансово выгодна.
________________________________
На реальных проектах часто используется комбинация ручного и автоматизированного тестирования. Уровень автоматизации зависит от многих факторов: тип проекта, особенности постановки производственных процессов в компании, финансовых возможностей и т.п.
Как обычно проходит тестирование
Как правило, тестировщики начинают работать с программой сразу после начала проекта:
- Составляют тест-план, где описан весь объём работ по тестированию и определено, когда их можно закончить. Это примерный документ — в процессе разработки в него не раз внесут изменения: уточнят стратегию и виды тестирования, расписание работ и так далее.
- Разрабатывают тест-кейсы — перечень конкретных действий и сценарии для проверки каких-то определённых функций программы.
- Решают, нужна ли автоматизация: стоит ли разрабатывать и запускать автоматические тесты или можно обойтись тестированием вручную.
После выхода каждой новой сборки программы сначала делают дымовое тестирование — проверяют, что приложение запускается и выполняет основные функции. Если всё в порядке, программу передают на дальнейшее тестирование. Если нет — сразу возвращают на доработку.
Следующий этап — регрессионное тестирование. Тестировщики ищут баги в новых участках кода и в тех местах, где исправляли ранее найденные ошибки.
После этого программу проверяют в разных уровнях: испытывают её функциональность, производительность, работу с окружением. Это можно делать вручную или с помощью автоматических тестов-кейсов.
Автоматизированное тестирование облегчает проверку и экономит время. Лучше всего это работает в сложных приложениях с большой функциональностью.
Что такое UI-тестирование и в чем его польза?
Тестирование графического интерфейса пользователя или UI-тестирование — это процесс тестирования элементов управления в приложении, который помогает убедиться, что интерфейс соответствует ожидаемой производительности и функциональности. Задача UI-тестировщиков убедиться, что что в функциях пользовательского интерфейса отсутствуют дефекты.
UI-тестирование — это тестирование всех визуальных индикаторов и иконок, меню, переключателей, текстовых полей, флажков, панелей инструментов, цветов, шрифтов и других элементов управления и принятия решений в цифровой среде.
5 аспектов, которые изучает UI-тестирование:
- Визуальный дизайн
- Функциональность
- Юзабилити
- Производительность
- Согласованность
UI-тестирование выполняют вручную и с помощью автоматизированных методов. Цель UI-тестирования — обеспечить соответствие спецификации.