Below I have written my view about desktop, client-server and web based applications. please evaluate and let me know if anything wrong and also more details.

Desktop Application: Desktop application is a standalone application which is installed personal computers and application runs on single memory. Here we focus testing on a specific environment. While testing the application, the main categories to validate is UI, Functionality, and the backend i.e., DB.

Client-Server Application: Application is loaded at the server and the exe is installed on all the client machines to call the server. Fundamentionally client server application is a 2 tier architecture containing only two actors which is client and the server. However most client-server applications add database, middleware layers, and load balancers which makes these systems technically multi-tier architectures.

In Client Server Application connection always exists between the client and server. These applications are stateful as both client and server retain information from one exchange to the next. Numbers are users are always predicted. These applications are mainly used in intranet environments so the network issues are less when compared to web application.

In client-server systems, we need to focus testing categories like GUI in both client and server, functionality, Load, backend.

Web Application: Application is loaded at the server and application is called using browser. No exe need to be installed at the client machine. Web application functionality is usually distributed among three tires: web browser, web server, and back-end db. It is built on top of the HTTP protocol, which is stateless. So, UserID's, cookies, session IDs are used by the application to simulate the state.
Web based systems are mainly used in internet environment and numbers of users is difficult to predict.

In web based systems, we need to focus testing categories like UI, functionality, browser compatibility, security, Load/ stress, volume, interoperability, backend.