Git Product home page Git Product logo

exjobb's Introduction

Rationales and Approaches for Automated Testing of JavaScript and Standard ML

This repository contains the report and appendix of my Master's thesis. If you have a question about my work or any other reason to contact me, please feel free to do so by posting an issue in this repository.

The report can be downloaded from HERE. You'll find the appendix here.

Abstract

The ever increasing complexity of web applications has brought new demands on automated testing of JavaScript, requiring test-driven development to achieve maintainable code. A contrasting area is testing of Standard ML, another functional language but with important differences.

The aim of this thesis is to highlight the main problems with testing behaviour of applications written in these two programming languages, and how these problems relate to development tools and practises. This has been investigated based on the following research questions: What are the testability issues of client-side JavaScript and Standard ML? Which considerations need to be made in order to write stable and maintainable tests? How does testing culture affect productivity and quality of software?

Through quantitative interviews, implementation of the DescribeSML testing framework and development with tests in different scenarios, answers to these questions have been sought. The dynamic nature of JavaScript makes it more important to test whereas there are limitations on how Standard ML can be tested imposed by its static type system and immutability.

The conclusion was drawn that the main issues for testability are dependency management, how to test graphical interfaces, and maintaining separation of concerns. In order to write stable and maintainable tests, suitable tools and priorities are needed. The impact of testing culture depends on the ability to avoid time-consuming and unreliable tests. Harnessing the technological advancements, making continuous tradeoffs between rigour and simplicity, and applying pragmatism, ingenuity and persistence, are key to overcoming these challenges.

Related work, by me

exjobb's People

Contributors

emilwall avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.