3:30 PM Saturday Room: 5502<p>
Testing GUIs is essential to making applications safer and more robust. Even the simplest GUI can enclose some complexity. Any complexity needs to be tested: code without tests is a potential source of bugs. A well-tested application has a greater chance of success. GUI development has been slow to include automated testing as a core practice, because writing tests for GUIs is hard. In this session, we'll explore several practices that can simplify testing of Swing and JavaFX GUIs.
Topics that will be covered include:
<li>What robust GUI tests means</li>
<li>Creating testable GUIs</li>
<li>Troubleshooting failing tests</li>
<li>Finding and fixing threading issues</li>
<li>Applying test-driven development (TDD) to GUIs</li>
<li>Available open source tools for GUI testing</li>
5:00 PM Saturday Room: 4220<p>A domain-specific language (DSL) is commonly described as a computer language targeted at a particular kind of problem and it is not planned to solve problems outside of its domain. DSLs have been formally studied for many years. Until recently, however, internal DSLs have been written into programs only as a happy accident by programmers simply trying to solve their problems in the most readable and concise way possible. Lately, with the advent of Ruby and other dynamic languages, there has been a growing interest in DSLs amongst programmers. These loosely structured languages offer an approach to DSLs which allow a minimum of grammar and therefore the most direct representation of a particular language. However, discarding the compiler and the ability to use the most powerful modern IDEs such as Eclipse is a definite disadvantage with this approach.
<p>The speakers have successfully compromised between the two approaches, and will argue that is quite possible and helpful to approach API design from the DSL orientation in a structured language such as Java. This session describes how it is possible to write domain-specific languages using the Java language and suggests some patterns for constructing them.