„Monkey Testing“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
[ungesichtete Version][ungesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
Reverted 1 edit by 70.59.206.128 (talk): Not a typo. (TW)
Roesslerj (Diskussion | Beiträge)
Der Inhalt stammt aus dem Englishen Wikipedia Artikel aus en:Monkey Testing; bitte in der dortigen Historie nach Urheber schauen. Formatierung folgt. Vorgehen entsprechend der Anleitung unter en:Translate us.
Zeile 1: Zeile 1:
''Monkey Testing'' (eng. Affentesten) is eine Technik für [[Softwaretest|Softwaretests]], bei der der Benutzer die Anwendung oder das System prüft, indem er zufällige Eingaben erzeugt und dabei das Verhalten überprüft bzw. überprüft ob die Anwendung oder das System abstürzt. Monkey Testing wird in der Regel als [[Zufallszahlengenerator|zufallsbasiertes]], [[Testautomatisierung|automatisiertes]] Testen der Benutzeroberfläche implementiert.
{{about|the computer software and programming topic|monkey tests with monkeys|animal testing on non-human primates}}
{{merge to | Fuzz testing |discuss= Talk:Fuzz_testing#Merge_Monkey_testing_into_Fuzz_testing |date= January 2016 }}


Während die Quelle des Namens "Monkey" (eng. Affe) unsicher ist, wird von einigen angenommen, dass der Name mit dem [[Infinite-Monkey-Theorem]] zu tun hat<ref name=":0">{{Cite web|url=http://www.exforsys.com/tutorials/testing-types/monkey-testing.html|title=What is Monkey Testing {{!}} IT Training and Consulting – Exforsys|website=www.exforsys.com|access-date=2016-04-22}}</ref>, welches besagt, dass ein Affe, wenn er lange genug auf einer Schreibmaschine tippt, irgendwann die kompletten Werke von [[William Shakespeare]] erzeugt. Einige andere glauben, dass der Name von der klassischen [[Mac OS]]-Anwendung "The Monkey" abgeleitet wurde, welche von Steve Capps vor 1983 entwickelt wurde um zufällige Ereignisse in Mac-Programme zu füttern, und um Bugs in [[MacPaint]] zu finden.<ref>{{Cite web|url=http://www.folklore.org/StoryView.py?story=Monkey_Lives.txt|title=Folklore.org: Monkey Lives|website=www.folklore.org|access-date=2016-04-22}}</ref>
In [[software testing]], '''monkey testing''' is a technique where the user tests the application or system by providing [[Randomness|random]] inputs and checking the behavior, or seeing whether the application or system will crash. Monkey testing is usually implemented as random, automated [[Unit testing|unit tests]].


Monkey Testing ist außerdem Teil der Standardtestwerkzeuge von [[Android Studio]].<ref>{{Cite web|url=http://developer.android.com/tools/help/monkey.html|title=UI/Application Exerciser Monkey {{!}} Android Developers|website=developer.android.com|access-date=2016-04-25}}</ref>
While the source of the name "monkey" is uncertain, it is believed by some that the name has to do with the [[infinite monkey theorem]],<ref name=":0">{{Cite web|url=http://www.exforsys.com/tutorials/testing-types/monkey-testing.html|title=What is Monkey Testing {{!}} IT Training and Consulting – Exforsys|website=www.exforsys.com|access-date=2016-04-22}}</ref> which states that a monkey hitting keys at [[Randomness|random]] on a [[typewriter keyboard]] for an infinite amount of time will [[almost surely]] type a given text, such as the complete works of [[William Shakespeare]]. Some others believe that the name comes from the [[classic Mac OS]] application "The Monkey" developed by [[Steve Capps]] prior to 1983. It used journaling hooks to feed random events into Mac programs, and was used to test for bugs in [[MacPaint]].<ref>{{Cite web|url=http://www.folklore.org/StoryView.py?story=Monkey_Lives.txt|title=Folklore.org: Monkey Lives|website=www.folklore.org|access-date=2016-04-22}}</ref>


==Arten von Monkey Testing==
Monkey Testing is also included in [[Android Studio]] as part of the standard testing tools for [[Stress testing (software)|stress testing]].<ref>{{Cite web|url=http://developer.android.com/tools/help/monkey.html|title=UI/Application Exerciser Monkey {{!}} Android Developers|website=developer.android.com|access-date=2016-04-25}}</ref>


Monkey Testing kann in '''dummes Monkey Testing''' (eng. dumb Monkey Testing) und '''intelligentes Monkey Testing''' (eng. smart monkey testing) unterschieden werden.
==Types of monkey testing==
Monkey testing can be categorized into '''smart monkey tests''' or '''dumb monkey tests'''.


=== Smart monkey tests ===
=== Dummes Monkey Testing ===
Dummes Monkey Testing hat folgende Eigenschaften:
Smart monkeys are usually identified by the following characteristics:{{cn|date=October 2016}}
* Kein Wissen über die Anwendung oder das System
* Have a brief idea about the application or system
* Kein Wissen darüber, ob das Eingabeverhalten gültig oder ungültig ist
* Know its own location, where it can go and where it has been
* Kein Wissen über das Verhalten der Anwendung oder des Systems oder das typische Anwenderverhalten
* Know its own capability and the system's capability
* Kann weniger Fehler finden als intelligentes Monkey Testing, findet aber u.U. wichtige Fehler, die von intelligentem Monkey Testing schwerer gefunden werden.
* Focus to break the system
* Report bugs they found
Some smart monkeys are also referred to as '''brilliant monkeys''',{{cn|date=October 2016}} which perform testing as per user's behavior and can specify some probabilities of bugs to be occurred.


=== Dumb monkey tests ===
=== Intelligentes Monkey Testing ===
Intelligentes Monkey Testing wird normalerweise über folgende Eigenschaften unterschieden:
Dumb monkeys, also known as "ignorant monkeys", are usually identified by the following characteristics:{{cn|date=October 2016}}
* Rudimentäres Wissen über die Anwendung oder das System
* Have no knowledge about the application or system
* Kennt den gegenwärtigen Zustand innerhalb der Anwendung, vergangene Zustände und mögliche zukünftige Zustände
* Don't know if their input or behavior is valid or invalid
* Kennt seine Fähigkeiten und die der Anwendung oder des Systems
* Don't know their or the system's capabilities, nor the flow of the application
* Versucht gezielt die Anwendung oder das System zum Absturz zu bringen
* Can find fewer bugs than smart monkeys, but can also find important bugs that are hard to catch by smart monkeys
* Berichtet über gefundene Fehler


Manchmal wird intelligentes Monkey Testing auch als brilliantes Monkey Testing (eng. brilliant monkey testing) bezeichnet, wenn es versucht das typische Nutzerverhalten anzunähern und Aussagen über die Wahrscheinlichkeit des Auftretens der gefundenen Fehler machen kann.
== Advantages and disadvantages ==


=== Advantages ===
== Vor- und Nachteile ==
Monkey testing is an effective way to identify some out-of-the-box errors. Since the scenarios tested are usually [[Ad hoc|ad-hoc]], monkey testing can also be a good way to perform load and stress testing. The intrinsic randomness of monkey testing also makes it a good way to find major bugs that can break the entire system. The setup of monkey testing is easy, therefore good for any application. Smart monkeys, if properly set up with an accurate state model, can be really good at finding various kinds of bugs.


=== Disadvantages ===
=== Vorteile ===
Monkey Testing ist ein effektiver Weg, um einige Out-of-the-Box-Fehler zu identifizieren. Da die getesteten Szenarien meist [[Ad hoc|ad-hoc]] sind, kann die Affenprüfung auch ein guter Weg sein, um Last- und Stress-Tests durchzuführen. Die intrinsische Zufälligkeit von Monkey Testing macht es auch zu einem guten Weg, um kritische Fehler zu finden, die das gesamte System brechen können. Das Aufsetzen von Monkey Testing ist einfach, also gut geeignet für jede Art von Anwendung. Wenn intelligentes Monkey Testing richtig konfiguriert ist und über ein ausreichend gutes Zustandsmodell verfügt, kann es wirklich gut verschiedene Arten von Fehlern finden.
The randomness of monkey testing often makes the bugs found difficult or impossible to reproduce. Unexpected bugs found by monkey testing can also be challenging and time consuming to analyze. In some systems, monkey testing can go on for a long time before finding a bug. For smart monkeys, the ability highly depends on the state model provided, and developing a good state model can be expensive.<ref name=":0" />


=== Nachteile ===
== Similar techniques and distinctions ==
Die Zufälligkeit von Monkey Testing macht es oft schwierig oder unmöglich die Fehler zu reproduzieren und damit auch herausfordernd und zeitaufwendig sie zu analysieren. In einigen Systemen kann Monkey Testing für eine lange Zeit laufen, bevor es einen Fehler findet.
While monkey testing is sometimes treated the same as [[fuzz testing]]<ref>{{Cite book|url=http://link.springer.com/chapter/10.1007/978-3-642-14186-7_6|title=Automated Testing and Debugging of SAT and QBF Solvers|last=Brummayer|first=Robert|last2=Lonsing|first2=Florian|last3=Biere|first3=Armin|date=2010-07-11|publisher=Springer Berlin Heidelberg|isbn=9783642141850|editor-last=Strichman|editor-first=Ofer|series=Lecture Notes in Computer Science|pages=44–57|language=en|doi=10.1007/978-3-642-14186-7_6|editor-last2=Szeider|editor-first2=Stefan}}</ref> and the two terms are usually used together,<ref>{{Cite web|url=https://www.delphitools.info/2016/03/18/fuzz-testing-in-delphi/|title=Fuzz Testing in Delphi - DelphiTools|website=www.delphitools.info|access-date=2016-04-22}}</ref> some believe they are different by arguing that monkey testing is more about random actions while fuzz testing is more about random data input.<ref>{{Cite web|url=https://stackoverflow.com/questions/10241957/difference-between-fuzz-testing-and-monkey-test|title=Difference between "fuzz testing" and "monkey test"|website=stackoverflow.com|access-date=2016-04-22}}</ref> Monkey testing is also different from [[Ad hoc testing|ad-hoc testing]] in that ad-hoc testing is performed without planning and documentation and the objective of ad-hoc testing is to divide the system randomly into subparts and check their functionality, which is not the case in monkey testing.

== Ähnliche Techniken und Unterscheidungen ==
Während Monkey Testing manchmal als eine Unterart von [[Fuzzing|Fuzz Testing]] <ref>{{Cite book|url=http://link.springer.com/chapter/10.1007/978-3-642-14186-7_6|title=Automated Testing and Debugging of SAT and QBF Solvers|last=Brummayer|first=Robert|last2=Lonsing|first2=Florian|last3=Biere|first3=Armin|date=2010-07-11|publisher=Springer Berlin Heidelberg|isbn=9783642141850|editor-last=Strichman|editor-first=Ofer|series=Lecture Notes in Computer Science|pages=44–57|language=en|doi=10.1007/978-3-642-14186-7_6|editor-last2=Szeider|editor-first2=Stefan}}</ref> and the two terms are usually used together,<ref>{{Cite web|url=https://www.delphitools.info/2016/03/18/fuzz-testing-in-delphi/|title=Fuzz Testing in Delphi - DelphiTools|website=www.delphitools.info|access-date=2016-04-22}}</ref> angesehen wird und die beiden Begriffe in der Regel zusammen verwendet werden, glauben einige, sie unterscheiden sich darin, dass Monkey Testing sich mehr über zufällige Aktionen definiert, Fuzz-Testing hingegen mehr über zufällige Dateneingabe<ref>{{Cite web|url=https://stackoverflow.com/questions/10241957/difference-between-fuzz-testing-and-monkey-test|title=Difference between "fuzz testing" and "monkey test"|website=stackoverflow.com|access-date=2016-04-22}}</ref>. Monkey Testing unterscheiden sich auch von [[Ad hoc]]-Tests, da Ad-hoc-Tests ohne Planung und Dokumentation durchgeführt werden und es das Ziel einer Ad-hoc-Prüfung ist, das System zufällig in Unterabschnitte aufzuteilen und ihre Funktionalität zu überprüfen, was bei Monkey Testing nicht der Fall ist.


==See also==
==See also==
{{Portal|Software Testing}}
{{Portal|Software Testing}}
*[[Scratch monkey]]
*[[Fuzzing]]


== References ==
== References ==

Version vom 26. Mai 2017, 06:24 Uhr

Monkey Testing (eng. Affentesten) is eine Technik für Softwaretests, bei der der Benutzer die Anwendung oder das System prüft, indem er zufällige Eingaben erzeugt und dabei das Verhalten überprüft bzw. überprüft ob die Anwendung oder das System abstürzt. Monkey Testing wird in der Regel als zufallsbasiertes, automatisiertes Testen der Benutzeroberfläche implementiert.

Während die Quelle des Namens "Monkey" (eng. Affe) unsicher ist, wird von einigen angenommen, dass der Name mit dem Infinite-Monkey-Theorem zu tun hat[1], welches besagt, dass ein Affe, wenn er lange genug auf einer Schreibmaschine tippt, irgendwann die kompletten Werke von William Shakespeare erzeugt. Einige andere glauben, dass der Name von der klassischen Mac OS-Anwendung "The Monkey" abgeleitet wurde, welche von Steve Capps vor 1983 entwickelt wurde um zufällige Ereignisse in Mac-Programme zu füttern, und um Bugs in MacPaint zu finden.[2]

Monkey Testing ist außerdem Teil der Standardtestwerkzeuge von Android Studio.[3]

Arten von Monkey Testing

Monkey Testing kann in dummes Monkey Testing (eng. dumb Monkey Testing) und intelligentes Monkey Testing (eng. smart monkey testing) unterschieden werden.

Dummes Monkey Testing

Dummes Monkey Testing hat folgende Eigenschaften:

  • Kein Wissen über die Anwendung oder das System
  • Kein Wissen darüber, ob das Eingabeverhalten gültig oder ungültig ist
  • Kein Wissen über das Verhalten der Anwendung oder des Systems oder das typische Anwenderverhalten
  • Kann weniger Fehler finden als intelligentes Monkey Testing, findet aber u.U. wichtige Fehler, die von intelligentem Monkey Testing schwerer gefunden werden.

Intelligentes Monkey Testing

Intelligentes Monkey Testing wird normalerweise über folgende Eigenschaften unterschieden:

  • Rudimentäres Wissen über die Anwendung oder das System
  • Kennt den gegenwärtigen Zustand innerhalb der Anwendung, vergangene Zustände und mögliche zukünftige Zustände
  • Kennt seine Fähigkeiten und die der Anwendung oder des Systems
  • Versucht gezielt die Anwendung oder das System zum Absturz zu bringen
  • Berichtet über gefundene Fehler

Manchmal wird intelligentes Monkey Testing auch als brilliantes Monkey Testing (eng. brilliant monkey testing) bezeichnet, wenn es versucht das typische Nutzerverhalten anzunähern und Aussagen über die Wahrscheinlichkeit des Auftretens der gefundenen Fehler machen kann.

Vor- und Nachteile

Vorteile

Monkey Testing ist ein effektiver Weg, um einige Out-of-the-Box-Fehler zu identifizieren. Da die getesteten Szenarien meist ad-hoc sind, kann die Affenprüfung auch ein guter Weg sein, um Last- und Stress-Tests durchzuführen. Die intrinsische Zufälligkeit von Monkey Testing macht es auch zu einem guten Weg, um kritische Fehler zu finden, die das gesamte System brechen können. Das Aufsetzen von Monkey Testing ist einfach, also gut geeignet für jede Art von Anwendung. Wenn intelligentes Monkey Testing richtig konfiguriert ist und über ein ausreichend gutes Zustandsmodell verfügt, kann es wirklich gut verschiedene Arten von Fehlern finden.

Nachteile

Die Zufälligkeit von Monkey Testing macht es oft schwierig oder unmöglich die Fehler zu reproduzieren und damit auch herausfordernd und zeitaufwendig sie zu analysieren. In einigen Systemen kann Monkey Testing für eine lange Zeit laufen, bevor es einen Fehler findet.

Ähnliche Techniken und Unterscheidungen

Während Monkey Testing manchmal als eine Unterart von Fuzz Testing [4] and the two terms are usually used together,[5] angesehen wird und die beiden Begriffe in der Regel zusammen verwendet werden, glauben einige, sie unterscheiden sich darin, dass Monkey Testing sich mehr über zufällige Aktionen definiert, Fuzz-Testing hingegen mehr über zufällige Dateneingabe[6]. Monkey Testing unterscheiden sich auch von Ad hoc-Tests, da Ad-hoc-Tests ohne Planung und Dokumentation durchgeführt werden und es das Ziel einer Ad-hoc-Prüfung ist, das System zufällig in Unterabschnitte aufzuteilen und ihre Funktionalität zu überprüfen, was bei Monkey Testing nicht der Fall ist.

See also

Portal: Software Testing – Übersicht zu Wikipedia-Inhalten zum Thema Software Testing

References

  1. What is Monkey Testing | IT Training and Consulting – Exforsys. In: www.exforsys.com. Abgerufen am 22. April 2016.
  2. Folklore.org: Monkey Lives. In: www.folklore.org. Abgerufen am 22. April 2016.
  3. UI/Application Exerciser Monkey | Android Developers. In: developer.android.com. Abgerufen am 25. April 2016.
  4. Robert Brummayer, Florian Lonsing, Armin Biere: Automated Testing and Debugging of SAT and QBF Solvers. Hrsg.: Ofer Strichman, Stefan Szeider (= Lecture Notes in Computer Science). Springer Berlin Heidelberg, 2010, ISBN 978-3-642-14185-0, S. 44–57, doi:10.1007/978-3-642-14186-7_6 (englisch, springer.com).
  5. Fuzz Testing in Delphi - DelphiTools. In: www.delphitools.info. Abgerufen am 22. April 2016.
  6. Difference between "fuzz testing" and "monkey test". In: stackoverflow.com. Abgerufen am 22. April 2016.