Тестовые сценарии калькулятора

Дано приложение - простейший калькулятор, который умеет суммировать два числа, введенных через пользовательский интерфейс, и выводить результат пользователю (калькулятор A + B = C). Его нужно протестировать. Один из возможных подходов к формированию набора тестовых сценариев - это уточнение…

July 13 2010, 23:38

Тестирование калькулятора

Дано приложение — простейший калькулятор, который умеет суммировать два числа, введенных через пользовательский интерфейс, и выводить результат пользователю (калькулятор A + B = C). Его нужно протестировать.

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

  1. Какие имеются ограничения на диапазон возможных значений вводимых чисел и результата (нижняя и верхняя границы)?
  2. Как определена область возможных значений вводимых чисел и результата (целые, дробные, комплексные числа)?
  3. Возможен ли ввод чисел и представление результата в экспоненциальной форме? Какой у нее формат? При каких условиях результат должен быть представлен в экспоненциальной форме?
  4. В каких системах счисления возможен ввод чисел: десятичная, шестнадцатиричная, восьмиричная, двоичная, с основанием системы счисления по указанию пользователя? В каком формате должны быть введены числа в системах счисления, отличных от десятичной?
  5. Как система должна реагировать при переполнении результата?
  6. Какие имеются ограничение на длину строки символов, представляющей вводимые числа и результат?

Далее, имея ответы на эти вопросы, легко выделить эквивалентные области и сформировать на их основе набор тестовых сценариев.

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

Какие еще подходы к генерации тестовых идей можно предложить?

Эта статья — продолжение истории про калькулятор на JavaScript. В предыдущих частях мы:

  • написали простой калькулятор на JavaScript;
  • отдали его UX-тестировщикам и обновили дизайн калькулятора по их замечаниям.

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

👉 В этой статье не будет автотестов, юнит-тестов, API-тестов и интеграционных тестов. Это всё нужные инструменты, но задача тестировщика, в частности, — выбрать правильный инструмент тестирования. 

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

Базовое тестирование

Первое, что мы делаем, — проверяем, а как вообще ведут себя кнопки математических действий и делают ли они то, что нужно. Возьмём два числа — 12 и 5 — и сравним результаты всех действий с тем, что даёт калькулятор:

12 + 5 = 17

12 − 5 = 7

12 × 5 = 60

12 / 5 = 2,4

Отрицательные числа тоже отображаются и считаются правильно.

Тестируем большие числа

У компьютеров есть нюанс: любые переменные имеют ограничения по размеру числа. Например, если на переменную выделено 16 бит, то максимальное число, которое можно в нее положить, — 65 536. Число на единицу больше уже потребует 17 бит, а мы столько не выделяли. 

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

Пробуем: 123 456 789 × 2 = 246 913 578 — верно

А вот необычный эксперимент: 

12 345 678 901 234 567 × 1 = 12 345 678 901 234 568

Ух ты! Мы умножили большое число на единицу, а в ответе появилась ошибка. Это значит, что настолько длинные числа за раз наш калькулятор уже обработать не в состоянии.

Записываем баг: 

❌ Неправильно обрабатываются 17-значные числа и те, которые больше них.

А если мы попробуем получить 17-значное число в ответе, интересно, оно тоже будет с ошибкой?

Тестируем и исправляем калькулятор на JavaScript

Да, в ответе тоже неверное число — 8 × 4 = 32, поэтому в конце должно стоять 2, а не 0. Пишем баг: 

❌ Если в ответе получается 17-значное число или более — ответ точно неверный.

При этом деление на 16-значное число работает верно:

Тестируем и исправляем калькулятор на JavaScript

Тестирование математических трюков

Теперь попробуем разделить на ноль:

Тестируем и исправляем калькулятор на JavaScript

Скрипт хитро выкрутился и записал результатом деления бесконечность. Но лучше выводить сообщение, что на ноль делить нельзя.

❌ Нет сообщения при делении на ноль.

Отказоустойчивость

А что если оставить поле ввода пустым и попробовать что-то посчитать? Давайте посмотрим:

Тестируем и исправляем калькулятор на JavaScript

Скрипт преобразовал пустую строку в ноль и получил ответ, но это неправильно — при отсутствии одного из чисел калькулятор должен сообщить об этом, а не продолжать считать.

❌ Нет сообщения, если одно из чисел не введено.

Пойдём дальше и введём слово вместо числа:

Тестируем и исправляем калькулятор на JavaScript

Скрипт честно пытается перевести строку в число, у него это не получается, поэтому он выдаёт неопределённое значение.

❌ Нет проверки на то, ввели число или строку.

И напоследок проверим что будет, если мы что-то введём, но не выберем ни одно действие:

Тестируем и исправляем калькулятор на JavaScript

Тоже плохо. Надо будет обработать такую ситуацию.

❌ Нет проверки, когда не выбрали ничего из математических действий.

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

Что делаем

После тестирования у нас получился такой список ошибок:

❌ Неправильно обрабатываются 17-значные числа и те, которые больше них.

❌ Если в ответе получается 17-значное число или более — ответ точно неверный.

❌ Нет сообщения при делении на ноль.

❌ Нет сообщения, если одно из чисел не введено.

❌ Нет проверки на то, ввели число или строку.

❌ Нет проверки, когда не выбрали ничего из математических действий.

Исправим эти ошибки. Так как все вычисления начинаются при вызове функции func(), то и править всё будем тоже внутри неё.

Проверяем, что ввели число, а не слова или другие символы

Для перевода строку в число в JavaScript используют функцию Number(). Если строку можно перевести в число — она сработает без ошибок, а если не получится — вернёт значение NaN. Это значит, что числа не получилось.Чтобы проверить, прошло всё нормально или нет, мы будем использовать функцию isNaN() — она сравнит значение переменной с NaN, и вернёт true, если в переменной лежит NaN. А чтобы не путать числа и строки для сравнения, переименуем переменные в самом начале скрипта и сделаем их принудительно строками:

// получаем первое и второе число
var num1_str = String(document.getElementById("num1").value);
var num2_str = String(document.getElementById("num2").value);

// переводим строки в числа
let num1 = Number(num1_str)
let num2 = Number(num2_str)

// проверяем, получилось ли число из первой строки или нет
if (isNaN(num1)) {
	// если не получилось — пишем сообщение
	document.getElementById("result").innerHTML = 'Калькулятор не может распознать первое число. Проверьте его, пожалуйста';
	// и выходим из функции
	return;
}

