Перейти к содержимому

Фотография

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

калькулятор вопросы при собеседовании

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 68

#21 Petrov.Sergey

Petrov.Sergey

    Опытный участник

  • Members
  • PipPipPipPip
  • 446 сообщений
  • ФИО:Petrov Sergey
  • Город:МО, Лобня


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

 

 

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

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

 

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

 

Граничные числа = 0, 1, 9 и 10

Проверка каждого = один тест

Проверка каждого на первом и втором числе = по 2 теста на каждый.

1 и 9 можно впихнуть одновременно в один тест на каждое из двух суммируемых чисел, т.к. они не являются "негативными".

Зачем Вам отрицательные - вот этого я не понимаю.


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

#22 vmaximv

vmaximv

    Опытный участник

  • Members
  • PipPipPipPip
  • 350 сообщений

Отправлено 04 сентября 2014 - 05:40

Развели флуд на две страницы, вместо того, что бы вчитаться в условие и представить себе что-нибудь типа:
Screen 1 : [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] -> goto Screen 2
Screen 2 : [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] -> goto Screen 3
Screen 3 : [Result] -> goto Screen 1
, where [x] - button with value x
А так как мы ограничены количеством тестов (после вывода третьего результата программа самоубивается) - вариантов тут не много.
  • 0

#23 Petrov.Sergey

Petrov.Sergey

    Опытный участник

  • Members
  • PipPipPipPip
  • 446 сообщений
  • ФИО:Petrov Sergey
  • Город:МО, Лобня


Отправлено 04 сентября 2014 - 06:14

Развели флуд на две страницы, вместо того, что бы вчитаться в условие и представить себе что-нибудь типа:
Screen 1 : [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] -> goto Screen 2
Screen 2 : [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] -> goto Screen 3
Screen 3 : [Result] -> goto Screen 1
, where [x] - button with value x
А так как мы ограничены количеством тестов (после вывода третьего результата программа самоубивается) - вариантов тут не много.

1) нолик забыл.

2) ты хочешь проверять все пары чисел? Это даже для автоматики "ужас-ужас".

 

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


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

#24 vmaximv

vmaximv

    Опытный участник

  • Members
  • PipPipPipPip
  • 350 сообщений

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

1) Какой мл*дь нолик - условие перечитайте внимательно.
2) Классы эквивалентности - не, не слышал.
  • 0

#25 Petrov.Sergey

Petrov.Sergey

    Опытный участник

  • Members
  • PipPipPipPip
  • 446 сообщений
  • ФИО:Petrov Sergey
  • Город:МО, Лобня


Отправлено 04 сентября 2014 - 08:56

1) Верите, что нолик нельзя ввести в качестве слагаемого?

2) В том Вашем комментарии не было ни слова о классах эквивалентности. А вдруг реально не слышал? О_о

3) + что-то мне подсказывает, что 10 в качестве слагаемого использовать нельзя. Фразу "до десяти" можно понимать по-разному (включительно и не включительно). Но если включительно, то почему нельзя ввести 11,12,13 и т.д.?


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

#26 vmaximv

vmaximv

    Опытный участник

  • Members
  • PipPipPipPip
  • 350 сообщений

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

0.

при трудоустройстве на работу было выдано задание

- выдохнули, забыли про поверхностные интегралы, ТФПК, теорию множеств и т.д.
1.

протестировать калькулятор при условии ввода только целых чисел от одного до десяти

- нам ограничили возможность ввода интервалом [1;10], дабы исключить попытки написания негативных тестов и оставив возможность выполнить п.3.
2.

и возможности сложить

- нам толсто намекают, что это как-бы и не калькулятор, а простейший сумматор. Ну неужели трудно себе представить такой девайс, у которого *только* 10 кнопок от [1] до [10] и на экран выводится сумма двух последних нажатых кнопок?
3.

только 3 пары чисел

- нам толсто намекают на классы эквивалентности

Правильные варианты ответов:
Нубский:
1. 1+1    2. 10+10    3. 10+1
1. 2+9    2. 1+10      3. 10+1
Нормальный:
1. 1+2    2. 9+10      3. 10+1


  • 3

