This document discusses testing web applications using Selenium. It begins by describing the unique aspects of web application testing, including that web apps have heterogeneous systems with dynamic frontends and backends. It then covers how Selenium can be used to automate testing by simulating user interactions in the browser. Specifically, it details the Selenium IDE Firefox extension for recording and replaying tests, and Selenium WebDriver for programmatically controlling the browser with various languages. The document provides examples of using WebDriver to locate elements, enter values, submit forms, and verify results. It concludes by outlining a course project to test the "Add New Class" functionality of a web app without access to the source code.