Тестирование программного обеспечения. Базовый курс. 3-е издание



Pdf көрінісі
бет280/307
Дата03.07.2023
өлшемі5,03 Mb.
#179304
1   ...   276   277   278   279   280   281   282   283   ...   307
Байланысты:
Software Testing - Base Course (Svyatoslav Kulikov) - 3rd edition - RU

Уровень анализа 
Наблюдаемая ситуация 
Рассуждения и выводы 
Причина N 
Факт: во всех параметрах командной 
строки начальный «/» удаляется из пол-
ного пути. Проверка с относительными пу-
тями («php converter.php . .») и проверка 
под Windows («php converter.php c:\ d:\») 
показывает, что в таких ситуациях прило-
жение работает. 
Дело явно в обработке вве-
дённых имён: в некоторых 
случаях имя обрабатывается 
корректно, в некоторых — нет. 
Гипотеза: убираются началь-
ные и концевые «/» (может 
быть, ещё и «\»). 
Причина N-1 
Проверки «php converter.php \\\\\c:\\\\\ 
\\\\\d:\\\\\
» и «php converter.php /////c:///// 
/////d://///
» показывают, что приложение под 
Windows 
запускается, корректно распо-
знав правильные пути: «Started with 
parameters: SOURCE_DIR=[C:\], 
DESTINATION_DIR=[D:\]
» 
Гипотеза подтвердилась: из 
имён каталогов приложение 
убирает все «/» и «\», в любом 
количестве присутствующие в 
начале или конце имени. 
В принципе, на этой стадии уже можно писать отчёт о дефекте с кратким опи-
санием в стиле «Удаление краевых “/” и “\” из параметров запуска повреждает аб-
солютные пути в Linux ФС». Но что нам мешает пойти ещё дальше? 


Поиск причин возникновения дефектов
Тестирование программного обеспечения. Базовый курс. 
© EPAM Systems, 2015–2023
 
Стр: 255/301 
Таблица 2.7.l [продолжение] 
Уровень анализа 
Наблюдаемая ситуация 
Рассуждения и выводы 
Причина N-2 
Гипотеза: где-то в коде есть первичный 
фильтр полученных значений путей, кото-
рый обрабатывает их до начала проверки 
каталога на существование. Этот фильтр 
работает некорректно. Откроем код 
класса, отвечающего за анализ парамет-
ров командной строки. Очень быстро мы 
обнаруживаем метод, который виновен в 
происходящем: 
private function getCanonicalName($name) 

$name = str_replace('\\', '/', $name); 
$arr = explode('/', $name); 


Достарыңызбен бөлісу:
1   ...   276   277   278   279   280   281   282   283   ...   307




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет