Тестирование софта - статьи

       

Поставленная задача


Разработка и реализация методов автоматизированной генерации набора функциональных тестов для GUI mpC Workshop[10,11].

mpC Workshop – это среда для разработки приложений для параллельных вычислений на языке mpC[12,13,14] с функциональностью графического интерфейса типичной для такого типа систем. Ниже приведён типичный screenshot mpCWorkshop:

Для тестирования базовой функциональности была составлена базовая диаграмма состояний и переходов mpC Workshop. Ниже приведены фрагменты это диаграммы (включая поддиаграммы).

Главная диаграмма выглядит следующим образом:

Такие объекты типа Activity, как "mpCWP", "mpCWB", "mpCWF", "mpcd", "Finished", "Workspace" означают наличие под собой поддиаграмм. Ниже приведены поддиаграммы, соответствующие объектам" mpCWP" и " mpCWB".


С Activity "Connect to Server" связана следующая поддиаграмма:

Как видно из рисунков, на этих поддиаграммах тоже есть поддиаграммы. Фактически, каждый объект типа Activity скрывает под собой часть функциональности системы. Под "mpCWB" содержится описание функциональности, связанной с работой с сервером, под "mpCWP" содержится описание функциональности, связанной с работой с проектом, под "mpCWF" содержится описание функциональности, связанной с работой с файлами, и т.д.

В этой базовой диаграмме используется 12 переменных с начальными значениями, приведёнными ниже:



  • connect, 0
  • connectbroken,0
  • mpcd, 0
  • exec, 2
  • build,0
  • compile,0
  • projectopen, 0
  • projectbuild, 0
  • projectexist, 0
  • projectpathenter, 0
  • projectpathcorrect, 0
  • openfilempcifproject,0

Практически с каждым объектом на диаграмме связаны тестовые инструкции на языке SQABasicScript. Ниже в таблице приведены примеры этих инструкций, связанных с управляющими состояниями и переходами:

mpCWorskhop Window SetContext, "Caption={mpC Worksho*}; State=Enabled", "Activate=1; Status=MAXIMIZED"
Result = ModuleVP (Exists, "Name = mpcworkshop.exe", "ExpectedResult = PASS")
go mpCWP InputKeys "%p"
Connect Window SetContext, "Caption={mpC Worksho*}; State=Disabled", "Activate=0; Status=MAXIMIZED"
Window SetContext, "Caption=Connect to server; State=Enabled", "Activate=1"
PushButton Middle_Click, "Text=Start server;State=Enabled"
PushButton Middle_Click, "Text=Close;State=Enabled"
PushButton Middle_Click, "Text=Advanced >>;State=Enabled"
PushButton Middle_Click, "Text=Connect;State=Enabled"
CheckBox Middle_Click, "Text=Once"
CheckBox Middle_Click, "Text=Hidden"
ListView Click, "Text=List1;\;ItemText=DIVER", ""
uConnect PushButton Click, "Text=Connect;State=Enabled"

И так далее….

Генератор тестов для данной диаграммы генерирует тесты за время порядка 1-й минуты. Суммарный размер выходных тестов равен 1541024 байта, что примерно равно 1.5 мегабайта.

На данной диаграмме изображено 14 управляющих состояний, тогда как в процесее генерации тестов воспроизводится 258 реальных состояний системы (то есть управляющих состояний и значений переменных).

Ниже приведен начальный кусок сгенерированного тестового кода. Видно, что тестовые воздействия перемежаются с оракулом заданных свойств состояний. Также вставляется строка: '------cutting line------.

Она вставляется после каждого законченного набора тестовых инструкций, связанных с одним объектом диаграммы. Эта строка требуется для осмысленного разрезания сгенерированного скрипта, так как его размер примерно равен 1.5 мегабайта, а у прогонщика тестов Rational Robot есть ограничение на тест в размере 20 килобайт. Таким образом, большой тест разрезается на маленькие кусочки по линиям разреза для дальнейшего последовательного прогона.

Sub Main ' copyright by ISP RAS 2004 ' implemented by A.Sokolov SQALogMessage sqaPass, "Starting test № 0", "" ' Initially Recorded: 07.06.2004 20:20:53 ' Class № 0 with name . ' Attributes: connect = 0, connectbroken = 0, mpcd = 0, exec = 2, build = 0, compile = 0, projectopen = 0, projectbuild = 0, projectexist = 0, projectpathenter = 0, projectpathcorrect = 0, openfilempcifproject = 0, IDState = 0, workDirectory$ = "E:\Alexey\Work\mpCGUITesting\mpCGUITestingProjects" '------cutting line------ StartApplication "mpcWorkshop" '------cutting line------ … Прогон сгенерированного теста длится около 50-ти минут. Скорость ввода символов и нажатия на объекты системы ограничена возможностями инструмента, но, тем не менее, она велика, и человеку практически невозможно совершать действия с такой скоростью.


Содержание раздела