#27 Dalay_LAMO

Dalay_LAMO

    Опытный участник

  • Members
  • PipPipPipPip
  • 265 сообщений
  • ФИО:Дмитрий
  • Город:Санкт-Петербург


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

Правильные варианты ответов:
Нубский:
1. 1+1    2. 10+10    3. 10+1
1. 2+9    2. 1+10      3. 10+1
Нормальный:
1. 1+2    2. 9+10      3. 10+1


Мне кажется, правильным вариантом ответа стали бы вопросы от кандидата, чётко разъясняющие требования. А там, глядишь, и вопрос бы о трёх тестах отпал.
  • 1

#28 ch_ip

ch_ip

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 097 сообщений
  • ФИО:Павел Абдюшев
  • Город:Москва


Отправлено 04 сентября 2014 - 14:59

Кейсы будут принципиально разными в зависимости от:

  • объекта тестирования — устройство или программа;
  • границ указанного диапазон (10 может быть слагаемым или нет);
  • другой полученной информации при уточнении требований (например, почему речь идет о целых числах, а не натуральных).

Второй и третий кейсы могут меняться в зависимости от результата проверки первого и второго кейсов.
В варианте: "1. 1+2 2. 9+10 3. 10+1" минимум 1 кейс потрачен неэффективно.
 


  • 0

#29 AlyaSAV

AlyaSAV

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

  • Members
  • Pip
  • 7 сообщений

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

 

Правильные варианты ответов:
Нубский:
1. 1+1    2. 10+10    3. 10+1
1. 2+9    2. 1+10      3. 10+1
Нормальный:
1. 1+2    2. 9+10      3. 10+1


Мне кажется, правильным вариантом ответа стали бы вопросы от кандидата, чётко разъясняющие требования. А там, глядишь, и вопрос бы о трёх тестах отпал.

 

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


  • 0

#30 Куатор

Куатор

    Постоянный участник

  • Members
  • PipPipPip
  • 247 сообщений
  • ФИО:Комендантов Илья
  • Город:Украина, Одесса

Отправлено 04 сентября 2014 - 17:12

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

Мой ответ был 

1) 0+1

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

 

Доброго времени суток, 

Я бы начинал решение задачи с уточняющих вопросов, потому как контекст данной задачи неизвестен. Бросаться решать задачу, которую не до конца понимаешь - не сильно хорошая идея :)

 

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

 

Исследуем то, что есть (условие): Целый числа (а это и отрицательные тоже), от 1 до 10-ти (предположу, что 10-ть включено в диапазон, но это конечно же вопрос надо хотя бы упомянуть в ответе, если его некому задать).

Операция - сложение. Три кейса. 

 

Сразу скажу результат, который у меня получился:

-10 + -10 = -20

-1 + 1 = 0

10 + 10 

Три кейса, именно в этом порядке

 

Размышления:

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

 

Когда в задаче вижу числа на входе и на выходе, для меня это сразу сигнал - доменное тестирование (или упрощённый вариант - анализ граничных значений и классы эквивалентности). 

 

Разбиваем входные данные на домены: 

-1 ... -10

1 ... 10

Обращаем внимание, что 0-ль в них отсутствует!

 

Разбиваем выходные данные на домены:

-20 ... 20

Обращаем внимание, что 0-ль тут есть и эта ситуация обязательно должна быть включена в проверки!

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

 

Далее, при таких исходных данных у нас есть три ситуации (думается, посему и три кейса):

  1. Сложение двух отрицательных чисел
  2. Сложение отрицательного и положительного чисел
  3. Сложение двух положительных чисел

Первый кейс: 

 

-10 + -10 = -20, проверяет сразу несколько вещей:

  • Возможность калькулятора сложить два отрицательных числа (в результате получить число меньше любого из слагаемых)
  • Максимальные значения входных данных первого домена
  • Максимальное значение выходных данных (нижняя граница)
  • Возможность результата хранить знак, указывающий, что число отрицательное

 Второй кейс: 

 