// проверяем, получилось ли число из второй строки или нет
if (isNaN(num2)) {
	// если не получилось — пишем сообщение
	document.getElementById("result").innerHTML = 'Калькулятор не может распознать второе число. Проверьте его, пожалуйста';
	// и выходим из функции
	return;
} 

Тестируем и исправляем калькулятор на JavaScript

Проверяем, что нет пустых значений

JavaScript когда переводит строку в число, то пустую строку он считает как 0. Нам такой вариант не подходит, поэтому сравним её с пустой сторокой. Если она пустая — выдаём сообщение и ничего не считаем. 

Ещё надо дополнительно добавить проверку на пробелы — JavaScript строку из пробелов тоже переводит как ноль, а нам это не нужно:

// получаем первое и второе число
var num1_str = String(document.getElementById("num1").value);
var num2_str = String(document.getElementById("num2").value);

// проверяем, не пустая ли первая строка
if ((num1_str.length == 0) || (num1_str.indexOf(' ') != -1)) {
	// если пустая — пишем сообщение
	document.getElementById("result").innerHTML = 'Вы не ввели первое число или добавили пробел в поле ввода';
	// и выходим из функции
	return;
}

// проверяем, не пустая ли вторая строка
if ((num2_str.length == 0) || (num2_str.indexOf(' ') != -1)) {
	// если пустая — пишем сообщение
	document.getElementById("result").innerHTML = 'Вы не ввели второе число или добавили пробел в поле ввода';
	// и выходим из функции
	return;
}

Тестируем и исправляем калькулятор на JavaScript

Обрабатываем деление на ноль

Простая проверка — добавляем сравнение второго числа с нулём:

// проверяем второе число при делении
if ((num2 == 0) && (op == '/')) {
	// если не получилось — пишем сообщение
	document.getElementById("result").innerHTML = 'На ноль делить нельзя';
	// и выходим из функции
	return;
}

Тестируем и исправляем калькулятор на JavaScript

Обрабатываем длинные числа

Даже если мы ограничим каждое поле ввода числами по 16 знаков вместо 17, то при перемножении они дадут нам в ответе 32 знака — а это тоже превышает наш предел точности. Чтобы гарантированно получить в ответе число не больше 16 разрядов перед запятой, нам нужно, чтобы оба числа были не больше 99 999 999 — в нём 8 разрядов, а при перемножении мы получим максимум 16, как раз то, что нужно.

Чтобы это сделать, добавим проверку на размер числа:

// проверяем размер чисел
if ((num1 > 99999999) || (num2 > 99999999)) {
	// если не помещается одно из них в диапазон — пишем сообщение
	document.getElementById("result").innerHTML = 'Калькулятор может работать с числами не больше 99 999 999';
	// и выходим из функции
	return;
}

Тестируем и исправляем калькулятор на JavaScript

Если не выбрано математическое действие

С этим всё просто — добавляем в case действие по умолчанию, которое выполнится, если никакие из вариантов не подойдут:

// смотрим, что было в переменной с действием, и действуем исходя из этого
switch (op) {
  case '+':
    result = num1 + num2;
    break;
  case '-':
    result = num1 - num2;
    break;
  case '*':
    result = num1 * num2;
    break;
  case '/':
    result = num1 / num2;
    break;
  default: result = 'Выберите действие'
}

Тестируем и исправляем калькулятор на JavaScript

В итоге

✅ Калькулятор не работает с числами больше 16 знаков до запятой и предупреждает об этом пользователя

✅ В ответе всегда число, в котором не больше 16 знаков до запятой

✅ Есть проверка деления на ноль

✅ Есть сообщение, если одно из чисел не введено.

✅ Есть проверка на то, ввели число или строку.

✅ Есть проверка, когда не выбрали ничего из математических действий.

Это всё?

О нет, этот калькулятор можно гонять ещё и в хвост и в гриву: 

  • Протестировать десятичные дроби и операции с ними.
  • Вставлять в поля ввода изображения и файлы.
  • Устраивать переполнение буфера браузера.
  • Совершать 10 миллионов вычислений в секунду.
  • Запускать одновременно 10 миллионов калькуляторов.
  • Запустить калькулятор в 1911 году.
  • Засунуть в него комплексные числа.
  • Засунуть в него самое большое простое число (и разделить).
  • Засунуть в него кота.

Это (и многое другое) — и есть работа тестировщика. Круто, да?

Приходите учиться на тестировщиков
в «Практикум» → 

И ни одна кошка не пострадает.

<!DOCTYPE html>
<html lang="ru">
<head>
	<meta charset="utf-8">
	<title>Размеры шрифтов</title>

	<style type="text/css">
		/*задаём общие параметры для всей страницы: шрифт и отступы*/
		body {
		  text-align: center;
		  margin: 10;
		  font-family: Verdana, Arial, sans-serif;
		  font-size: 16px;
		}
		/* настраиваем внешний вид полей ввода*/
		input {
		  display: inline-block;
		  margin: 20px auto;
		  border: 2px solid #eee;
		  padding: 10px 20px;
		  font-family: Verdana, Arial, sans-serif;
		  font-size: 16px;
		}
		/* внешний вид кнопок */
		button{
		  font-family: Verdana, Arial, sans-serif;
		  font-size: 16px;
		  margin: 10px;
		  padding: 10px;
		}
		/* стиль подсветки выбранной операции */
		.light{
			background-color: yellow;
		}
	</style>

