JMeter's UI features a tree view (on the left in the screenshot above) where you can easily build and visualize your script. Right-click on a given node in the tree to add child elements or perform other actions (these vary by component type). You can also drag and drop nodes (including their child nodes) to quickly re-structure your script, moving them before or after other elements or making them children of other nodes.
JMeter's many many script components are divided into several categories. Check out the extensive component reference for details on all of them. Some of the key ones:
Threads (Users): Thread elements define and configure the virtual user(s) making requests in your JMeter script. At least one thread is required before samplers can be added.
Samplers: Test requests are configured using sampler elements, which include samplers for HTTP requests, FTP requests, SMTP requests, and SOAP requests (note, however, that the SOAP request sampler has been deprecated-- the HTTP Request element can be used for SOAP requests as well).
Logic Controllers: Logic controllers add loops and conditional execution of test requests, making it possible to create some fairly sophisticated scripts in terms of flow control. These include a Loop Controller, ForEach Controller, If Controller, While Controller, etc.
Config Elements: Config elements are used for a variety of configuration-related tasks, including setting/managing variables and creating default parameters to use in request samplers. The "scope" of some config elements is determined by their level in the script tree. For example, settings in an HTTP Request Defaults config element are applied to applicable samplers at or below its tree level, allowing you to use a single HTTP Request Defaults element to define the endpoint and path for multiple HTTP Request samplers (saving you the trouble of having to re-enter the same information for each sampler).
Assertions: JMeter Assertions are used to verify expected results, including assertions for expected response time, content, size, etc. As with config elements, assertions can be applied to multiple samplers by placing them at the same tree level (or higher) in a script. In the screenshot above, for example, the "Duration LT 5 Sec" assertion is applied to all the samplers in the script since they all fall beneath it in the tree hierarchy.
Listeners: You can add listeners to your script to record, consolidate, and display results in a variety of ways-- listeners include a table view of results, a tree view of results, assertion results summaries, and graphs.
In my next post I'll look at a sample script that should help illustrate some of these components.