Пример тестирования веб-страницы

В последнее время разрабатывается огромное количество веб-страниц и появляется необходимость протестировать работоспособность всех компонентов с данной страницы. Естественно веб-страницы постоянно расширяются и поэтому мы должны постоянно обновлять и расширять свой драйвер для тестирования. Изменять и дополнять сам код драйвера работа трудоемкая. Поэтому используется следующий подход: создается библиотека функции для тестирования веб-страницы: переход по ссылке, проверка загрузки страницы, клик по компоненту, ввод поля, логин, логаут и т.д. Далее создается входная матрица, в которую записывается все действия, которые предпринимаются для тестирования, эти действия основаны на описанных нами библиотечных функциях. Таким образом при обновлении страницы нам нет необходимости обновлять сам драйвер, мы просто дополняем нашу матрицу и репозитории объектов. Пример входной матрицы:

Include Action URL Name Pwd Link Text
Y Navigate www.web.com        
Y Login   User Password    
Y Click       My Page  
Y Click       Create message
Y Edit       InputBox Hello World
N Edit       InputBox This will not be executed
N Edit       InputBox This will not be executed
Y Click       Send message
N Logaut          
Y Click       My page  
Y Logaut          

 

Колонка Include содержит Y/N, при желании мы можем временно пропустить выполнение определенного шага. Action – это название вызываемой функции. Name и Pwd – это поля для определенной нами функции Login. Link содержит ссылки по которым будет щелкать наш драйвер. Text – это текст который будет вводится в определенный Inputbox.

Репозитории объектов – это некоторый модуль, в котором описаны все классы, с которыми мы работаем (Мy_page, Send message, Create message и тд.). Далее в нашем драйвере мы описываем обобщенные функции, которые выполняю определенное действие для объектов всех классов. (Специальные средства автоматического тестирования типа Quick Test Professional позволяют автоматически считывать с любого окна объекты в репозитории).

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

 

M ß InputMatrix()

For i ß 1 to M.Length

MatrixParsing(i)

 

MatrixParsing(int i)

if M[i][1] == ‘N’

then return

else

void (*fptr)(void) // Определяем указатель на функцию (или делегат С#)

fptr = FabricFunction(M[i][2])

switch(M[i][2])

“Navigate”:

Begin

fptr(M[i][3])

LogAction(i, M[i][2])

end

“Click”:

Begin

fptr(M[i][6])

LogAction(i, M[i][2])

end

“Edit”:

Begin

fptr(M[i][7])

LogAction(i, M[i][2])

End

“Login”:

Begin

fptr(M[i][4], M[i][5])

LogAction(i, M[i][2])

end

“Logout”:

Begin

fptr()

LogAction(i, M[i][2])

End

 

FabricFunction(char *) – это фабричная функция, которая в зависимости от входного параметра возвращает указатель на определенную функцию.

LogAction() – функция логирования, которая записывает в лог-файл все наши действия.