</head>
<body>

	<!-- заголовок -->
	<h1>Калькулятор</h1>
	<!-- поле ввода первого числа -->
	<input id="num1" />

	<!-- блок с кнопками -->
	<div id="operator_btns">
	  <button id="plus" onclick="sel_ligth('plus')">+</button>
	  <button id="minus" onclick="sel_ligth('minus')">-</button>
	  <button id="times" onclick="sel_ligth('times')">x</button>
	  <button id="divide" onclick="sel_ligth('divide')">:</button>
	</div>

	<!-- поле ввода второго числа -->
	<input id="num2" />
	<br>

	<!-- кнопка для расчётов -->
	<button onclick="func()">Посчитать</button>

	<!-- здесь будет результат -->
	<p id="result"></p>

	<!-- наш скрипт -->
	<script>
	  // переменная, в которой хранится выбранное математическое действие
	  var op; 

	  // функция, которая подсветит выбранное математическое действие
	  function sel_ligth(sel_id) {
	  	// убираем класс подсветки со всех кнопок
	  	document.getElementById("plus").classList.remove("light");
	  	document.getElementById("minus").classList.remove("light");
	  	document.getElementById("times").classList.remove("light");
	  	document.getElementById("divide").classList.remove("light");

	  	// и добавляем его только к нажатой
	  	document.getElementById(sel_id).classList.add("light");

	  	// в зависимости от нажатой клавиши меняем значение переменной op
	  	switch (sel_id) {
	  	  case "plus":
	  	    op = "+"
	  	    break;
	  	  case 'minus':
	  	    op = '-'
	  	    break;
	  	  case 'times':
	  	    op = "*"
	  	    break;
	  	  case 'divide':
	  	    op = "/"
	  	    break;
	  	}
	  }

	  // добавляем обработчик нажатия на клавиши ко второму полю ввода
      document.getElementById("num2").addEventListener('keydown', function(e) {
		if (e.keyCode === 13) {
		  func();
		}
	  });
	  
	  // функция расчёта
	  function func() {
	  	// переменная для результата
	    var result;
	    // получаем первое и второе число
	    var num1_str = String(document.getElementById("num1").value);
	    var num2_str = String(document.getElementById("num2").value);

	    // проверяем, не пустая ли первая строка
	    if ((num1_str.length == 0) || (num1_str.indexOf(' ') != -1)) {
	    	// если пустая — пишем сообщение
	    	document.getElementById("result").innerHTML = 'Вы не ввели первое число или добавили пробел в поле ввода';
	    	// и выходим из функции
	    	return;
	    }

	    // проверяем, не пустая ли вторая строка
	    if ((num2_str.length == 0) || (num2_str.indexOf(' ') != -1)) {
	    	// если пустая — пишем сообщение
	    	document.getElementById("result").innerHTML = 'Вы не ввели второе число или добавили пробел в поле ввода';
	    	// и выходим из функции
	    	return;
	    }

	    // переводим строки в числа
	    let num1 = Number(num1_str)
	    let num2 = Number(num2_str)


	    // проверяем, получилось ли число из первой строки или нет
	    if (isNaN(num1)) {
	    	// если не получилось — пишем сообщение
	    	document.getElementById("result").innerHTML = 'Калькулятор не может распознать первое число. Проверьте его, пожалуйста';
	    	// и выходим из функции
	    	return;
	    }

	    // проверяем, получилось ли число из второй строки или нет
	    if (isNaN(num2)) {
	    	// если не получилось — пишем сообщение
	    	document.getElementById("result").innerHTML = 'Калькулятор не может распознать второе число. Проверьте его, пожалуйста';
	    	// и выходим из функции
	    	return;
	    } 

	    // проверяем размер чисел
	    if ((num1 > 99999999) || (num2 > 99999999)) {
	    	// если не помещается одно из них в диапазон — пишем сообщение
	    	document.getElementById("result").innerHTML = 'Калькулятор может работать с числами не больше 99 999 999';
	    	// и выходим из функции
	    	return;
	    }

	     // проверяем второе число при делении
	    if ((num2 == 0) && (op == '/')) {
	    	// если не получилось — пишем сообщение
	    	document.getElementById("result").innerHTML = 'На ноль делить нельзя';
	    	// и выходим из функции
	    	return;
	    }

	    // смотрим, что было в переменной с действием, и действуем исходя из этого
	    switch (op) {
	      case '+':
	        result = num1 + num2;
	        break;
	      case '-':
	        result = num1 - num2;
	        break;
	      case '*':
	        result = num1 * num2;
	        break;
	      case '/':
	        result = num1 / num2;
	        break;
	      default: result = 'Выберите действие'
	    }

	    // отправляем результат на страницу
	    document.getElementById("result").innerHTML = result;
	  }
	</script>

</body>
</html>

Посмотреть работу калькулятора на странице проекта.

Что дальше

Кажется, что теперь в самом коде есть что улучшить. В следующей серии займёмся рефакторингом. Не переключайтесь.

Вёрстка:

Кирилл Климентьев

Как тестировать только то, что нужно

Ручное тестирование — это кропотливый и порой рутинный процесс. Одной из проблем является то что при внесении изменений в код сложно предсказать какие тесты следует проделать заново, чтобы убедиться что все работает так как следует. Для этого прибегают к регрессионному тестированию и повторному прогону всех тестов. Такие операции требуют много времени. Но если вы разрабатываете свои решения на платформе .NET то у вас есть шанс значительно снизить трудозатраты тестировщиков, потому что вы будете точно знать, какие тесты следует провести а какие нет, так как изменения в коде не затронули их поведение. Звучит заманчиво?

Инструментальная обработка кода и Test Impact.

Изменения, которые программисты вносят в код приложения, при наличии системы контроля версий и процесса непрерывной интеграции, могут быть четко идентифицированы. При этом если проводить тесты от билда к билду, то благодаря анализу информации Code Coverage ручных тестов и ее сохранению для каждого пройденного тестового плана, мы можем четко предсказать то какой тест сломался, а какие тесты вообще не затронуты изменениями, которые внесли программисты. Это на первый взгляд весьма фантастично, но тем не менее уже работает в связке с Team Foundation Server 2013 и Microsoft Test Manager 2013.

Подробный сценарий, чтобы все стало понятно.

Рассмотрим на примере калькулятора подробный сценарий. В Microsoft Test Manager у нас определен основной тестовый план, и для каждого PBI соответствующие тесты функций:

В настройках тестов обязательно указано что при прогоне тестов у нас будет проводится анализ Test Impact:

Дополнительно обязательно укажем эту же опцию в правилах сборки билда:

Собираем билд и начинаем тестировать наше приложение согласно плана:

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

У нас в плане 4 теста, умножение, деление, вычитание и сложение. В окне результатов видим что мы проверили все фичи нашего калькулятора и прошли все тесты плана:

Вносим изменения в код

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

Делаем чекин и собираем новый билд. Его будут проверять тестеры. После сборки билда в отчете помимо стандартной информации о том сколько пройдено модульных тестов, каков процент Code Coverage так же мы получаем информацию о том какие тесты были затронуты. Настоящая магия!

Помимо информации в отчете, тестировщик так же может получить список затронутых тестов прямо в Microsoft Test Manager. Прежде чем получить список рекомендованных тестов, назначим тестовому плану новый билд. При этом нам будет дана рекомендация по анализу перечня рекомендованных тестов:

При этом у тестировщика есть возможность делать анализ рекомендованных тестов от билда к билду:

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

Test Cases for Calculator Application

