Skip to content
This repository has been archived by the owner on Jun 21, 2018. It is now read-only.

Latest commit

 

History

History
21 lines (11 loc) · 5.11 KB

01-introduction.md

File metadata and controls

21 lines (11 loc) · 5.11 KB

Introduction

Last few years a new technology called REST is growing up. This technology was described by Roy Fielding in 2000 in his dissertation[1]. It is mostly used around web where it found wide usability. The technology itself is called REST however its implementation is called RESTful. The implementation is an API in this context. So the implementation can vary (and it does in real usage). However if basic principals of this technology are satisfied then an API can be called RESTful.

RESTful API is only communication interface of some system or module as other API. The interface can be used by programmer for integration of programmer's system and a system which providers RESTful API. Similar integration is mostly known in field of corporations. There are many specific systems communicates together in the corporate field. The integration can be more powerful in the field of web. It could be easier to build a new service by combination of suitable RESTful APIs similary to building general software using development libraries. However RESTful API does not only support functionality but it also supports transfer of data and information.

RESTful API is used in almost all web applications today. RESTful API is typically implemented by social networks which publish the API to everyone afterwards. RESTful API is generally always public however you can find a situation in which it is not wanted. It is typically RESTful API of company internal systems which functionality and data must be protected. It can be API for special mobile application. The API must not be used by anyone else. There are available security mechanisms which I will not talk about in this thesis.

It does not matter if the RESTful API is public or private. It is important to keep documentation and tests up to date. If the API is public then it should be always a requirement. The more RESTful APIs has been created on the internet the more development, documentation and testing tools arises. It is a different programming style on a different level. Nevertheless, current tools for generating documentation or testing regular software are often not good enough. There is tremendous amount of tools to help with development, but amount of tools for generating documentation or testing is relatively low.

Although the REST can be implemented in various ways it was originally established as a generalization of the HTTP protocol[14]. I will use the HTTP protocol in this thesis for descriptions and examples. It is the most common implementation of RESTful API in these days. The HTTP protocol is the preferred or the only supported implementation of REST by the current RESTful API testing tools.

This thesis is not focused on documentation or description of RESTful API. However I will mention it shortly. The main topic of this thesis is testing of RESTful API. Documentation and description of API can be created in simple text editor if it is needed. All you needed is set of conventions and rules. Testing is not good to simplify in this way. Usage of special tools for this purpose is better in my opinion.

The reason why I want to focus on RESTful API testing is very simple. It is needed to verify if the implemented API works as expected. It can be done by some regular testing tool, however it is a bit uncomfortable in my opinion. The testing, which I will focus on, should simulate as much as possible of expected situations specific for RESTful API. At the end it should be clear what is the difference between testing of RESTful API and testing of regular software. I will also modify or create testing tool, that I will choose during working on this thesis, to be more comfortable testing with. I want to make it easier to write tests for RESTful APIs and also make the tests more understandable while still beeing powerful.

Because it is a very different style of development I expect some differences in methods of applications which uses or provides RESTful APIs. I will find these differences and describe them in this thesis. I will also find some similarities in field of regular software testing and RESTful API testing. I want to do it because it is not so well known field in my opinion. There could be found many differences and surprising similarities.

I will also compare various exists tools which supports testing of RESTful APIs. Then I will find out and compare some of their advantages and disadvantages. Based on this knowledge I can decide which testing tool is the best for testing RESTful API. At the end I will choose one tool which I will try to update for better usage to show my results in real world.

I will focus on some basics related to regular software testing in the first chapter. It is good to remind these basics first in my opinion. The second chapter will be focused on RESTful API testing possibilities in these days and related tools. I will describe API Blueprint and Dredd in third chapter because it will be probably the tool which I will work on at the end. The last chapter will focus on implementation of scenario testing using some exists tool I've chosen.