Last Updated on Temmuz 1, 2025 by EDİTÖR
Testten nefret ediyorum! Yine de iyi bir yazılım çözümü için çok önemli olduğunu anlıyorum. Sık sık GUIS ile karşı karşıya olduğum için, kendime mümkün olduğunca en az manuel girişle nasıl test edeceğimi sordum. Burada size Autoit ile bir yol göstereceğim.

Autoit’e tökezledim IX Makalesi Alman sigorta şirketi CosmosDirect’in test otomasyonuna odaklanan yeni bir BT projesi hakkında yazdığı dergi. Bazı süslü web ön uçlarına ve arka uçlarında ağır PL-SQL mantığına rağmen, bir şişman istemciden bahsediyorlardı. Bu şişman müşteriyi test etmek hikayenin bir parçası değildi ama aracı yönettiler Oto.
Autoit V3, Windows GUI ve genel komut dosyasını otomatikleştirmek için tasarlanmış bir ücretsiz temel benzeri komut dosyası dilidir. Görevleri diğer dillerle mümkün veya güvenilir olmayan bir şekilde otomatikleştirmek için simüle tuş vuruşları, fare hareketi ve pencere/kontrol manipülasyonu kombinasyonunu kullanır.
outoitscript.com
Autoit ile A’dan Z’ye testi yapmayacağım. Yine de temel fikirleri karşılamak istiyorum:
Bu “ilk adımlar” yoluyla temel prensip bir şekilde şöyle tanımlanabilir: Fare olmadan QGI’leri kullanmaya çalışın. Otomatik testlerde tanımlayıcılar kullanma veya “görüntü tanıma” gibi farklı yaklaşımlar vardır. Ancak Autoit’ten gelen, sade ve basit ama güçlü bir yaklaşıma oldukça yaklaşıyor. Ve zaten 20 yaşında…
Otomatik test çalışmaları için Autoit belirli bir dil kullanır. Bu nedenle test komut dosyaları yazmanız gerekir. Bunları doğrudan düzenleyiciden çalıştırabilir veya bunları derleyebilir (yalnızca Windows’ta otomatik çalıştırır) ve oluşturulan exe dosyasını başlatabilirsiniz.
Bu örnekte, bir müşteri üzerindeki bir kurulumdan sonra bir duman testi için Autoit kullanıyorum:
Oluşturduğum senaryo, Göndermek kullanarak GUI’de gezinme komutu Sekme– Down_key ve girin. Kullanıcı adı ve QGIS penceresinin kendisi için değişkenler kullanıyorum. Tüm Testrun’un çalışması sadece 13’ler alır, ancak temel işlevselliği kapsar ve çim veya python aletlerinin kullanımını ve bazı oluşturma işlevlerini kapsayacak şekilde daha fazla çizgi ile kolayca geliştirilebilir:
#include ; need this for the mouse clicks
Run("C:Program FilesQGIS 3.4binqgis-ltr-bin-g7.exe") ; starting the program
Local $qgis = WinWaitActive("Unbenanntes Projekt - QGIS")
WinSetState ($qgis, "", @SW_MAXIMIZE) ; maximise the working window
Send("^+n"); ctrl Shift n for new geopackage Layer
WinWaitActive("Neuer GeoPackage-Layer") ; waiting for the window to appear
Send("{TAB 3}") ; Presses the DEL key 3 times
; damn navigation fro creating a Geopackage layer...
Send("Test_Table") ;
Send("{TAB}")
Send("{DOWN}")
Send("{TAB 4}")
Send("Name") ;
Send("{TAB 2}")
Send("255")
Send("{TAB}")
Send("{SPACE}")
Send("{TAB}")
Send("C:Users" & @UserName & "DocumentsGIS DataBasetest")
Send("{ENTER}")
; should be ready now
WinWaitActive($qgis)
Send("!l") ;switch to Layer menu ALT+L
Send("{DOWN 8}")
Send("{ENTER}"); open edit mode
Send("^."); create new point
WinWaitActive($qgis)
MouseClick($MOUSE_CLICK_LEFT, 559, 411, 1) ; creates a poin on the map pane at x-y pixel
WinWaitActive("Test_Table - Objektattribute")
Send("{TAB}"); we don't set a fid
Send("This is my name")
Send("{ENTER}"); closes attribut entry window
WinWaitActive($qgis)
Send("!l") ;switch to Layer menu ALT+L
Send("{DOWN 8}")
Send("{ENTER}"); closes edit mode
WinWaitActive("Bearbeitung beenden")
Send("{ENTER}") ;save edits
WinWaitActive($qgis)
WinClose($qgis)
WinWaitActive("Projekt speichern")
Send("{TAB 1}")
Send("{SPACE}")
Her test programına gelince: Bu programın 0 çıkış kodu ile çalıştırılması, hata olmadan çalıştığını söylüyor. Şimdi, istenen konumda yeni bir dosya olup olmadığını kontrol etmek istiyoruz. Bunun için bir işlev kullanıyorum:
#include
#include
FileChecker()
Func FileChecker()
Local $filePath = "C:Users" & @UserName & "DocumentsGIS DataBasetest.gpkg"
Local $iFileExists = FileExists($filePath)
; Display a message of whether the file exists or not.
If $iFileExists Then
MsgBox($MB_SYSTEMMODAL, "", "The file exists." & @CRLF & "FileExist returned: " & $iFileExists)
Else
MsgBox($MB_SYSTEMMODAL, "", "The file doesn't exist." & @CRLF & "FileExist returned: " & $iFileExists)
EndIf
; Delete the file:
FileDelete($filePath)
EndFunc
Dosyanın tamamını bir Github’da Gist.
Çevrimiçi dokümantasyon çok yararlı ve çok canlı bir forum var. Yeter dedi: Mutlu kodlama!
1
2025’te dünyada kaç ülke var?
610 kez okundu
2
Bilim adamları, havadan co₂ yakalayan canlı yapı materyali yaratıyor
458 kez okundu
3
Hawaiʻi Abyssal Nodüller ve İlişkili Ekosistemler Expedition
265 kez okundu
4
Porsuk Zeyve Höyük’teki Hitit dönemine ait 3500 Yıllık Kerpiç Yapılar
250 kez okundu
5
Jurnal ve Jurnalcilik ne demek? Osmanlı’dan günümüze ihbarcılık
211 kez okundu