In this how-to, we will walk through how to write test cases for calculator in software testing. Many applications use calculations and calculator test cases can be a pretty common interview question. Some examples of applications include purchasing on eCommerce websites, calculating how much money is owed to a worker, and putting satellites into space. As a result, creating test cases for calculator in software testing applies to a fresher tester. Follow along with this how-to and finish your application’s first test case by creating your account in our test case management tool. Before starting our test case, we need to define the Acceptance Criteria.

What are the Acceptance Criteria for Scientific Calculator?

As discussed in our requirements post, we must have functional requirements. So let’s go ahead and define them as such:

Description: “Taking Ubuntu Linux’s calculator must be able to perform basic mathematical calculations.”

Abbreviated Acceptance Criteria:

  • Validate the calculator can add numbers.
  • Validate the calculator can subtract numbers.
  • Validate the calculator can multiply numbers.
  • Validate the calculator can divide numbers.
  • Validate any remaining arithmetic keys work.

What are the functional test cases for calculator application?

We will want to document several test cases related to a basic calculator. Typically test cases can be broken down into:

Digital or Physical Calculator Scenarios:

  1. Validate all arithmetic operations (+, -, /, *, %, etc.) work properly.
  2. Verify the sum or equals key works properly.
  3. Verify all numbers work properly (0-9).
  4. Validate the bracket keys work.
  5. Verify the square and square root keys work.
  6. Ensure BODMAS / BIDMAS is applied when running complex queries and correct results are returned.
  7. Validate using decimal characters yields the correct result.
  8. Ensure spacing of all like buttons is equal.
  9. Validate the number of digits allowed in the calculator for an operation.
  10. Check the response value limit of the calculator.
  11. Ensure the memory functions work as expected.
  12. Validate previous calculations can be viewed.
  13. Verify the “C” or clear button cancels all digits and operations entered.
  14. Verify the back or delete button works when pressing the backspace key.
  15. Validate the latest operation overrides the prior one when two operations are pressed one after the other.
  16. Verify the addition of two integer numbers.
  17. Verify the addition of two negative numbers.
  18. Verify the addition of one positive and one negative number.
  19. Verify the subtraction of two integer numbers.
  20. Verify the subtraction of two negative numbers.
  21. Verify the subtraction of one negative and one positive number.
  22. Verify the multiplication of two integer numbers.
  23. Verify the multiplication of two negative numbers.
  24. Verify the multiplication of one negative and one positive number.
  25. Verify the division of two integer numbers.
  26. Verify the division of two negative numbers.
  27. Verify the division of one positive number and one integer number.
  28. Verify the division of a number by zero results in an error.
  29. Verify the division of a number by a negative number.
  30. Functionality test cases: check the division of zero by any number results in zero.

Physical Simple Calculator only scenarios:

Pysical Calculator

  1. Verify the calculator is a normal calculator and not a scientific calculator.
  2. Validate all buttons exist and the characters on them are legible.
  3. When using a solar-powered calculator, be sure batteries are not needed in full sunlight.
  4. When sunlight is unavailable for a solar-powered calculator, ensure battery operation works.
  5. Verify all of the buttons need a reasonable amount of pressure to operate.
  6. Validate the On and Off buttons work on the calculator.
  7. Verify the calculator’s outer shell is undamaged.
  8. Verify calculator time-out works as expected to turn the calculator off.
  9. Check the calculator’s state when pressing two buttons simultaneously.

Software Based Calculator only scenarios:

Digital Calculator App Selection

  1. Validate help documentation can be accessed by going to Help -> Documentation.
  2. Verify the calculator accepts copy and paste functionality.

Keep in mind there are diminishing returns to testing, and developers should be using a thoroughly tested library. Here are some tests some folks might be tempted to run, but are not needed because they are using inbuilt operating system functionality not specific to the application.

  1. Verify calculator starts when the menu item is selected.
  2. Ensure the calculator can start by searching for the calculator.
  3. Validate the calculator window maximizes when pressing the appropriate button.
  4. Validate the calculator window minimizes when pressing the appropriate button.
  5. Validate the calculator closes when the close button is pressed or File->Exit option is selected.

The best thing you can do as a tester is discuss, with the developer, what the library code is doing and what it is not doing. Another quick sanity check is to review your developer’s code check-in for the story you are working on. Doing so can help target your testing efforts.

Scientific Calculator and Programmable Calculator Test Cases:

Many folks, especially in school, have to use scientific calculators.

Scientific Calculator

Here are some additional test scenarios for them:

  1. Validate the operation and results of the sin, cos, tan, and cos keys.
  2. Validate the operation and results of the x-1, x!,|x|,x^y, and f(x) keys.
  3. Validate the operation and results of the log key.
  4. Validate the operation and results of the logarithm key.
  5. Validate the operation and results of the factorial key.
  6. Validate the operation and results of the real and imaginary component keys.
  7. Validate the operation and results of the complex conjugate.
  8. If your advanced features calculator has converter options, each of the conversion function tests (angle, length, weight, area, volume, duration, currency, temperature) will need to be validated.
  9. If your advanced calculator has financial operations, each of the financial calculator tests (present value, future value, interest, time, etc.) will need to be validated.

In this future section, we will go into detail on how to write the advanced tests calculator test cases on your best laptop for QA tester.

Conclusion for Test Cases for Calculator in Software Testing

AccelaTest is a free test case management tool packed with features that most other testing tools charge a lot of money for. Get your account now and create your test cases.

#1

AlyaSAV

    Новый участник

  • Members
  • Pip

  • 7 сообщений

Отправлено 03 сентября 2014 — 15:31

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

Мой ответ был 

1) 0+1

2) 4+11
3) 9+3
Интересно услышать замечания, спасибо !

  • 0

  • Наверх

#2

Petrov.Sergey

Petrov.Sergey

  • ФИО:Petrov Sergey
  • Город:МО, Лобня

Отправлено 03 сентября 2014 — 15:38

возможности сложить только 3 пары чисел.

1) Что означает эта фраза?

Можно только 3 теста провести (каждый суммирует 2 числа)? Бредовое условие.

2) По условию ввести можно только целые от 1 до 10. (калькулятор принимает только однозначные числа)

Каким образом Вы собираетесь вводить число 11?

А почему именно 11, а не 15 или 23 или 10?

3) Проверку на то, что первое число не может быть = 0, Вы написали. А Вы гарантируете, что второе число не может быть = 0?

4) Вы привели только негативные тесты (калькулятор должен выдать ошибку в каждом из этих тестов). И ни одного позитивного (что калькулятор вообще суммирует и суммирует правильно).

3 тестов тут явно недостаточно.

Имхо, задание бредовое.