-1 + 1 = 0, проверяет также несколько вещей:

  • Возможность калькулятора сложить отрицательное и положительное число
  • Минимальные границы обоих входных доменов
  • Уникальное значение выходного домена

Третий кейс:

 

10 + 10 = 20, проверяет тоже несколько вещей:

  • Возможность калькулятора сложить два положительных числа (получить результат больший любого из слагаемых)
  • Максимальную границу второго входного домена

Уже по количеству проверяемых вещей можно понять очерёдность проверок.

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

 

Ещё кейсы: 1 + 1 = 2, -1 + -1 = -2 .. проверяют только нижние границы, которые в условиях сложения, не очень-то и важны. Я бы их не делал.

 

Почему нет негативных кейсов, из условия задачи вообще не понятно как числа вводятся. Нигде не указано, что их можно ввести с клавиатуры, возможно эти данные предоставляет другая программа или они читаются из файла или напрямую из памяти (и интерпретируются как числа от одного до десяти), или ... 

Даже, если числа всё же вводятся с клавиатуры, проверки входного фильтра по приоритету ниже проверки логики. Опять же, сейчас они с клавы вводятся, а завтра, уже сервис предоставляет, логика же может оставаться неизменной. 

 

Также, нигде не указано, что программа выполняется на PC, может она заточена под какой-то микроконтроллер со своим ассемблером, регистрами памяти и прочей лабудой. Посему мы можем получить переполнение где-то после 16-ти (4 бита), -16 (5 бит), следовательно проверка границ более чем оправдана (+ к тому, что там возможны сбои из-за того, что это вообще граница).

Но при этом возрастает риск, что данные таки не сильно однородные ;)  

Все свои предположения и вопросы, необходимо указать в ответе, желательно вместе с объяснениями почему именно такие кейсы, как написано выше, например ;)


  • 1
Идеальный тестировщик - человек с золотыми руками, растущими из ж...

#31 ryjii

ryjii

    Активный участник

  • Members
  • PipPip
  • 101 сообщений
  • Город:Санкт-Петербург

Отправлено 04 сентября 2014 - 17:25

Куатор, а как у вас получилось, что входные данные из "от 1 до 10" превратились в "от 1 до 10 и от -1 до -10"?


  • 0

#32 Norf

Norf

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

  • Members
  • Pip
  • 57 сообщений
  • ФИО:Шлыков Константин
  • Город:Барнаул

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

Правильные варианты ответов:
Нубский:
1. 1+1    2. 10+10    3. 10+1
1. 2+9    2. 1+10      3. 10+1
Нормальный:
1. 1+2    2. 9+10      3. 10+1

А распишите, пожалуйста, почему так? У меня есть предположения, но я не уверен, что правильные.


  • 0

#33 vmaximv

vmaximv

    Опытный участник

  • Members
  • PipPipPipPip
  • 350 сообщений

Отправлено 05 сентября 2014 - 06:04

Опять "интегралы" - вы действительно думаете что уточняющие вопросы помогут вам ответить "Как звали водителя, какой был номер, и какое колесо не крутилось?" -_-
  

Кейсы будут принципиально разными в зависимости от:
объекта тестирования — устройство или программа;

Пашиму? Я показал пример такой программы своим первым постом в этой теме. Мне разница не очевидна.
 

границ указанного диапазон (10 может быть слагаемым или нет);

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

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

Ммм.. Нелинейные кейсы, покажите - всегда считал это "дурным тоном".
 

В варианте: "1. 1+2 2. 9+10 3. 10+1" минимум 1 кейс потрачен неэффективно.

Опять таки - почему? Я наоборот вижу незакрытую дырку (2,9).


  • 0

#34 Petrov.Sergey

Petrov.Sergey

    Опытный участник

  • Members
  • PipPipPipPip
  • 446 сообщений
  • ФИО:Petrov Sergey
  • Город:МО, Лобня


Отправлено 05 сентября 2014 - 06:08

 

