OpenQuality.ru

Качество программного обеспечения

Качество программного обеспечения: в главных ролях

Лента  Радар  Блог  Опыт  
Разум  Видео  Заметки  Эпизоды


AutoIt: скрытые возможности

Добрый день.

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

Считываем информацию о видимых окнах (WinList) до и после выполнения критического участка кода. Если количество окон изменилось, делаем скриншот экрана (_ScreenCapture_Capture).

#include <ScreenCapture.au3>
 
Func _isVisible($handle)
   If BitAnd( WinGetState($handle), 2 ) Then 
       Return 1
   Else
       Return 0
   EndIf
EndFunc
 
Func _winNumber ($var)
   Local $winNumber = 0
   For $i = 1 to $var[0][0]
	If $var[$i][0] <> "" AND _isVisible($var[$i][1]) Then
         $winNumber = $winNumber + 1
      EndIf
   Next
   Return ($winNumber)
EndFunc
 
$winBefore = WinList()
$winNumberBefore = _winNumber($winBefore)
 
; As if it is THE unexpected window :-)
Run("notepad.exe")
Sleep(2000)
 
$winAfter = WinList()
$winNumberAfter = _winNumber($winAfter)
 
If ($winNumberAfter <> $winNumberBefore) Then
   _ScreenCapture_Capture(@ScriptDir & "\strange_window.jpg")
EndIf

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

Еще один вариант - воспользоваться функциональностью Adlib. Вот цитата из документации:

AdlibEnable ( “function” [, time] )
Enables Adlib functionality.

Every 250 ms (or time ms) the specified “function” is called–typically to check for unforeseen errors. For example, you could use adlib in a script which causes an error window to pop up unpredictably. The adlib function should be kept simple as it is executed often and during this time the main script is paused. Also, the time parameter should be used carefully to avoid CPU load.

AdlibDisable ( )
Disables the adlib functionality.

В AutoIt есть немало полезных заготовок, которые можно применять в автотестах. Лучший источник информации по AutoIt: документация к продукту и форум. А нас с вами ждут другие инструменты. До встречи.

Отправить в Twitter, Facebook, FriendFeed, ВКонтакте | Опубликовано 12.10.2008 в рубрике "Автоматизация"

Комментарии (6)

  1. Автор комментария : Artour Bakiev | December 8, 2008

    Было интересно читать всю серию заметок про AutoIt.
    Между прочим, автор заинтриговал фразой “разработчики AutoIt не ставили целью создать среду для тестирования других приложений”. А в чём состояла цель разработчиков AutoIt?

    [Ответить]


  2. Автор комментария : Капитан Аляска | December 8, 2008

    Артур, спасибо за комментарий. Отвечу цитатой:

    AutoIt v3 is a freeware BASIC-like scripting language designed for automating the Windows GUI and general scripting… AutoIt was initially designed for PC “roll out” situations to reliably automate and configure thousands of PCs. Over time it has become a powerful language that supports complex expressions, user functions, loops and everything else that veteran scripters would expect.

    То есть, о тестировщиках Jonathan Bennett вряд ли думал напрямую (кстати, Jon довольно отзывчив: очень мешавший мне bug в AutoItX он по запросу пофиксил в ближайшем релизе). Приятный момент состоит в том, что результат его труда можно с успехом применять в тестировании :)

    [Ответить]


  3. Автор комментария : NAWHI | April 23, 2009

    Давно уже использую AutoIt для автоматизации бенчмаркинга. Классная штука. Один момент досадует: во всём многообразии её функционала, я так и не нашёл функции, которая позволяла бы выяснить загрузку процессора. А так было бы здорово…

    [Ответить]


  4. Автор комментария : Капитан Аляска | April 23, 2009

    NAWHI, спасибо за комментарий.

    Наверное, я бы задействовал Performance Counters. Считывал бы значение нужного каунтера какой-нибудь внешней утилитой (скажем, скриптом на javascript или powershell) и обрабатывал результат в AutoIt.

    На форуме можно поискать, как энтузиасты AutoIt решали подобные задачи. Вот, к примеру:

    http://www.autoitscript.com/forum/index.php?showtopic=87260&hl=CPU%20benchmark&st=0

    Или вот:

    http://www.autoitscript.com/forum/index.php?showtopic=90736&hl=cpu+counter

    [Ответить]


  5. Автор комментария : sova | January 27, 2012

    Какие отличия или преимущества у Autoit и AutoHotkey?

    [Ответить]


  6. Автор комментария : Капитан | January 29, 2012

    Sova, у AutoIt функциональность побогаче и множество расширений.

    [Ответить]



Добавить комментарий

Пожалуйста, исправьте результат: дважды два равно



КРАТКОЕ СОДЕРЖАНИЕ

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


ПУТЕВОДИТЕЛЬ

Список всех статей с краткой аннотацией и разбивкой по рубрикам. Открыть карту.

ПОДПИСКА

Доступ к самым интересным материалам по электропочте и RSS. Подробности.

ИЩЕЙКА