Мой минимальный набор тестирования данного калькулятора содержит в себе 4 теста: 2 негативных 0+9, 9+0, один позитивный 3+5 и переполнение 4+8. Вычёркивание хотя бы одного теста из моего набора сразу снимает гарантию на то или иное => гарантию, что ТЗ выполнено в полном объёме и 100% правильно.

Правда, я сразу предполагаю, что калькулятор физически не может принимать на вход двузначные числа. Иначе нужно 6 тестов: 0+9, 9+0, 3+5, 4+8, 1+10, 10+1

Если же требуется точная локализация дефекта, то минимальный набор увеличивается: 0+8, 8+0, 9+1, 1+9, 3+5 (переполнение уже на 9 сидит)

Итого, 4 (мин), 5 (точная локализация), 6 (двузначные) или 8 (с двузначными и точной локализацией) тестов в зависимости от начальных условий, не озвученных в задании.

Как-то так…

В любом случае 3 теста — мало.

  • 1

Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).

  • Наверх

#3

wisegrey

wisegrey

    Новый участник

  • Members
  • Pip

  • 61 сообщений
  • ФИО:Роман Претер
  • Город:Хайфа‎

Отправлено 03 сентября 2014 — 15:44

возможности сложить только 3 пары чисел.

4) Вы привели только негативные тесты (калькулятор должен выдать ошибку в каждом из этих тестов). И ни одного позитивного (что калькулятор вообще суммирует и суммирует правильно).

Стоп, а почему третий тест — негативный?

  • 0

  • Наверх

#4

AlyaSAV

AlyaSAV

    Новый участник

  • Members
  • Pip

  • 7 сообщений

Отправлено 03 сентября 2014 — 15:44

4) Вы привели только негативные тесты (калькулятор должен выдать ошибку в каждом из этих тестов). И ни одного позитивного (что калькулятор вообще суммирует и суммирует правильно).

Спасибо за ответ, согласна, что  не хватает условий для корректного проведения тестирования, а как же последний пример? )

  • 0

  • Наверх

#5

AlyaSAV

AlyaSAV

    Новый участник

  • Members
  • Pip

  • 7 сообщений

Отправлено 03 сентября 2014 — 15:46

Мой минимальный набор тестирования данного калькулятора содержит в себе 7 тестов: 4 негативных, два позитивных и один на переполнение. Вычёркивание хотя бы одного теста из моего набора сразу снимает гарантию на то или иное => гарантию, что ТЗ выполнено в полном объёме и 100% правильно.

а можно уточнить как выглядит пример на переполнение ? 

  • 0

  • Наверх

#6

kirill_222

kirill_222

    Новый участник

  • Members
  • Pip

  • 39 сообщений
  • ФИО:Кирилл

Отправлено 03 сентября 2014 — 15:49

2 пример не соответствует условия.
Целое число может быть отрицательным, где пример вида -7+3. Вполне соответствует заявленным условиям
 

  • 0

  • Наверх

#7

Petrov.Sergey

Petrov.Sergey

  • ФИО:Petrov Sergey
  • Город:МО, Лобня

Отправлено 03 сентября 2014 — 15:58

2 пример не соответствует условия.
Целое число может быть отрицательным, где пример вида -7+3. Вполне соответствует заявленным условиям
 

целых чисел от одного до десяти

  • 0

Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).

  • Наверх

#8

AlyaSAV

AlyaSAV

    Новый участник

  • Members
  • Pip

  • 7 сообщений

Отправлено 03 сентября 2014 — 15:58

2 пример не соответствует условия.
Целое число может быть отрицательным, где пример вида -7+3. Вполне соответствует заявленным условиям
 

ну разве мы не должны убедиться, что двухзначное число не вводится ? 

  • 0

  • Наверх

#9

Petrov.Sergey

Petrov.Sergey

  • ФИО:Petrov Sergey
  • Город:МО, Лобня

Отправлено 03 сентября 2014 — 15:59

возможности сложить только 3 пары чисел.

4) Вы привели только негативные тесты (калькулятор должен выдать ошибку в каждом из этих тестов). И ни одного позитивного (что калькулятор вообще суммирует и суммирует правильно).

Стоп, а почему третий тест — негативный?

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

Я изменил свой коммент — перечитайте.

  • 0

Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).

  • Наверх

#10

Petrov.Sergey

Petrov.Sergey

  • ФИО:Petrov Sergey
  • Город:МО, Лобня

Отправлено 03 сентября 2014 — 16:00

Мой минимальный набор тестирования данного калькулятора содержит в себе 7 тестов: 4 негативных, два позитивных и один на переполнение. Вычёркивание хотя бы одного теста из моего набора сразу снимает гарантию на то или иное => гарантию, что ТЗ выполнено в полном объёме и 100% правильно.

а можно уточнить как выглядит пример на переполнение ? 

он был дан даже у топикстартера: 3+9 > 10

Изначально заявлено, что калькулятор работает с однозначными числами. Соответственно, «переполнение» — это когда сумма двузначная.

  • 0

Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).

  • Наверх

#11

wisegrey

wisegrey

    Новый участник

  • Members
  • Pip

  • 61 сообщений
  • ФИО:Роман Претер
  • Город:Хайфа‎

Отправлено 03 сентября 2014 — 16:03

Перечитал ещё раз условия. Нигде не нашел ограничений на сумму. Нигде не говорится что она не может быть двузначной. 

Ограничение только на ввод

  • 0

  • Наверх

#12

Petrov.Sergey

Petrov.Sergey

  • ФИО:Petrov Sergey
  • Город:МО, Лобня

Отправлено 03 сентября 2014 — 16:03

Переполнение я специально выношу в отдельный тест, потому что это может быть исключительной ситуацией для калькулятора. Вспомните школьные Casio. У них есть верхний предел чисел, с которыми они работают. Перемножение 9999999*9999999 давало ERROR или в лучшем случае 9,9E10 (стандартная запись мат.числа)

В условии не сказано, что сумма не может быть двузначной. Но при этом и не сказано, что нет ограничений. И именно это ограничение и надо бы проверить.

  • 0

Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).

  • Наверх

#13

AlyaSAV

AlyaSAV

    Новый участник

  • Members
  • Pip

  • 7 сообщений

Отправлено 03 сентября 2014 — 16:04

Перечитал ещё раз условия. Нигде не нашел ограничений на сумму. Нигде не говорится что она не может быть двузначной. 

Ограничение только на ввод

только набирала похожее сообщение 

  • 0

  • Наверх

#14

wisegrey

wisegrey

    Новый участник

  • Members
  • Pip

  • 61 сообщений
  • ФИО:Роман Претер
  • Город:Хайфа‎