Правильные варианты ответов:
Нубский:
1. 1+1    2. 10+10    3. 10+1
1. 2+9    2. 1+10      3. 10+1
Нормальный:
1. 1+2    2. 9+10      3. 10+1

А распишите, пожалуйста, почему так? У меня есть предположения, но я не уверен, что правильные.

 

Я не автор предлагаемого варианта, но в принципе понимаю ход мыслей при построении указанных множеств.

Все они преследуют следующие цели:

1) хотя бы в одном тесте первое слагаемое должно быть = 1

2) хотя бы в одном тесте второе слагаемое должно быть = 1

3) хотя бы в одном тесте первое слагаемое должно быть = 10

4) хотя бы в одном тесте второе слагаемое должно быть = 10

5) плюс надо проверить значения, близкие к границе (2 и 9)

6) надо проверить хотя бы одним тестом переполнение.

 

С чем я не согласен в приведённых вариантах - так это с некорректным определением границ и проверки данных вблизи границ.

Возьмём абстрактную задачу, в которой только один параметр Х, имеющий множество допустимых значений [A, B]. Какие числа надо проверять, подставляя в Х?

Очевидно, надо обязательно проверить А и В. Также надо обязательно проверить (А-1) и (В+1), чтобы убедиться, что числа А и В являются границами допустимого множества. Плюс обязательно нужно проверить хотя бы одно значение внутри отрезка. Любое, если все числа внутри отрезка принадлежат одному классу эквивалентности. Говорить однозначно, что надо проверить число Х = (А+В)/2, нельзя, потому что, проверяя каждый раз одно и то же значение, можно в будущем нарваться на "эффект пестицида". Поэтому Х = "любое число из промежутка (А,В)", меняющееся в каждом регресс-тесте.

Итого, надо проверить 5 чисел: (А-1), А, любое в промежутке (А,В), В, (В+1).

 

Собственно, сравнивая предложенную чуть выше абстрактную задачу и предложенное пользователем vmaximv решение, у меня возникает вопрос: зачем в тестах проверяются числа (А+1) и (В-1) ? Причём проверяются жёстко и безапелляционно. Они не являются граничными + они не являются "любыми внутри отрезка".

Я этого не понимаю и был бы рад прочитать объяснение автора - глядишь, может, чему-нибудь и научусь толковому.


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

#35 Куатор

Куатор

    Постоянный участник

  • Members
  • PipPipPip
  • 247 сообщений
  • ФИО:Комендантов Илья
  • Город:Украина, Одесса

Отправлено 05 сентября 2014 - 07:07

Куатор, а как у вас получилось, что входные данные из "от 1 до 10" превратились в "от 1 до 10 и от -1 до -10"?

Условие: "целых чисел от одного до десяти ", целые числа это и отрицательные тоже (пруф)


  • 0
Идеальный тестировщик - человек с золотыми руками, растущими из ж...

#36 vmaximv

vmaximv

    Опытный участник

  • Members
  • PipPipPipPip
  • 350 сообщений

Отправлено 05 сентября 2014 - 07:15

Условие: "целых чисел от одного до десяти ", целые числа это и отрицательные тоже (пруф)

Садитесь - два.
  • 0

#37 vmaximv

vmaximv

    Опытный участник

  • Members
  • PipPipPipPip
  • 350 сообщений

Отправлено 05 сентября 2014 - 07:17

зачем в тестах проверяются числа (А+1) и (В-1) ? Причём проверяются жёстко и безапелляционно. Они не являются граничными + они не являются "любыми внутри отрезка".
Я этого не понимаю и был бы рад прочитать объяснение автора - глядишь, может, чему-нибудь и научусь толковому.

Считайте это жалкой попыткой применить математическую индукцию. Хотите бить рандомом - ваше право.
  • 0

#38 ryjii

ryjii

    Активный участник

  • Members
  • PipPip
  • 101 сообщений
  • Город:Санкт-Петербург

Отправлено 05 сентября 2014 - 07:52

 

Куатор, а как у вас получилось, что входные данные из "от 1 до 10" превратились в "от 1 до 10 и от -1 до -10"?

