All Projects → teixeira-fernando → Ecommerceapp

teixeira-fernando / Ecommerceapp

Licence: apache-2.0
QA Strategy for microservices with Synchronous and Asynchronous communication

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Ecommerceapp

Spring Testing
A Spring Boot application with lots of sample tests
Stars: ✭ 569 (+2007.41%)
Mutual labels:  microservices, spring-boot, test-automation
Spring Cloud Security
Security concerns for distributed applications implemented in Spring
Stars: ✭ 488 (+1707.41%)
Mutual labels:  microservices, spring-boot
Micro Server
Microserver is a Java 8 native, zero configuration, standards based, battle hardened library to run Java Rest Microservices via a standard Java main class. Supporting pure Microservice or Micro-monolith styles.
Stars: ✭ 929 (+3340.74%)
Mutual labels:  microservices, spring-boot
Abixen Platform
Abixen Platform
Stars: ✭ 530 (+1862.96%)
Mutual labels:  microservices, spring-boot
Spring Cloud Netflix
Integration with Netflix OSS components
Stars: ✭ 4,498 (+16559.26%)
Mutual labels:  microservices, spring-boot
Restaurant App
Restaurant App 🍔 is a sample open-source e-Commerce 🛒 application for ordering foods, powered by polyglot microservices architecture and cross-platform development including mobile and web
Stars: ✭ 471 (+1644.44%)
Mutual labels:  microservices, spring-boot
Spring Boot Microservices On Kubernetes
In this code we demonstrate how a simple Spring Boot application can be deployed on top of Kubernetes. This application, Office Space, mimicks the fictitious app idea from Michael Bolton in the movie "Office Space".
Stars: ✭ 504 (+1766.67%)
Mutual labels:  microservices, spring-boot
Sample Spring Microservices
Many samples in different branches that shows how to create microservices with Spring Boot, Spring Cloud, Zipkin, Zuul, Eureka, Hystrix, Kubernetes, Elastic Stack and many more tools
Stars: ✭ 368 (+1262.96%)
Mutual labels:  microservices, spring-boot
Apollo
Apollo is a reliable configuration management system suitable for microservice configuration management scenarios.
Stars: ✭ 26,052 (+96388.89%)
Mutual labels:  microservices, spring-boot
Spring Cloud Contract
Support for Consumer Driven Contracts in Spring
Stars: ✭ 569 (+2007.41%)
Mutual labels:  microservices, spring-boot
Spring Petclinic Gcp
Spring PetClinic Microservices on GCP
Stars: ✭ 22 (-18.52%)
Mutual labels:  microservices, spring-boot
K8s Mastery
Repository for the article "Learn Kubernetes in Under 3 Hours"
Stars: ✭ 750 (+2677.78%)
Mutual labels:  microservices, spring-boot
Learn
How do you achieve your career objectives? Complete career paths with amazing Cloud, Full Stack and Microservice Courses and Videos from in28Minutes
Stars: ✭ 447 (+1555.56%)
Mutual labels:  microservices, spring-boot
Spring Cloud Zookeeper
Spring Cloud Zookeeper
Stars: ✭ 481 (+1681.48%)
Mutual labels:  microservices, spring-boot
Microservices Spring Boot
The source code for series of articles on Medium about Microservices with Spring Boot
Stars: ✭ 382 (+1314.81%)
Mutual labels:  microservices, spring-boot
Spring Cloud Commons
Common classes used in different Spring Cloud implementations
Stars: ✭ 493 (+1725.93%)
Mutual labels:  microservices, spring-boot
Spring Boot Microservices Series
Code for SpringBoot MicroServices Blog Series
Stars: ✭ 338 (+1151.85%)
Mutual labels:  microservices, spring-boot
Spring Cloud Bus
Spring Cloud event bus
Stars: ✭ 342 (+1166.67%)
Mutual labels:  microservices, spring-boot
Spring Cloud Release
Spring Cloud Release Train - dependency management across a wide range of Spring Cloud projects.
Stars: ✭ 543 (+1911.11%)
Mutual labels:  microservices, spring-boot
Spring Cloud Consul
Spring Cloud Consul
Stars: ✭ 703 (+2503.7%)
Mutual labels:  microservices, spring-boot

Coverage Bugs Technical Debt

Quality gate

E-commerce App - Exploring QA strategies for microservices with Synchronous and Asynchronous communication

The initial objective of this project was to further study the differences in the development and implementation of quality strategies for microservices with synchronous and asynchronous communication. I decided to do all the development of the application and the tests from scratch to be able to better observe some details in practice.

Microservices

  • Shop
  • Inventory
  • Shipment

alt text

Instructions to run the project

The docker-compose file contains the pre-requisites to run the application: MongoDB and Kafka

It's also neccessary to generate some depencies jars from the modules:

mvn clean install

Now, you can bring up the docker-compose:

docker-compose up -d

Then, you can run the application modules:

Run Inventory:

mvn -f inventory/ spring-boot:run 

Run Shop:

mvn -f shop/ spring-boot:run 

Run Shipment:

mvn -f shipment/ spring-boot:run 

QA Strategy

  • Unit Tests: Junit5 and Mockito
  • Integration tests: Spring Boot Test, WireMock and EmbeddedKafka (when testing asynchronous events)
  • Quality Metrics:
    • Mutation Tests/Mutation Coverage: PITest
    • Code Coverage: Jacoco
    • Technical Debt, Code Smells and other complementary metrics : Sonar Cloud
  • Contract tests: Pact framework
  • Continuous Integration: This project uses Github Action for Continuous Integration, where it executes all the tests and Sonar Cloud Analysis for every pull request, making easier the process of integration of every new code, also facilitating the process of Code Review.

Development technology stack

  • Development:
    • Spring Boot
    • Java
    • Maven
  • Kafka
  • MongoDB
  • Github Actions
  • Docker

Instructions for contract tests with Pact

This project contains contract tests using Pact. In order to run it, first you need to bring up the pact broker. To run the pact-broker using Docker, execute:

docker-compose -f pactbroker_dockercompose/docker-compose.yml up -d

Then you can go to the producer module and execute the contract tests, to generate the contracts. The pact files will be written in the target/pact folder. It is configured to automatically publish the pacts into the pact broker.

mvn -f {folder}/ -Dtest=**/contract/*ConsumerPact test

If you want to manually publish the pacts into the pact broker, you can execute the following command:

mvn pact:publish 

Then you can run the contract tests in the provider side, where it is already configured to get it from the pact broker

mvn -f {folder}/ -Dtest=**/contract/*ProviderPact test

Other info and Utilities

mvn spotless::check (in the sub-module directory)
  • Apply code Style:
mvn spotless::apply (in the sub-module directory)

Articles with more info related to this project

https://medium.com/assertqualityassurance/creating-a-test-strategy-for-asynchronous-microservices-applications-1397f7755e85

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].