Отправлено 03 сентября 2014 — 16:04

 

Изначально заявлено, что калькулятор работает с однозначными числами. Соответственно, «переполнение» — это когда сумма двузначная.

Изначально заявлено что только однозначные числа можно вводить. Ничего не сказано про «работает только с»

  • 0

  • Наверх

#15

Petrov.Sergey

Petrov.Sergey

  • ФИО:Petrov Sergey
  • Город:МО, Лобня

Отправлено 03 сентября 2014 — 16:05

Изначально заявлено, что калькулятор работает с однозначными числами. Соответственно, «переполнение» — это когда сумма двузначная.

Изначально заявлено что только однозначные числа можно вводить. Ничего не сказано про «работает только с»

Вы гарантируете, что при сложении 9+5 калькулятор не выдаст ошибку, что сумма не умещается у него на экране?

  • 0

Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).

  • Наверх

#16

wisegrey

wisegrey

    Новый участник

  • Members
  • Pip

  • 61 сообщений
  • ФИО:Роман Претер
  • Город:Хайфа‎

Отправлено 03 сентября 2014 — 16:05

Переполнение я специально выношу в отдельный тест, потому что это может быть исключительной ситуацией для калькулятора. Вспомните школьные Casio. У них есть верхний предел чисел, с которыми они работают. Перемножение 9999999*9999999 давало ERROR или в лучшем случае 9,9E10 (стандартная запись мат.числа)

В условии не сказано, что сумма не может быть двузначной. Но при этом и не сказано, что нет ограничений. И именно это ограничение и надо бы проверить.

Согласен.

  • 0

  • Наверх

#17

wisegrey

wisegrey

    Новый участник

  • Members
  • Pip

  • 61 сообщений
  • ФИО:Роман Претер
  • Город:Хайфа‎

Отправлено 03 сентября 2014 — 16:08

О, я сообразил, какую мы сейчас ошибку совершаем. 

Это пример, проверяющий как у кандидата голова работает. Не более. Только направление указать.

А мы к этому примеру претензии предъявляем как к полноценному тест-плану  :smile:

  • 0

  • Наверх

#18

kirill_222

kirill_222

    Новый участник

  • Members
  • Pip

  • 39 сообщений
  • ФИО:Кирилл

Отправлено 03 сентября 2014 — 16:08

2 пример не соответствует условия.
Целое число может быть отрицательным, где пример вида -7+3. Вполне соответствует заявленным условиям
 

целых чисел от одного до десяти

Коллега, расплывчато. Можно выкинуть ноль это да, но я уточнил бы этот момент.
 

  • 0

  • Наверх

#19

AlyaSAV

AlyaSAV

    Новый участник

  • Members
  • Pip

  • 7 сообщений

Отправлено 03 сентября 2014 — 16:11

О, я сообразил, какую мы сейчас ошибку совершаем. 

Это пример, проверяющий как у кандидата голова работает. Не более. Только направление указать.

А мы к этому примеру претензии предъявляем как к полноценному тест-плану  :smile:

согласна, поэтому был бредовый 2й пример с попыткой ввода числа 11 )

  • 0

  • Наверх

#20

Petrov.Sergey

Petrov.Sergey

  • ФИО:Petrov Sergey
  • Город:МО, Лобня

Отправлено 03 сентября 2014 — 16:17

2 пример не соответствует условия.
Целое число может быть отрицательным, где пример вида -7+3. Вполне соответствует заявленным условиям
 

целых чисел от одного до десяти

Коллега, извините, но нет
Вот пруф http://ru.math.wikia…iki/Целое_число
 Оно состоит из положительных натуральных чисел (1, 2, 3), чисел вида -n (n068dc8c8cedaa3499ec98c82913bef32.png) и числа нуль.

Вы будете мне рассказывать, какие множества чисел бывают в математике?  :biggrin:

Натуральный ряд = 0,1,2,3,4,5,… до бесконечности. (иногда натуральным рядом считают целые положительные числа. Тут двоякое понимание)

Целые числа = натуральный ряд + отрицательный натуральный ряд

Рациональные числа = множество чисел вида «целое число, делённое на натуральное число, не являющееся 0».

Иррациональные числа — числа, не представимые в виде рациональной дроби.

Трансцендентные числа — числа, не являющиеся корнями никаких уравнений с рациональными коэффициентами.

Продолжить?

В условии явно сказано: «при условии ввода только целых чисел от одного до десяти».

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

  • 1

Форум читаю набегами. По возникшим вопросам можно в скайп (в профиле).

  • Наверх

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

Добрый день! Меня зовут Владимир Крючков, и мы начинаем первый урок из цикла введения в тестирование с помощью Фреймворка «Тестирование 3.0».

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

1. Подготовка к работе

Итак, первоначально вам необходимо подготовить окружение, если вы этого не сделали ранее, то необходимо выполнить следующие действия:

Подготовка рабочего места:

a) Создадим папку на диске, к примеру, c:git-tests

б) Загружаем менеджер сценарного теста со страницы и сохраняем его в корень папки

в) Загружаем WinAutomationUI и распаковываем его в папку: c:git-testsExternalAutomationUI

Запуск необходимых вещей:

г) Запускаем «Калькулятор»

д) Запускаем сервис WinAutomationUI.exe и стартуем его «Server-> Start»

е) Запускаем конфигурацию «Тестирование 3.0» и открываем в ней обработку «МенеджерСценарногоТеста.epf»

2. Выполним запись действий

а) Переходим в панель «Журнал»

б) Выбираем режим «Automation UI»

в) Обновим список приложений и на против окна «Калькулятор» установим флажок.

Панель «Журнал». Подготовка к записи действий пользователя

 г) Жмем запись и
выполняем следующую комбинацию действий нажатием мышкой по кнопкам приложения:
«С», «2», «+», «2», «=», «табло». На рисунке они подсвечены цветом.

Калькулятор

д) Завершаем запись. По
завершению этой операции в тестовом поле «Источник текст» у вас должен появится
скрипт действий в формате json.

3) Создаем свой первый сценарий.

а) Преобразуем скрипт и жмем на
кнопку «Преобразовать». В результате у нас должен создаться сценарий, и мы
автоматически переключимся на вкладку «Дерево», как на рис ниже

Панель «Дерево сценария». Скрипт тестирования калькулятора

б) Запускаем сценарий! Кнопка
запустить с иконкой в виде бегущего человечка. Первый скрипт готов)

Ура! У нас получилось!

4) Добавляем проверку.

