VTest не может запустить процесс OWASP ZAP с кодом 1 - PullRequest
1 голос
/ 31 мая 2019

Я пытался заставить инструмент OWASP ZAP автоматически запускать мой код. Я успешно написал метод, который последовательно работает через интерфейс Text Explorer Visual Studio 2017 на моем локальном компьютере. Однако всякий раз, когда я пытаюсь запустить один из моих автоматических тестовых окон с помощью инструмента командной строки удаленного тестирования, запускаемого TFS, он всегда завершается ошибкой с кодом 1 и без другого текста ошибки.

Я использую ту же версию Windows 10 локально и в тестовом окне. У меня установлена ​​одна и та же версия visual studio, поэтому я ожидаю, что они будут использовать одну и ту же версию VTest для запуска тестов. На самом деле я не уверен, что VTest участвует, так как я перешел на Selenium, и в любом случае он запускается как модульный тест без компонента GUI.

Я попытался установить защиту для файла .bat и файла .exe, который он вызывает для Аутентифицированных пользователей с полным доступом, потому что я думал, что это может быть проблема с разрешениями.

Я посмотрел в журнале событий, но там нет никаких подробностей. Как будто этого никогда не было.

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

Я также пытался вручную выполнить команду, которую пытаюсь запустить через командную строку, и когда я делаю это вручную в окне тестирования, она работает отлично. Ящик TFS вошел в систему и работает как пользователь, с которым я пытался выполнить ручное тестирование, и этот пользователь является локальным администратором на этом ящике.

Поскольку это работает локально на моем компьютере, и поскольку я могу успешно выполнить команду вручную в окне теста, проблемным компонентом является удаленный агент TFS. Удаленный агент успешно запустил два других процесса для тестирования Selenium, один из которых является драйвером IE, а другой - WinAppDriver; WinAppDriver имеет отдельное командное окно, связанное с ним при запуске. Однако оба эти процесса запускаются оболочкой Selenium, я не запускаю процессы непосредственно.

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

        string ZapBatLocation = @"C:\Program Files\OWASP\Zed Attack Proxy\zap.bat";
        var last_idx = ZapBatLocation.LastIndexOf('\\');

        var _ZapProc = new System.Diagnostics.Process();
        _ZapProc.StartInfo = new System.Diagnostics.ProcessStartInfo(ZapBatLocation.Substring(last_idx + 1), "-daemon") { WorkingDirectory = ZapBatLocation.Substring(0, last_idx), UseShellExecute = true, CreateNoWindow = false };
        _ZapProc.ErrorDataReceived += ErrOutputHandler;

        _ZapProc.Start();
        System.Threading.Thread.Sleep(2000); // give it time to launch and die if it is going to
        if (_ZapProc.HasExited)
            throw new Exception($"Unable to launch ZAP process, exited with code {_ZapProc.ExitCode}.");

EDIT: Кажется, что файл журнала указывает на какое-то повреждение конфигурации. возможно проблема безопасности в файле конфигурации где-нибудь? Вот выдержка из того, что кажется основной ошибкой, которая часто появляется в журнале:

