Принципы тестирования

Что такое тестирование?

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

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

Каждую ошибку следует внимательно изучить, чтобы понять, почему она возникла, что должно было быть сделано, чтобы ее предотвратить или обнаружить раньше. Удачным считается тест, который обнаружил ошибку. Если ни одна ошибка не была обнаружена, то тест считается неудачным.

 

 

Удачный и неудачный тест

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

В этом смысле меняются понятия удачного и неудачного теста. Если мы запустили тест и получили правильный результат - это неудачный тест, ведь мы не нашли ошибку! А вот если продукт проработал неправильно или вообще 'вылетел' , то мы должны радоваться, поскольку напали на след ошибки. Еще раз привлекаю ваше внимание к факту: при тестировании удачным считается тот тест, при котором выявлена ошибка и неудачным, при котором выявление ошибки не произошло.

Программа -- детище программиста

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

А процесс тестирования, в отличие от написания программ, есть разрушающий процесс. Все это говорит о том, что разумнее всего тестирование проводить другому человеку. чужое мы ломать любим. Над нашей программой постоянно висит проклятие ошибочности. Мы никогда не должны говорить такие слова: 'эта программа отлажена'. Отлаженных полностью программ не бывает вовсе.

 
 

Что такое ошибка?

Теперь разберемся в том, что такое ошибка, иначе непонятно, что мы должны обнаруживать. В программе есть ошибка, если ее поведение не соответствует документации. Но, во-первых, программы довольно часто бывают написаны лучше, чем документированы. И ошибок в документации бывает не меньше, а зачастую больше, чем в программах. Во-вторых, в документации обычно описывается 'штатная' работа. Например, в документации написано: 'нажмите кнопку ВНИМАНИЕ и введите команду'. Пользователь по запарке нажимает кнопку два раза, и система выходит из строя. Ошибка это или нет?
Разумеется, ошибка.

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

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

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

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

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

 
Hosted by uCoz