Для того чтобы понять, что в
итоге получилось, после того как поднажимаются кнопочки нужно добавить проверку
«Сравнить данные» (Assert).
Эта команда сравнивает два значения по некоторому условию (равно, не равно и
др.) и в случае невыполнения вызывает ошибку – сценарный тест прекращает
выполняться и завершается с формированием ошибки.

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

а) Получим представление данных
на табло.

Выберем позицию найти объект «табло» и добавим в него команду получить представление. Для представления укажем в качестве параметра «Результат»

б) Добавим необходимые параметры на вкладке «Параметры»

Добавляем два параметра строкового типа и называем их «Результат» и «ПроверочноеЗначение», как показано на рисунке ниже.

Панель «Параметры». Добавление параметров

в) Добавим сравнение.

В конце сценария перед блоком отключить действия добавляем новое действие «Сравнить с данными». Для этого блока указываем в качестве одного параметра «Результат», в качестве второго «ПроверочноеЗначение» и условие сравнения «Равно».

5. Готовые скрипты

Готовый скрипт сценария урока: http://testingtool.ru/data/lessons/lesson-1-test-calculator/calck.xml

Домашнее задание:

Для закрепления материала создайте сценарий проверки условия «2*2=4», «4/2=2»

About Author

Роман иванов

Интересуюсь разработкой и тестированием. Знаком с большинством методологий и прикладных решений.
Ценю живой стиль, красивую ритмичную музыку.
Еще люблю лыжи и велоспорт …

Немножко в сторону.

Есть такая штука как «ручное протыкивание».

Тут варианты следующие:
1. Чисто ручное протыкивание «на интуиции».
2. Протыкивании на основании ТЗ и Test Case’ов.
3. Симбиоз этих двух подходов.

Я лично больше приемлю HLTC.

Почему? Потому что они являются прародителями не только «ручного протыкивания», но и «автоматических тестов».

Так вот пишет тут знакомый.

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

HLTC1: Начало работы

HLTC1.1: При открытии программы:

HLTC1.1.1: Поле для ввода данных содержит 0

HLTC1.1.2: Все кнопки доступны(активны)

HLTC2: Ввод данных (цифр и разделителя)

HLTC2.1: Способы ввода

Убедиться, что данные можно ввести всеми способами:

HLTC2.1.1: Нажатие кнопок приложения с помощью указателя мыши

HLTC2.1.2: Ввод с основной клавиатуры

HLTC2.1.3: Ввод с дополнительной клавиатуры

HLTC2.2: Реакция системы на введённые данные:

HLTC2.2.1: Цифры

HLTC2.2.1.1: Отображаются в поле для ввода данных

HLTC2.2.1.2: Каждая следующая введённая цифра располагается справа от имеющихся

HLTC2.2.1.3: Первая введённая цифра заменяет собой умолчательный 0

HLTC2.2.2: Точка-разделитель дробной части

HLTC2.2.2.1: Отображается в поле для ввода данных точкой

HLTC2.2.2.2: Добавляется справа от цифры в поле (включая умолчательный 0)

HLTC2.2.2.3: В числе может быть только одна запятая

HLTC2.2.2.3.1: Кнопка с запятой дизейблится после первого нажатия

HLTC2.2.2.3.2: Вновь становится активной при:

HLTC2.2.2.3.2.1: Общем сбросе

HLTC2.2.2.3.2.2: Начале ввода следующего числа (после ввода операци)

HLTC2.2.2.3.3: При попытке ввода второго разделителя с клавиатуры — никак не реагируем

HLTC3: Операции

HLTC3.1: Способы ввода

Убедиться, что операции можно ввести всеми способами:

HLTC3.1.1: Нажатие кнопок приложения с помощью указателя мыши

HLTC3.1.2: Ввод с основной клавиатуры

HLTC3.1.3: Ввод с дополнительной клавиатуры

HLTC3.2: Арифметические операции (+ — * /):

HLTC3.2.1: Визуально никак не отображаются

HLTC3.2.2: Если последовательно ввести несколько операций — учитывается только последняя

HLTC3.2.3: После применения операции:

HLTC3.2.3.1: Первая введённая цифра заменяет отображаемое число

HLTC3.2.3.2: Ввод разделителя отображается как «0.»

HLTC3.3: Получение результата:

HLTC3.3.1: Когда введено первое число, арифметическая операция и второе число — результат можно получить следующими способами:

HLTC3.3.1.1: Нажатием кнопки «=» в программе или на клавиатуре

HLTC3.3.1.2: Нажатием Enter с клавиатуры

HLTC3.3.1.3: Вызовом любой арифметической операции

HLTC3.4: Удаление последнего символа

HLTC3.4.1: Способы вызова:

HLTC3.4.1.1: Кнопка <— (в нашем калькуляторе)

HLTC3.4.1.2: Клавиша клавиатуры Backspace

HLTC3.4.2: Единичное нажатие удаляет последний из введённых символов

HLTC3.4.3: При удалении последнего символа, он заменяется на 0

HLTC3.4.4: Попытки удалить 0 игнорируются

HLTC3.4.5: Не может быть применим к результату операции (вызов 

игнорируется)

HLTC3.5: Сброс

Отмена всех операций и замена текущего числа в поле на 0 производится следующими способами:

HLTC3.5.1: Кнопка «С» (в нашем калькуляторе)

HLTC3.5.2: Клавиша клавиатуры Esc

HLTC4: Специальные тесты

HLTC4.1: Арифметические операции с результатом

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

Для этого нужно:

HLTC4.1.1: Если результат был выведен кнопками Enter или «=»:

1. Нажать кнопку нужной операции

2. Ввести число

3. Любым способом вызвать результат

HLTC4.1.2: Если результат был выведен кнопкой арифметической операции:

1. Ввести число

2. Любым способом вызвать результат

HLTC4.2: Деление на 0

При попытке деления на 0, в поле выводится текст: «Значение не определено».

HLTC5: Завершение работы

HLTC5.1: Окно закрывается стандартными средствами ОС:

HLTC5.1.1: Крестик в правом верхнем углу

HLTC5.1.2: Горячие клавиши Alt+F4

HLTC5.2: С закрытием операции, из памяти должен выгрузиться процесс 

AL_calc.exe

Я думаю, что со временем я разовью эту тему.


С этим файлом связано 15 файл(ов). Среди них: Kontr_rab.docx, Методичка..docx, Лабораторын Дист.docx, Лаптев.docx, lab_rab.doc, OTVETI.docx, К выполнению лабораторных работ.doc, Лабораторная работа №1.docx, Лабораторная работа №3.docx, Лаптев.docx, Задания.docx, Практическая работа.doc, Лабораторная работа_6.docx, Лабораторная работа_4.docx, Лабораторная работа_3.docx и ещё 5 файл(а).
Показать все связанные файлы


