Titulo Estágio
Load Testing using k6 with TypeScript
Áreas de especialidade
Engenharia de Software
Local do Estágio
Porto e remoto
Enquadramento
Project Description
Konkconsulting is an innovative software development company, specialized in the design and implementation of solutions in Human Resources.
Naturally, Konkconsulting has extensive experience in the development of web applications, be it using Kotlin, C#, or JavaScript. Moreover, it has a very strong knowledge of relational database systems, owing to the field it specializes in.
However, it has come to its attention that the performance of developed applications can be drastically affected by several factors, be it the growth of the database(s) in use, other loads on the application server, or the increase of concurrent users as applications reach maturity. This flexible load, which can vary throughout the day/month/year, according to the natural flows of the users, can and should be tested in a process commonly known as load testing.
Data/Context
Throughout the years, Konkconsulting has created numerous projects which could benefit from the addition of performance tests. However, two have been selected for this proposal:
1. A Talent-management platform with granular permissions for numerous data fields and user actions, where the calculation of permissions and their lookup may impact the final user’s experience. Performance tests can help Konkconsulting determine which
2. Enmeshed, an open-source project combining various assets into an overarching digitalization approach for users and organizations. The development of performance tests for enmeshed in ongoing, but we propose a different approach for this dissertation.
The selection of the project to tackle (or possibly even both) shall be done according to the study of the state of the art and capabilities of k6, and how those fit with the scenarios that can be created for each application.
Technologies:
JavaScript/TypeScript, Go, REST
Objetivo
Goals
Study the state of the art of load testing of web applications using several frameworks and languages, including but not limited to k6 & rust goose. Document differences between testing web page load times and API call times.
Explore k6 as a Go-developed framework which transpiles instructions from JavaScript code. Document its shortcomings in terms of JavaScript functionalities, such as web assembly support. Find a stable way of implementing tests using TypeScript and transpiling them to JavaScript.
Explore solutions for the aforementioned shortcomings and implement them. Provide several alternatives and compare them in terms of test performance impact, difficulty of use, etc.
Define and implement complex test scenarios which represent real user flows, involving several steps and using the replies of one call in the next one(s). Implement light checks and validations for each step.
Optionally, delve into k6 source code in Go and determine/explore what would be required to provide native support for (some of the) unsupported functionalities previously explored.
Innovation
This proposal explores the field of load testing in a business-centered approach, as complex and real flows are considered instead of load-testing a single endpoint or web page – a quite common approach which does not align with the needs of a complex application.
Plano de Trabalhos - Semestre 1
Work Plan
1. State of the art research:
What is load testing? How many approaches exist? How can they be classified?
What solutions/libraries/frameworks are there for load testing?
What are the best practices when developing load tests?
What kind of feedback should be extractable from load tests?
2. Project plan
Plano de Trabalhos - Semestre 2
Work Plan
3. Implementation plan
Proof of concept:
Implementation of selected cryptography algorithms using k6 and other technologies.
Implementation of other algorithms/solutions deemed relevant.
Development & Results:
Investigation of support for adding Go libraries to k6 for calling from withing the JavaScript code.
Optionally, addition of native support for some functionality from within k6. Possibility of open-source contribution. Paper-writing.
Documentation & Reporting
Condições
- Disponibilização de portátil
- Apoio em ajudas de custo
Observações
Bibliography:
R. Abbas, Z. Sultan and S. N. Bhatti, "Comparative analysis of automated load testing tools: Apache JMeter, Microsoft Visual Studio (TFS), LoadRunner, Siege," 2017 International Conference on Communication Technologies (ComTech), Rawalpindi, Pakistan, 2017, pp. 39-44
https://doi.org/10.1109/COMTECH.2017.8065747
E. Viglianisi, M. Dallago and M. Ceccato, "RESTTESTGEN: Automated Black-Box Testing of RESTful APIs," 2020 IEEE 13th International Conference on Software Testing, Validation and Verification (ICST), Porto, Portugal, 2020, pp. 142-152
https://doi.com/10.1109/ICST46399.2020.00024
Godinho, A., Rosado, J., Sá, F., Cardoso, F. (2024). Method for Evaluating the Performance of Web-Based APIs. In: Coelho, P.J., Pires, I.M., Lopes, N.V. (eds) Smart Objects and Technologies for Social Good. GOODTECHS 2023. Lecture Notes of the Institute for Computer Sciences, Social Informatics and Telecommunications Engineering, vol 556. Springer, Cham.
https://doi.org/10.1007/978-3-031-52524-7_3
k6
https://k6.io/
Orientador
Daniel Silva
Daniel.P.Silva@konkconsulting.com 📩