Условие: "целых чисел от одного до десяти ", целые числа это и отрицательные тоже (пруф)

 

Отлично, что такое от 1 до 10? Подсказка, это либо 1<x<10, либо 1<=x<=10.

Про "от 1 до 10 по модулю" в условии не сказано ни слова.

 

Я не автор предлагаемого варианта, но в принципе понимаю ход мыслей при построении указанных множеств.

Все они преследуют следующие цели:

1) хотя бы в одном тесте первое слагаемое должно быть = 1

2) хотя бы в одном тесте второе слагаемое должно быть = 1

3) хотя бы в одном тесте первое слагаемое должно быть = 10

4) хотя бы в одном тесте второе слагаемое должно быть = 10

5) плюс надо проверить значения, близкие к границе (2 и 9)

6) надо проверить хотя бы одним тестом переполнение.

...вырезан кусок...

Собственно, сравнивая предложенную чуть выше абстрактную задачу и предложенное пользователем vmaximv решение, у меня возникает вопрос: зачем в тестах проверяются числа (А+1) и (В-1) ? Причём проверяются жёстко и безапелляционно. Они не являются граничными + они не являются "любыми внутри отрезка".

Я этого не понимаю и был бы рад прочитать объяснение автора - глядишь, может, чему-нибудь и научусь толковому.

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

Во-вторых, 0 и 11 - это элементы классов эквивалентности "меньше минимума" и "больше максимума". Если нет никаких дополнительных знаний о программе, этот вариант ничем не лучше и не хуже вариантов -256 и 1337.


  • 0

#39 ch_ip

ch_ip

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 097 сообщений
  • ФИО:Павел Абдюшев
  • Город:Москва


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

Опять "интегралы" - вы действительно думаете что уточняющие вопросы помогут вам ответить "Как звали водителя, какой был номер, и какое колесо не крутилось?" -_-

Моя твоя не понимать

Кейсы будут принципиально разными в зависимости от:
объекта тестирования — устройство или программа;

Пашиму? Я показал пример такой программы своим первым постом в этой теме. Мне разница не очевидна.

Патаму шта софт задействует стандартные интерфейсы ввода-вывода, а в девайсе их тестировать нада.
 

границ указанного диапазон (10 может быть слагаемым или нет);

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

Круто, когда тестировщики точно знают, что подразумевалось в требованиях, умеют читать мысли заказчика и уверены в том, как требования понял программист.
Попробуйте в любом идущем проекте поиграть в интересную игру. Берете любой кусок требований, который сложнее, чем 2+2 и спрашиваете у разных участников проекта, как это должно работать с их точки зрения. Узнаете много нового ;-)

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

Ммм.. Нелинейные кейсы, покажите - всегда считал это "дурным тоном".

А вы знаете, какая цель преследуется этими тремя кейсами?
допустим, кейс 1+5 не работает. Тогда второй кейс будет точно содержать слагаемое "2".

В варианте: "1. 1+2 2. 9+10 3. 10+1" минимум 1 кейс потрачен неэффективно.

Опять таки - почему? Я наоборот вижу незакрытую дырку (2,9).

Потому что мне неясно, зачем нужен кейс 10+1.
  • 0

#40 ch_ip

ch_ip

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 097 сообщений
  • ФИО:Павел Абдюшев
  • Город:Москва


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

О-хо-хо. Во-первых, ваше утверждение, что надо проверять 2 и 9, абсолютно не имеет ничего общего с классами эквивалентности и граничными условиями. С этой точки зрения проверять 2, 5 или 9 - абсолютно всё равно.
Во-вторых, 0 и 11 - это элементы классов эквивалентности "меньше минимума" и "больше максимума". Если нет никаких дополнительных знаний о программе, этот вариант ничем не лучше и не хуже вариантов -256 и 1337.

Я правильно понимаю, что есть всего три класса эквивалентности при тестировании чисел:

1. заданный по требованиям интервал;

2. всё, что меньше левой границы интервала;

3. всё, что больше правой границы интервала.

И границы отдельно тестировать не надо, это лишняя трата времени?


  • 0



Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных