Рейтинг
0.00

Тестирование ПО

4 читателя, 37 топиков

Статическое тестирование кода (Static code analysis) используя метрику цикломатической сложности (cyclomatic complexity metric)

Обычно по статистике 20% кода вызывают 80% проблем, что образует эффект скопления багов в одном или нескольких связанных модулях приложения (defect clustering). Чтобы заранее обнаружить возможные баги, которые могут возникнуть при дальнейшем динамическом тестировании, мы можем статически тестировать код с помощью данной метрики.
Это очень полезная техника которая нам позволит определить число необходимых позитивных тестов, которые будут равны цикломатической сложности программы.

Вычисление цикломатической сложности (cyclomatic complexity metric) с помощью построения графа

Цикломатической сложность вычисляется легко, путем суммирования всех узлов таких как if, while, for и др. внутри и добавляя 1
Или по формуле
M = E − N + 2P,
где:
M = цикломатическая сложность,
E = количество рёбер,
N = количество узлов,
P = количество компонент связности.

К примеру проанализируем данный участок кода:
IF A = 100
THEN IF B > C
THEN A = B
ELSE A = C
ENDIF
ENDIF
Print A

Цикломатической сложность (cyclomatic complexity metric)
В данном случае исходя из формулы цикломатическая сложность будет равна 8 — 7 + (2 * 1) = 3

Читать дальше →

Критерии выхода, завершения тестирования (Exit criteria). Когда остановиться тестировать?

Критерии завершения тестирования это один из часто задаваемых вопросов на собеседованиях на должность тестровщика ПО. Давайте разберем какие же основные факторы влияют на принятие решения о завершении тестирования тестировщиком.

Часто новички в тестировании отвечают на данный вопрос — буду тестировать пока не найду все баги :)
А возможно ли это? Нет конечно, никто не может гарантировать отсутствие багов, даже если это приложение было протестировано несколькими опытными тестировщиками. Исчерпывающие тестирование невозможно и об этом гласит один из принципов тестирования

Следует выделить 3 основных критерия для остановки, завершения тестирования:
  • Время
  • Бюджет
  • Все тест кейсы пройдены, найденные баги исправлены и перепроверены
Критерии выхода из тестирования

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

Читать дальше →

Критерии качества требований программного обеспечения

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

Корректность
Бывает что в требованиях допускают ошибки при составлении таковых. Это можно обнаружить проанализировав требования целиком, найдя еще одно место где есть расхождения с предыдущим значением, к примеру некорректная необходимая процентная ставка по кредиту в банковском приложении, но если это место уникально то такую неточность тестировщику может оказаться распознать проблематично и только пользователь или тот кто детально введен в курс дела по точности данных, может распознать и исправить ее.
Корректность требований
Недвусмысленность
Точность формулировки в требованиях может по-разному интерпретироваться тестировщиками, разработчиками и другими участниками проекта. Проблема возникает из-за того что требования пишутся на «естественном языке» и разные члены команды, относящиеся к разным группам настолько привыкли к своей интерпретации слов или фразы что им уже сложно предстать что это для кого-то другого имеет совершенно другой смысл.
Полнота
Часто в требованиях забывают описать валидации на поля или единицы измерения в каких будет показываться значения или даже целые секции, которые могут быть пропущены по невнимательности.
Непротиворечие
Конфликты в описании одного и того же функционала в разных частях требований зачастую находятся посредством механического анализа. Одна часть требований может гласить что на какое-то действие нужно выполнять то-то, в тоже время как в другой части требований можно найти что та же самая функциональность должна выполнять что-то другое.

Читать дальше →

Что такое Юзкейс (Use Case) или "Сценарий Использования" в Тестировании ПО?

Юзкейс (Use Case) — это перечень действий, сценарий по которому пользователь взаимодействует с приложением, программой для выполнения какого-либо действия для достижения конкретной цели. Тестирование по юзкейсам проводится для того чтобы обнаружить дополнительные логические дыры и баги в приложении, которые сложно найти в тестировании индивидуальных модулей, частей приложения отдельно друг от друга. Юзкейс тестирование может проводится как часть Приемочного тестирования. Для удобства визуального восприятия Use Case часто рисуют в виде диаграмм с переходами.

Пример Юзкейсов (Use Cases)
для разных типов пользователей онлайновой системы:

Юзкейс

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

Читать дальше →

Что такое Верификация и Валидация (Verification and Validation) и различия между ними?

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

Validation and Verification

Для удобства сведем различия и определения в таблицу из двух колонок

Верификация

Валидация

  • Отвечает на вопрос правильно ли мы делаем продукт и все ли в соответствии с поставленными требованиями
  • Отвечает на вопрос делаем ли мы продукт правильно с точки зрения ожидания потребности пользователей или заказчика от нашего продукта
  • В процессе верификации убеждаемся что функционал нашего продукта работает правильно
  • В процессе валидации убеждаемся что функционал нашего приложения соответствует поведению которое ожидает и подразумевает от такого функционала пользователь или заказчик
  • Верификация включает в себя такие вещи как проверка соответствия требованиям, технической документации и корректности выполнения кода на каждом этапе цикла разработки и тестирования ПО
  • Валидация в большей степени включает в себя оценку продукта «в общем» и может включать в себя субъективную оценку насколько хорошо работает программа или приложение

Читать дальше →

Что такое Исследовательское Тестирование (Exploratory testing)?

Исследовательское Тестирование в тестировании ПО

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

Exploratory testing Исследовательское Тестирование

Эффективность Exploratory testing

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


Читать дальше →

Разница между QA (Quality Assurance) и QC (Quality Control)?

QA (Quality Assurance) — это совокупность мероприятий, охватывающих все этапы разработки ПО включая эксплуатацию и релиз, которые предпринимаются на разных статиях жизненного цикла ПО, главной целью которого является обеспечение качества выпускаемого продукта. QC — одно из мероприятий в QA.

QA и QC разница

QC (Quality Control) — это совокупность мероприятий, которые проводятся в процессе разработки ПО, для получения исчерпывающей информации о соответствии тестироемого продукта поставленным изначально требованиям. В QC входят Test Management, Test Analysis, Test Design и другие.

Какая очередность выполнения видов тестирования для веб приложения?

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

Как самостоятельно определить какие виды тестирования провести?

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

В какой очередности по видам тестирования следует проводить тестирование веб приложения?

Здесь все просто и логично. Допустим после долгих переговоров с продакт овнером был выделен бюджет на проведение трех видов тестирования над веб приложением таких как Функциональное (Functional testing), Юзабилити (Usability testing) и Секьюрити (Security testing)
Что следует проводить первым?
Очередность выполнения видов тестирования
Ну давайте подумаем логически, зачем первым делом проводить секьюрити если у нас возможно не работает основной функционал. И с таким же успехом после проведения функционального сразу браться за юзабилити если в приложении возможно большая дыра в секьюрити

Читать дальше →

Каскадное тестирование ПО

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

Каскадное тестирование

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

Читать дальше →

Кроссбраузерное тестирование (Cross-browser testing)

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

Кроссбраузерное тестирование

Особенности кроссбраузерного тестирования
Cross-browser testing сайта начинается с выбора браузеров. Заказчик сам определяет, с какими именно веб-обозревателями будет работать его приложение. Но задача разработчика и тестировщика — подсказать клиенту, какой браузер будет главным, следует изучить статистику заходов подобных приложений, определить какими браузерами пользуется такая аудитория.
Как правило, рассматривают самые популярные браузеры: Google Chrome, Mozilla Firefox, Internet Explorer, Opera.

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

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