In this lecture, we're going to talk about METS: Minimal Essential Testing Strategy. So, in a previous lecture, we talked about test-planning for web systems and this is an example of a test plan that is very agile in the sense that it is minimal. But it's designed to make sure that you test the most critical portions of your application. This is a strategy that was developed by Greg Paskal. It has a website associated with it called metstesting.com, that I suggest you go take a look at. The idea of the test process is that we're going to come up with grids for common web testing activities and the organizing principle for these grids are going to be this split between testing the physical elements of the website and the functional elements of the website and also for each of these elements, looking at the level of criticality, what has to happen for the website to be successful, what is of high criticality but not absolutely necessary and then successively lower criticality levels. So let me show you an example of this. So, here's an example website. This is one I know very well because I run it. This is the website for the Software Engineering Center, for the University of Minnesota. If we look at the physical aspects of this, what we see is a bunch of different web elements. So, we have some navigation links, that we can click on over here. We have a search box that we can use for searching for different publications in this case that are hosted by our website, we have some graphic elements, we have layout and each of these things is likely something we want to test. So, for example when I click on a link here, I should get brought to a page that tells me about this paper. And if I want to search for a particular publication, I should be able to bring back the search elements that I expect. Now some of these things are critical. Making sure that all the publications that our group has produced, actually show up on this page is critical and these are populated from a database. Making sure that they show up in the right order is perhaps less critical. In making sure that the page loads within ten seconds, is fairly critical. But making sure that the page loads immediately is not so critical, because the people that tend to come out to this page are looking for specific publications and they're not likely to navigate away because this is the location where you can find them for our research group. So, now let's look at how we create one of these METS test grids. The idea is we're going to view the system in two different ways both in terms of its physical presence and also the functionality of the webpage. So, the physical presence is how the user experiences your site. And to start out with, they experience the site through webpages and those webpages contain graphics and forms and links and text. What we want to do is to look at all the points of UI interaction that we're going to use on a webpage. We want to describe for each one; what critical to test, what has slightly less importance and so on to test. What we're going to do then, for the functional test grid, is we're going to step back and look at the features of our application. So, what are the different business goals that we're trying to accomplish and how are they implemented on the webpage. Usually, what happens is that we have several use cases that are associated with a particular feature of our application. Again, we're going to look at these and determine for each, what the criticality is for each of the actions involving the different features of the application. So, let me give you an example from Coursera or from the University of Minnesota. So, in each institution, they have to maintain a course catalog and some of the things you'd like to do with that feature is you'd like to be able to load a course catalog. The critical thing is that the user should always be able to load the entire course catalog. Something that's of high importance is that all courses that the university maintains are reachable from that course catalog. Something that may be less important but still interesting for the website is that the most popular courses are listed first. Something that is of low importance but still a concern, is that the most important information related to each course is visible from the catalog page. Then we can think about the course catalog from the perspective of search and a critical thing in both of these cases is that a user can successfully search for a course. Then if your Coursera, what you'd really like to be able to do is you'd like to be able to find similar courses so that the user can pick from a set of courses that most match their interests. Then maybe as some level of medium importance, you'd like to be able to have specific categories for search. Finally, one of the things that's still important but not critically important for users on an everyday basis is to determine whether or not the course fits into a degree program. So, let's take a look at what some of these pre-built testing grids look like, that are provided from this website called metstesting.com, that we'll use on one of our exercises. So, if you go into the METS website, one of the things you'll find is a set of worksheets. The worksheets correspond to this grid that we've been talking about. So, right now we're looking at the physical test grid. When we do and what we see is that there are a bunch of categories. So, we have a category for pages, a category for graphics. And I apologize for my resolution. Normally, you don't see these kind of graphical flaws when you're looking at the website. But the kinds of things you want to ensure when you're doing web testing, is like every page completes loading. You don't have any pages that sort of go off the grid. Then what's of high importance is loading completes in a reasonable amount of time and depending on what application you're building reasonable changes and so on and so on. But what you have here is a checklist of many things that you should check if you're doing manual web testing of a website, to make sure that the website is properly organized. So, we have categories for graphics, categories for forms and buttons, categories for links, for text, for printing because often people want to print from websites, for security, different actual content about the website and then code that's installed with the website since a lot of times we're running Java or JavaScript on a webpage.