Much of the discussion on application development applies to testing as well. Testing serves two purposes: it validates the user requirements are right for the application, and it verifies that the application meets those requirements. The main benefits of using cloud services for testing are You can use the cloud-based test environment to per-form various tests. Alpha and beta tests, disaster recovery tests, functional tests, integration tests, load tests, opera-tions tests, parallel running tests, performance tests, stress tests, security tests, system tests, unit tests, and user ac-ceptance tests are the most common types of testing.
In order to integrate business processes and functions, you need to integrate the applications and the data used by those functions. Middleware provides the integration layer that enables you to do this. There are three types of middleware: (1) message oriented, (2) data oriented, and (3) object oriented. Message-oriented middleware allows applications to send messages among themselves, essen-tially through the use of message queues. Data-oriented middleware allows the applications to share chunks of data and information among them, through the exigency of a database. Object-oriented middleware allows applications to share objects such as code—a common use is for an ap-plication to execute code in another application. We have dealt with data-oriented middleware in this chapter un-der the heading “Database Services,” so we will consider message-oriented middleware in this section as a tool to integrate applications and, in a wider context, cloud-based services.Message-oriented middleware relies on message queues in order to exchange messages among applications.
A message queue is defined in memory as a buffer, a data-set in a database or a file set on a disk. Messages are sent to the queue by the sender application, and they accumulate until they are retrieved by receiver applications. The char-acteristic advantages of message-oriented middleware can be adduced by its delivery model, as follows.You can have synchronous or asynchro-nous messaging. The latter characteristic means that you can have applications that do not wait upon each other to exchange messages. Having synchronous messaging, also known as blocked messaging, ensures that one job is com-pleted based on the processing or reception of a message before another job begins, since the sending application will wait until a message has been read before sending an-other message. Decoupling enables thecommunicating applications to be independent functionally and physically. They could reside on different infrastructure, use different technologies, and have different logic embedded in the code, thus providing a resilient solution.