tестирование dot com
Шрифт:
4. elif user_input == "owl": # ЕСЛИ пользователь ввел "сова",
5. print "You probably like grey color" # вывести на
экран "Вероятно, вам нравится серый цвет".
6. elif user_input == "bear ": # ЕСЛИ пользователь ввел "медведь", 7. print "You probably like brown color" # вывести на
экран "Вероятно, вам нравится коричневый цвет".
8. elif user_input == "": # ЕСЛИ
данных,
9. print "Probably, you don't know what is your totem
animal" # вывести на экран "Вероятно, вы не знаете свое
тотемное животное".
Это маленькая, симпатичная и на первый взгляд никчемная про-
грамма послужит нам для того, чтобы мы увидели 4 условия
(conditions), одно из которых заработает, если мы ее запустим.
Если условие верно, например, пользователь ввел "frog", то, как
за преступлением — наказание (в идеальном случае), наступает
последствие — выполнение условия (конечно, если код
работает) — вывод на экран текста "You probably like green
color". Ежу понятно, что для тестирования нам нужно проверить
все 4 условия.
1. Ввести "frog".
2. Ввести "owl".
3. Ввести "bear".
4. Ничего не вводить, а просто равнодушно нажать Enter.
28
Тестирование Дот Ком.Часть 1
Однако если ввести "hedgehog" ("еж"), то Python по-английски
(т.е. без всякого сообщения) закончит выполнение программы.
Итак, добавим к нашим четырем условиям игольчатое пятое:
5. Любой ввод, отличный от ввода 1—4 включительно.
Постановка мозгов
Везде, где есть ввод (input) данных, у нас есть два пути:
1. Ввод действительных данных (valid input).
2. Ввод недействительных данных (invalid input).
Пустой ввод (Nul input) может принадлежать как к действительному,
так и к недействительному вводу в зависимости от спецификации.
Например, при регистрации в поле для Имени буквы (letters) или в со-
четании буквы и пробелы (white space) — это действительный ввод,
цифры (numbers), специальные знаки (special characters, например "&")
и/или пустой ввод — это недействительный ввод. Если спек не делает
уточнений, что есть действительный и недействительный ввод, посы-
лайте е-мейл продюсеру, а если спека нет в принципе, то полагайтесь
на пункт 5 источников из предыдущей лекции.
Итак, у нас есть пять условий, и нам вполне по силам проверить
каждое из них.
Что, если условий у нас 1000?
Пример
1. for line in range( 1000): # для каждого номера от 0 до 999
2.
print "My number is "+str(line) # напечатать значение номера.
Первым значением вывода будет "My number is 0 ".
Последним значением вывода будет "My number is 999 ".
Допустим, что мы должны протестировать каждое из 1000 кон-
кретных значений вывода. Ожидаемым результатом первого вит-
ка цикла будет 0, второго — 1, энного — {п - 1).
Если кому-то проверка 1000 ожидаемых результатов покажется
терпимой задачей, то мы можем привести пример со встроенным
циклом:
Пример (do not try it at home — не пытайтесь запустить этот код на
своем компьютере!)
1. for line in range( 1000): #для каждого номера от 0 до 999
2.
for item in range( 1000): # для каждого номера от 0 до 999.
3.
amount =line + item # сложить два значения.
4.
print "Сумма равна "-/-amount # напечатать значение суммы.
Цель тестирования Decoded
29
В итоге получается миллион (1000 х 1000) ожидаемых результатов.
Добавим масла в огонь: в большинстве случаев с реальным ПО
мы интегрируем одни части кода с другими и в итоге получаем
столько вариантов конкретных значений ожидаемых результатов,
что на 100%-ю проверку не хватит и пяти жизней. Шести жизней