smid: A Black-Box Program Driver

  • Kareem KhazemEmail author
  • Michael Tautschnig
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 9641)


We aim to perform dynamic analysis at large scale and across a wide range of programs. A key problem to overcome is driving interactive programs effectively and efficiently. To address this problem, we developed smid—an open-source tool that autonomously interacts with computer programs, based on a specification of which user interactions (key presses, mouse events) are valid. Users can define the space of valid user interactions as a state machine in the smid language. smid can then generate ‘sensible’ program runs (sequences of user interactions), which it sends to the target program. Runs can be saved and played back, facilitating the reproduction of bugs. We have used smid to reproduce and help explain a bug in the cmus music player. It is possible to use smid to drive a wide variety of desktop programs, including those with a graphical, console, or even non-interactive user interface.


State Machine User Interaction Target Program Window System Desktop Application 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.



We thank Carsten Fush and Tyler Sorensen, as well as several anonymous reviewers, for constructive feedback.


  1. 1.
    Amalfitano, D., Fasolino, A.R., Tramontana, P.: Reverse engineering finite state machines from rich internet applications. In: WCRE (2008)Google Scholar
  2. 2.
    Amalfitano, D., Fasolino, A.R., Tramontana, P., Carmine, S.D., Memon, A.M.: Using GUI ripping for automated testing of Android applications. In: ASE (2012)Google Scholar
  3. 3.
    Berstel, J., Crespi-Reghizzi, S., Roussel, G., Pietro, P.S.: A scalable formal method for design and automatic checking of user interfaces. In: ICSE (2001)Google Scholar
  4. 4.
    Chen, E., LDTP contributors: Linux desktop testing project.
  5. 5.
    Dan, H., Harman, M., Krinke, J., Li, L., Marginean, A., Wu, F.: Pidgin crasher: searching for minimised crashing GUI event sequences. In: Goues, C., Yoo, S. (eds.) SSBSE 2014. LNCS, vol. 8636, pp. 253–258. Springer, Heidelberg (2014)Google Scholar
  6. 6.
    Eigler, F.C., Stone, D., Stone, J., Wielaard, M., SystemTap contributors: System-Tap.
  7. 7.
    Gross, F., Fraser, G., Zeller, A.: EXSYST: search-based GUI testing. In: ICSE (2012)Google Scholar
  8. 8.
    Huber, M., Schlichting, M., Canoo contributors: Canoo WebTest.
  9. 9.
    Kroening, D., Tautschnig, M.: Automating software analysis at large scale. In: Hliněný, P., Dvořák, Z., Jaroš, J., Kofroň, J., Kořenek, J., Matula, P., Pala, K. (eds.) MEMICS 2014. LNCS, vol. 8934, pp. 30–39. Springer, Heidelberg (2014)Google Scholar
  10. 10.
    Memon, A.M., Pollack, M.E., Soffa, M.L.: Using a goal-driven approach to generate test cases for GUIs. In: ICSE (1999)Google Scholar
  11. 11.
    Pertman, J., McHowan, H., Rodionov, A.: Watir.
  12. 12.
    Raskin, J.: The Humane Interface: New Directions for Designing Interactive Systems. ACM Press/Addison-Wesley Publishing Co., New York, NY (2000)Google Scholar
  13. 13.
    Sissel, J.: xdotool–fake keyboard/mouse input, window management, and more.
  14. 14.
    Skupin, H., Hammel, J., Rogers, M., Mozmill contributors: Mozmill.
  15. 15.
    Stewart, S., Selenium contributors: Selinium WebDriver.
  16. 16.
    Tiede, M., Struckmann, S., Mueller, M., Jubula contributors: The Jubula functional testing tool.

Copyright information

© Springer International Publishing Switzerland 2016

Authors and Affiliations

  1. 1.University College LondonLondonUK
  2. 2.Queen Mary University of LondonLondonUK

Personalised recommendations