 What is a contract? Like there's a lot of confusion around what is a contract. Let's take a simple example to explain the concept of the difference between a contract and something else. So let's imagine I wanna evaluate that expression. So I'd basically first evaluate these two things, get a response back, then I'd evaluate the 22 by seven, get a response back, take the results of those two, then send it to the server and get a result back, right? So there are basically three calls that I'm making. Let's just convert this into a little bit more API type looking thing. So now what kinds of API tests can you think of that you would write on this? When you look at this, you can imagine like, hey, I would want to test some of these things individually, right? You might want to basically maybe test, like when I post to slash calculator with this, this I want to get this result back, right? I want to test this particular thing in isolation. I don't care about the full thing, I just want to test each of these operations in isolation. I might have some negative values over there which also I want to make sure works fine. I might give some invalid values and I want to make sure that works fine. I want to give some junk operations, want to make sure that I get a valid 400 response back and so forth. This is a mix of what I would say API tests and contract tests. These two here at the bottom is trying to play around with the data types of the signature of your API and want to verify if the signature, if I send something wrong, does it work or not? And generally these are kind of captured in something like this, an open API specification. So that's the calculator's open API specification that you have. Now if you had this open API specification, some of you might be using postman or some other things, right? So you could actually take postman and generate an open API specification out of it, right? It's all just readily available. So assuming you're able to generate an open API specification, then what I could do is I could basically give the open API specification and generate all of these tests for free without having to write a single line of code. Now you'll notice compared to the past one here, I'm not sending actual values, they are now just representing the data types because I don't really care about the values. I'm not asserting a specific value. I'm asserting whether the signature is being met. The value is not important in that case. Value is only important as long as the data type is matching, as long as the schema is matching, as long as the protocol, what I'm supposed to expect that is matching. So this is an example of contract tests. So the contract is the signature of your API that includes the protocol that it's using and the data type and the schema and things like that. So think of it as a method signature for an API. So it's a signature, and I want to validate that it adheres to the signature. And a lot of generally people, the kinds of tests that they do in API tests can actually be just now generated out of a specification without you writing any line of code. The only other thing I want to explain is what we call as the API workflow test, which means it's a series of interaction. And at the end, I'm going to assert whether I got a certain result. So if I'm doing a sequence of calls, it's a workflow. I want to verify at the end of it whether I got something back or not. So those are the three different types of tests that I explained earlier now with an example, API tests, contract tests, and workflow tests.