2019-05-30 16: 26: 34,178 [AWT-EventQueue-0] Элемент управления INFO - новый сеанс 2019-05-30 16: 26: 34,209 [AWT-EventQueue-0] Элемент управления INFO - создание и Открытый без названия БД 2019-05-30 16: 26: 34,240 [AWT-EventQueue-0] INFO ДВИГАТЕЛЬ - запуск фиксации dataFileCache 2019-05-30 16: 26: 34,240 [AWT-EventQueue-0] ИНФОРМАЦИОННЫЙ ДВИГАТЕЛЬ - окончание фиксации dataFileCache 2019-05-30 16: 26: 34,256 [AWT-EventQueue-0] INFO ENGINE - База данных закрыта 2019-05-30 16: 26: 34,396 [AWT-EventQueue-0] INFO ENGINE - открытый запуск - состояние не изменено 2019-05-30 16: 26: 34,459 [AWT-EventQueue-0] ИНФОРМАЦИЯ ДВИГАТЕЛЬ - dataFileCache, открытый запуск 2019-05-30 16: 26: 34,475 [AWT-EventQueue-0] ИНФОРМАЦИОННЫЙ ДВИГАТЕЛЬ - открытый конец dataFileCache, 2019-05-30 16: 26: 35,615 [ZAP-cfu] ОШИБКА ExtensionAutoUpdate - Невозможно загрузить конфигурация org.apache.commons.configuration.ConfigurationException: Невозможно загрузить конфигурацию в org.apache.commons.configuration.XMLConfiguration.load (XMLConfiguration.java:955) в org.apache.commons.configuration.XMLConfiguration.load (XMLConfiguration.java:908) в org.apache.commons.configuration.XMLConfiguration $ XMLFileConfigurationDelegate.load (XMLConfiguration.java:1583) вorg.apache.commons.configuration.AbstractFileConfiguration.load (AbstractFileConfiguration.java:324) в org.apache.commons.configuration.AbstractFileConfiguration.load (AbstractFileConfiguration.java:261) в org.apache.commons.configuration.AbstractFileConfiguration.load (AbstractFileConfiguration.java:238) в org.apache.commons.configuration.AbstractHierarchicalFileConfiguration.load (AbstractHierarchicalFileConfiguration.java:184) в org.zaproxy.zap.utils.ZapXmlConfiguration. (ZapXmlConfiguration.java:88) в org.zaproxy.zap.extension.autoupdate.ExtensionAutoUpdate.getPreviousVersionInfo (ExtensionAutoUpdate.java:883) в org.zaproxy.zap.extension.autoupdate.ExtensionAutoUpdate.getNewAddOns (ExtensionAutoUpdate.java:902) в org.zaproxy.zap.extension.autoupdate.ExtensionAutoUpdate.gotLatestData (ExtensionAutoUpdate.java:1139) в org.zaproxy.zap.extension.autoupdate.ExtensionAutoUpdate $ 8.run (ExtensionAutoUpdate.java:983) Вызванный: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Неверный байт 2 3-байтовой последовательности UTF-8. в com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.invalidByte (Неизвестно Источник) в com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read (Неизвестно Источник) в com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.load (Неизвестно Источник) в com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.skipChar (Неизвестно Источник) в com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl $ FragmentContentDriver.next (Неизвестно Источник) в com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next (Неизвестно Источник) в com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument (Неизвестно Источник) в com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse (Неизвестно Источник) в com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse (Неизвестно Источник) в com.sun.org.apache.xerces.internal.parsers.XMLParser.parse (Неизвестно Источник) в com.sun.org.apache.xerces.internal.parsers.DOMParser.parse (Неизвестно Источник) в com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse (Неизвестно Источник) в org.apache.commons.configuration.XMLConfiguration.load (XMLConfiguration.java:942) ... еще 11 2019-05-30 16: 26: 45,052 [Тема-10] INFO ENGINE - начало фиксации dataFileCache 2019-05-30 16: 26: 45,052 [Thread-10] INFO ENGINE - конец фиксации dataFileCache 2019-05-30 16: 26: 45,084 [Тема-10] INFO ENGINE - База данных закрыта 2019-05-30 16: 26: 45,193 [Тема-10] INFO Control - OWASP ZAP 2.7.0 прекращено.

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

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

1 Ответ

0 голосов
/ 26 июня 2019

Я не совсем уверен, что это можно назвать ответом, но проблема больше не существует, так что здесь.

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

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

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

echo 'hi'
pause

Затем вставьте вызов в код прямо над вызовом, чтобы запустить файл .bat ZAP. Просто чтобы посмотреть, может ли код вообще что-либо запускать, или это было что-то специфическое для файла .bat ZAP.

var bt = new System.Diagnostics.Process();
bt.StartInfo = new System.Diagnostics.ProcessStartInfo("C:\\selenium\\test.bat");
bt.Start();
...