nowatorskie podejście do generowania pakietu testowego, zaadaptowane z techniki CLI, polega na użyciu systemu planowania. Planowanie to dobrze zbadana technika z dziedziny sztucznej inteligencji (AI), która próbuje rozwiązać problemy, które obejmują cztery parametry:
- stan początkowy,
- stan celu,
- zestaw operatorów i
- zestaw obiektów do działania.
systemy planowania określają ścieżkę od stanu początkowego do stanu docelowego za pomocą operatorów. Jako prosty przykład problemu planowania, biorąc pod uwagę dwa słowa i jedną operację, która zastępuje jedną literę w słowie innym, celem może być zmiana jednego słowa w drugie.
autorzy wykorzystali planer IPP do zademonstrowania tej techniki. Interfejs użytkownika systemu jest najpierw analizowany w celu określenia możliwych operacji. Stają się one operatorami stosowanymi w problemie planowania. Następnie określa się początkowy stan systemu i określa się stan celu, który zdaniem testera pozwoliłby na ćwiczenie systemu. System planowania określa ścieżkę od stanu początkowego do stanu celu, który staje się planem testowym.
używanie planera do generowania przypadków testowych ma pewne szczególne zalety w porównaniu z generowaniem ręcznym. System planowania, ze swej natury, generuje rozwiązania problemów planowania w sposób bardzo korzystny dla testera:
- plany są zawsze ważne. Wyjście systemu jest albo ważny i poprawny plan, który wykorzystuje operatorów do osiągnięcia stanu celu lub nie ma planu w ogóle. Jest to korzystne, ponieważ wiele czasu można zmarnować podczas ręcznego tworzenia zestawu testów z powodu nieprawidłowych przypadków testowych, które Tester myślał, że zadziałają, ale nie zadziałały.
- system planowania zwraca uwagę na porządek. Często, aby przetestować określoną funkcję, przypadek testowy musi być złożony i podążać ścieżką przez GUI, w którym operacje są wykonywane w określonej kolejności. Po wykonaniu ręcznym może to prowadzić do błędów, a także może być dość trudne i czasochłonne.
- wreszcie, i co najważniejsze, system planowania jest zorientowany na cel. Tester skupia się na tym, co najważniejsze, testowaniu funkcjonalności systemu.
podczas ręcznego tworzenia zestawu testowego tester koncentruje się bardziej na tym, jak przetestować funkcję (tj. określoną ścieżkę przez GUI). Korzystając z systemu planowania, ścieżka jest pod opieką, a tester może skupić się na tym, jaką funkcję przetestować. Dodatkową zaletą jest to, że system planowania nie jest w żaden sposób ograniczony podczas generowania ścieżki i często może znaleźć ścieżkę, której tester nigdy nie przewidział. Ten problem jest bardzo ważny do zwalczania.
inna metoda generowania przypadków testowych GUI symuluje początkującego użytkownika. Doświadczony użytkownik systemu ma tendencję do podążania bezpośrednią i przewidywalną ścieżką przez GUI, podczas gdy początkujący użytkownik podążałby bardziej losową ścieżką. Początkujący użytkownik prawdopodobnie odkryje więcej możliwych stanów GUI niż ekspert.
trudność polega na generowaniu zestawów testowych, które symulują „początkujące” użycie systemu. Zaproponowano wykorzystanie algorytmów genetycznych do rozwiązania tego problemu. Ścieżki nowicjuszy przez system nie są przypadkowymi ścieżkami. Po pierwsze, początkujący użytkownik nauczy się z czasem i na ogół nie popełni tych samych błędów wielokrotnie, a po drugie, początkujący użytkownik postępuje zgodnie z planem i prawdopodobnie ma pewną wiedzę na temat domeny lub systemu.
algorytmy genetyczne działają w następujący sposób: zbiór 'genów’ jest tworzony losowo, a następnie poddawany pewnemu zadaniu. Geny, które najlepiej wykonują zadanie, są zachowane, a te, które nie są odrzucane. Proces ten powtarza się ponownie, a pozostałe geny są replikowane, a reszta zestawu wypełniona jest bardziej przypadkowymi genami. Ostatecznie jeden gen (lub mały zestaw genów, jeśli istnieje jakiś zestaw progowy) będzie jedynym genem w zestawie i jest naturalnie najlepiej dopasowany do danego problemu.
w przypadku testowania GUI metoda działa w następujący sposób. Każdy gen jest zasadniczo listą losowych wartości całkowitych o określonej długości. Każdy z tych genów reprezentuje ścieżkę przez GUI. Na przykład, dla danego drzewa widżetów, pierwsza wartość w genie (każda wartość nazywa się allelem) wybierze widżet do działania, następujące allele będą następnie wypełniać dane wejściowe do widżetu w zależności od liczby możliwych wejść do widżetu(na przykład rozwijana lista ma jedno wejście … wybraną wartość listy). Sukces genów jest oceniany przez kryterium, które nagradza najlepsze „początkujące” zachowanie.
system do tego testowania dla systemu X window, ale rozszerzalny na dowolny system okienny jest opisany w. X Window system zapewnia funkcjonalność (poprzez XServer i protokół redaktorów) do dynamicznego wysyłania danych wejściowych GUI do i uzyskiwania danych wyjściowych GUI z programu bez bezpośredniego korzystania z GUI. Na przykład, można wywołać xsendevent (), aby symulować kliknięcie na rozwijanym menu i tak dalej. System ten pozwala naukowcom zautomatyzować tworzenie genów i testowanie, więc dla każdej badanej aplikacji można utworzyć zestaw przypadków testowych dla początkujących użytkowników.