Client-side web applications have recently gone from progressive enhancements to powering large scale Single-page Applications (SPAs). Testing such applications is a tedious effort, often requiring manually constructing tests and emulating the browser, which leads to high programming effort and low performance. This thesis investigates how web applications can be designed, implemented and tested in order to make reliable applications with high test performance using Design by Contract (DbC) and automatically generated tests without significantly increasing programming effort. The results consist of a formal model for reactive programs using denotational and axiomatic semantics in order to not be tied to a specific programming language. The model is tested by implementing a sample application in Clojure and evaluating different aspects such as test coverage and test performance, in addition to mutation-based testing. Furthermore, the formal model can be used as a blueprint for developing reliable applications and serve as a formal building block for future research on web applications. Additionally, the sample application may be used as a guideline for real world development. The results show that applications implementing the formal model have generated test suites that are likely to detect programmer errors and can achieve high test coverage and performance while requiring less or equal effort when compared to other implementations and manual testing. / Klientbaserade webbapplikationer har under de senaste åren växt från mindre dynamiska förbättringar till att fullständigt driva Single-page Applikationer (SPAs). Att skriva tester för sådana applikationer är en komplex uppgift som ofta kräver emulering av webbläsare, vilket leder till mycket arbete och låg prestanda. Den här studien undersöker hur webbapplikationer kan designas och implementeras för att skapa pålitliga applikationer genom att använda Design by Contract (DbC) och automatiskt genererade tester, utan att signifikant påverka arbetsbördan för utvecklare. En formell modell för reaktiva applikationer presenteras med hjälp av denotationell och axiomatisk semantik för att inte begränsas till ett enskilt programspråk. Modellen testas genom utveckling och utvärdering av en exempelapplikation skriven i Clojure där olika aspekter såsom täckningsgrad och prestanda hos tester samt mutationsbaserad testning undersöks. I resultaten av den här studien presenteras en formell modell som kan användas som riktlinje för att bygga pålitliga webbapplikationer samt som en formell byggsten för framtida studier. Vidare så kan även exempelapplikationen användas som mall för utveckling av applikationer i industrin. Resultaten visar att applikationer som implementerar modellen har en testsvit som är trolig att upptäcka programmeringsfel samt uppnår hög täckningsgrad och prestanda, medan de kräver mindre eller liknande arbete som andra implementationer och manuellt programmerade tester.
Identifer | oai:union.ndltd.org:UPSALLA1/oai:DiVA.org:kth-310499 |
Date | January 2022 |
Creators | Hallsmar, Fredrik |
Publisher | KTH, Skolan för elektroteknik och datavetenskap (EECS) |
Source Sets | DiVA Archive at Upsalla University |
Language | English |
Detected Language | Swedish |
Type | Student thesis, info:eu-repo/semantics/bachelorThesis, text |
Format | application/pdf |
Rights | info:eu-repo/semantics/openAccess |
Relation | TRITA-EECS-EX ; 2022:58 |
Page generated in 0.002 seconds