Цель тестирования — это нахождение багов до того, как их найдут пользователи.



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

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

А теперь:

Черная магия

И ее немедленное разоблачение

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

 

25



 


Цель тестирования Decoded                                                                    27

ПЕРВАЯ КОНЦЕПЦИЯ: цель тестирования — это 100%-я про­верка ПО.

РАЗОБЛАЧЕНИЕ ПЕРВОЙ КОНЦЕПЦИИ

Вот вам код, написанный на языке программирования Python (здесь и далее номер является номером строки для удобства ссы­лок и не принадлежит к коду, за знаком # следует комментарий для данной строки):

1. user input = raw_input ("What is your totem animal?") # "Введите название вашего тотемного животного".

2. if user_ input == "frog": # ЕСЛИ пользователь ввел "лягушка",

3. print "You probably like green color" # вывести на
экран "Вероятно, вам нравится зеленый цвет".

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).

Пустой ввод (Null 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%-ю проверку не хватит и пяти жизней. Шести жизней хватить должно, но они будут самыми печальными из всех исто­рий о бессмысленном существовании.

Постановка мозгов

В мире с ограниченными ресурсами (например, время на тестирова­ние) 100%-е тестирование ПО — это фикция (я говорю о реальном ПО, а не о программах из наших примеров) и единственное, что мы можем сделать как тестировщики, это профессионально, творчески и добросовестно спланировать и провести наше тестирование. Про­сочившиеся баги это неизбежное зло, но свести его к мини­муму в наших руках.

ВТОРАЯ КОНЦЕПЦИЯ: критерий эффективности тестирования — это количество багов, найденных до релиза.


Дата добавления: 2018-05-02; просмотров: 651; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!