Подборка по базе: 2022_I_Inf_ Сдать отчет ЛБ 2 (Часть 1 + Часть 2).pdf, Форма ежемесячного отчета кафедры.docx, отчёт по воспитательной работе.docx, ! НИР отчёт.docx, Форма отчета классного руководителя за семестр Жунисова 2023.doc, Задачи к практической работе Статистика.docx, Старый отчет Балык.docx, Анализ финансовой отчетности тест.docx, ПП.02 Отчет по производственной практике.docx, Отчет по лабораторной работе 1.docx


Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования «Владимирский государственный университет имени Александра Григорьевича и Николая Григорьевича Столетовых»

Кафедра управления и информатики в технических и экономических системах

Отчет по лабораторной работе №1

«Изучение этапов тестирования ПО. Тестирование калькулятора»

Владимир 2019

Цель работы – изучить виды тестирования и основные этапы тестирования ПО. Провести тестирование приложения «Калькулятор».
Тест-план

1 Цель тестирования – проверка качества работы приложения «Калькулятор» версии 10.1709.2703.0

2 Процедуры и методики тестирования – функциональное тестирование операций сложения, умножения и вычитания, а также тестирование удобства использования

3 Описание тестируемой функциональности:

— выполнение операций сложения;

— выполнение операций умножения;

— выполнение операций вычитания;

— определение степени удобства использования приложения.

4 Критерии завершения тестирования:

— закрытие всех тестовых сценариев с высоким приоритетом результатом «пройден».

Тестовая модель (для тестирования функциональности операций)

Приоритет Название Предварительные шаги Последовательность действий Ожидаемый результат
0 Проверка правильности вычислений Запустить приложение «Калькулятор» в обычном режиме Осуществить сложение нескольких случайных чисел. Повторить вычисления в режимах «Инженерный» и «Программист» Результат должен совпадать с результатом сложения этих же чисел в любом другом калькуляторе
0 Проверка правильности вычислений Запустить приложение «Калькулятор» в обычном режиме Осуществить умножение нескольких случайных чисел. Повторить вычисления в режимах «Инженерный» и «Программист» Результат должен совпадать с результатом умножения этих же чисел в любом другом калькуляторе
0 Проверка правильности вычислений Запустить приложение «Калькулятор» в обычном режиме Осуществить деление нескольких случайных чисел. Повторить вычисления в режимах «Инженерный» и «Программист» Результат должен совпадать с результатом деления этих же чисел в любом другом калькуляторе
0 Проверка некорректного ввода Запустить приложение «Калькулятор» в обычном режиме Осуществить деление случайного числа на «0». Повторить вычисления в режимах «Инженерный» и «Программист» Появление сообщения об ошибке
1 Проверка работы с различными устройствами ввода Запустить приложение «Калькулятор» Ввести числа и знаки операций с помощью клавиатуры. Ввести числа и знаки операций с помощью манипулятора мышь Корректный ввод
0 Проверка недопустимости ввода текстовых значений Запустить приложение «Калькулятор» в обычном режиме Ввести с клавиатуры буквы и символы. Повторить ввод значений в режимах «Инженерный» и «Программист» Появление сообщения об ошибке / отсутствие отображения некорректно введенных символов

*приоритет «0» — critical

приоритет «1» — medium

Дефекты

При тестировании операций сложения, умножения и деления дефектов обнаружено не было; приложение работает исправно. Из недочетов можно отметить отсутствие кнопки «Закрепить» на панели инструментов, а также отсутствие возможности изменения вариантов настроек цветовых схем.

Отчет по завершению тестирования

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

Выводы по лабораторной работе: в ходе выполнения данной работы были изучены цели тестирования ПО, основные этапы и виды. Также на примере приложения «Калькулятор» версии 10.1709.2703.0 был проработан алгоритм функционального тестирования, был разработан тест-план, спроектирована тестовая модель и на основании их было осуществлено тестирование. Результаты тестирования были проанализированы на соответствие критериям, после чего были сформированы общие выводы о качестве работы приложения.

  1. Check if the calculator is a normal calculator or a scientific calculator.
  2. Verify that all the buttons are present and text written on them is readable.
  3. Check the arithmetic operations are working fine- +, -, /, * etc.
  4. Verify that BODMAS is applied in case of complex queries and the correct result is returned.
  5. Verify that the calculator gives the correct result in case of operations containing decimal numbers.
  6. Check if the calculator is battery operated or works on solar power.
  7. Verify the outer body material of the calculator.
  8. Verify the spacing between the two buttons, the buttons should not be too closely placed.
  9. Check the pressure required to press a button, the pressure required should not be too high.
  10. Verify the number of digits allowed to enter in the calculator for any operation.
  11. Verify the limit of the response value.
  12. Verify the functioning of memory functions.
  13. Check if the calculator allows navigating through previous calculations.
  14. Verify that hitting ‘C’ cancels any digits or operation added.
  15. Verify the working of the ON-OFF button in the calculator.
  16. Check if keeping the calculator unused for a certain period of time, turns it off automatically.
  17. Verify that on pressing two operators one after the other, the latest one will override the previous operator.
  18. Verify the state of the calculator when two buttons are pressed simultaneously.
  19. Verify if the user can delete digits one by one using the backspace key.

Test Case Examples

Login Page Registration Page E-commerce App Google Search
GMail Youtube Facebook ATM Machine
Chair Coffee Machine DateField Door
Calculator Fan Flight Reservation Car
Hospital Management Keyboard Kindle Lift
Mobile Phone Mouse Microwave Oven Notepad
Online Examination Pen Pencil Remote Control
Stapler Table Triangle TV
Wrist Watch Water Bottle Whatsapp White Board
Bike Marker Forgot Password Air Conditioner

Kuldeep Rana

Kuldeep is the founder and lead author of ArtOfTesting. He is skilled in test automation, performance testing, big data, and CI-CD. He brings his decade of experience to his current role where he is dedicated to educating the QA professionals. You can connect with him on LinkedIn.

Понравилась статья? Поделить с друзьями:
  • Тестовые сценарии документ
  • Террористов нет есть сценарий спецслужб
  • Тестовое покрытие тестовый сценарий тестовый пакет
  • Терроризмга каршы чаралар сценарий балалар
  • Тестовая модель тестовые сценарии