• Stars
    star
    102
  • Rank 335,584 (Top 7 %)
  • Language
  • License
    Apache License 2.0
  • Created about 7 years ago
  • Updated over 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Define a general guidance for tech projects quality assurance at Karumi.

Project Quality Assurance

The goal of this repository is to define general guidance for tech projects quality assurance at Karumi. This document describes the guidelines we follow for every single project, for more in-detail steps and rules applied to specific platforms, you can read the following READMEs:

Pull requests

  • Pull requests are mandatory, even if you are alone in the project. The usage of pull requests improves the way the history of the project evolves so we can better understand how and why something was implemented. Additionally, this practice helps developers review the content of a pull-request before merging a branch and consider it as done.

  • At least one reviewer's approval is required to merge a pull request (depending on the size of the team, having more reviewers is desirable).

  • Use a template to describe what are you trying to solve with your code and why are you doing it in that way. If you don't have a template yet and you are using Github, feel free to use the following one or a more in-depth version.

  • Pull requests have to be linked to a CI service that automatically validates your code. Depending on the project you are working on, different continuous integration services can be used. We recommend you to use one where the CI configuration is versioned in the project repository itself.

  • All new features have to include tests for the feature. If none are created for time reasons, create an issue to later tackle the problem, but remember, sending the PR with the production code and the tests evaluating the correct implementation of the production code at the same time is desirable.

  • All bugfixes have to include a test that verifies that the bug has been addressed. This will help you avoid regressions, so once you fix the bug and add the test, you won't face the same bug again.

  • Do not add TODO nor FIXME comments to PRs, create issues for that matter.

  • If you are developing a project with visual content, always include screenshots/videos. Sometimes these resources can be generated automatically using a testing strategy known as "visual regression testing" or "screenshot testing".

Issues

  • Issues have to describe a feature or bug in detail with no ambiguity.

    • In case of a feature: Explain what is the expected outcome and the cases you want to cover. Include potential error scenarios and, when applicable: translation keys, designs, assets, etc.

    • In case of a bug: Describe the steps you have to follow to reproduce it and what's the expected behavior. Include:

      • A severity level.

      • The version of the app or the project where the bug is reproduced.

      • The scenario or the special conditions to reproduce the error.

  • Tag your issues, enhancement and bug are the most common tags, but you can use the ones that better fit your project.

  • Include a responsible for the issue when possible.

  • Use a template (file .github/ISSUE_TEMPLATE.md). Feel free to use this one.

  • Organize your issues with your preferred project management tool. If you are using GitHub, the projects tab might work just fine. Create at least 4 phases for issues: TODO, WIP, REVIEW and DONE. Before moving an issue to the DONE column, you should review with your team what DONE means. For some teams, merging a branch could be considered as DONE, others won't consider a task as done until the new version is released to the final users.

Continuous Integration

  • Before merging a branch, it is mandatory to verify:

    • That your project compiles.

    • Your tests are passing.

    • There are no linting issues.

    • Checkstyle.

    • Database migrations and configuration files are working.

  • It is optional to store information about the following points to keep track of the evolution of the project:

    • Calculate tests code coverage.

    • Run other static analysis tools such as complexity metrics.

    • When applicable, your CI service should be the one deploying new versions when merging your pull request automatically. That doesn't mean that manual releases can't be done by the person responsible for the project.

Repository

  • Include a .gitignore file to avoid uploading build, temporal or local configuration files.

  • Protect your master branch so that no one can commit directly to it.

  • Include a README.md file describing, at least, all the steps required to compile, run the project and all the tests.

  • All projects should be runnable in local (Docker is the best option for backend projects) for both, development and testing.

  • Tag your public releases. Publish the release in Github and include a description of the main features you included in the release.

  • Do not ever upload sensitive information to your repositories such as API keys, users, passwords or certificates unless you are forced to (Terraform or mobile certificates can be stored in private repositories).

Project

  • Create alarms for backend services, the most simple one will just send a request to a health endpoint to see if it works.

  • Log crashes and errors to keep track when things go south.

  • Every project must have a way to revert a release in case something goes wrong.

  • Use a tool to keep track of milestones, deadlines, releases and the like.

  • Keep track of the decisions you make for the project in a document.

  • Every meeting need outcomes, future tasks, and assignees, no exceptions.

Projects will have when possible two or more developers working on it to enforce these requirements.

License

Copyright 2018 Karumi

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

More Repositories

1

Dexter

Android library that simplifies the process of requesting permissions at runtime.
Java
5,233
star
2

Rosie

Rosie is an Android framework to create applications following the principles of Clean Architecture.
Java
1,824
star
3

ExpandableSelector

ExpandableSelector is an Android library created to show a list of Button/ImageButton widgets inside a animated container which can be collapsed or expanded.
Java
693
star
4

KataSuperHeroesAndroid

Super Heroes Kata for Android Developers. The main goal is to practice UI Testing.
Java
683
star
5

HeaderRecyclerView

HeaderRecyclerView is an Android library created to be able to use RecyclerView.Adapter with a header in a easy way. To use this library create your RecyclerView.Adapter classes extending from HeaderRecyclerViewAdapter.
Java
501
star
6

Dividers

Dividers is a simple Android library to create easy separators for your RecyclerViews
Java
483
star
7

AndroidAudit

Your Android app as a crime scene!!!
468
star
8

BothamUI

Model View Presenter Framework written in Swift.
Swift
347
star
9

KataScreenshotAndroid

Screenshot Kata for Android Developers. The main goal is to practice UI Testing.
Java
265
star
10

KataContactsJava

KataContacts written in Java. The main goal is to practice Clean Architecture Development.
Java
111
star
11

KataSuperHeroesKotlin

Super Heroes Kata for Android Developers in Kotlin. The main goal is to practice UI Testing.
Kotlin
86
star
12

KataScreenshotKotlin

Screenshot Kata for Android Developers with Kotlin. The main goal is to practice UI Screenshot Testing.
Kotlin
76
star
13

KataSuperHeroesIOS

Super heroes kata for iOS Developers. The main goal is to practice UI Testing.
Swift
69
star
14

learnyougit

A self-guided workshop to learn the basics and some of the internals of Git
JavaScript
67
star
15

MarvelApiClientAndroid

Api client for Marvel Api
Java
66
star
16

MaxibonKataJava

Maxibon kata for Java Developers. The main goal is to practice property based testing.
Java
65
star
17

KataTODOApiClientKotlin

TODO API Client Kata for Kotlin Developers. The main goal is to practice integration testing using MockWebServer
Kotlin
60
star
18

KataContactsSwift

KataContacts written in Swift. The main goal is to practice Clean Architecture Development.
Swift
60
star
19

KataTODOApiClientJava

TODO API Client Kata for Java Developers. The main goal is to practice integration testing using MockWebServer.
Java
53
star
20

play-framework-kotlin

This repository is to show how to create an Play Framework project using Kotlin
Kotlin
48
star
21

KataContactsKotlin

KataContacts written in Kotlin. The main goal is to practice Clean Architecture Development
Kotlin
48
star
22

Hagu

Gradle plugin to enable Kotlin build configuration secrets for Kotlin, Kotlin-Native / Multiplatform.
Kotlin
47
star
23

KataSuperHeroesJetpack

SuperHeroes kata for Jetpack Developers in Kotlin
Kotlin
47
star
24

WeakDelegate

WeakReference property delegate proposal
Kotlin
47
star
25

KotlinMultiplatformApp

Application example using Kotlin multiplatform
Objective-C
43
star
26

MaxibonKataKotlin

Maxibon kata for Kotlin Developers. The main goal is to practice property based testing.
Kotlin
43
star
27

SuperHeroesKotlin

An example of architecture in kotlin
Kotlin
41
star
28

Reddo

Show messages in a 16x32 led matrix using a Raspberry Pi.
Java
39
star
29

SpringBootKotlin

Spring boot Kotlin example
Kotlin
38
star
30

BothamNetworking

Networking Framework written in Swift.
Swift
26
star
31

MaxibonKataIOS

Maxibon kata for iOS Developers. The main goal is to practice property based testing.
Swift
26
star
32

ControlFlowUI

A library that add control flow functionality to SwitUI, using the power of @functionBuilder and ViewBuilder.
Swift
25
star
33

AndroidAnimations

This is the project where we will analyze study and put into practice how to work with animations in Android
Kotlin
22
star
34

KataTODOApiClientIOS

TODO API Client Kata for iOS Developers. The main goal is to practice integration testing using Nocilla and Nimble.
Swift
21
star
35

FoursquareTop

Code for the app made as part of the NSSpain 2016 talk
Swift
21
star
36

KataSuperHeroesCompose

Super Heroes Kata implemented using Jetpack Compose and Screenshot Testing.
Kotlin
19
star
37

iOSBasicTraining

Code associated to the first level of our iOS Training.
Swift
17
star
38

KataCoroutines

Transform this game-of-life sequential implementation to a parallel version with Kotlin coroutines
Kotlin
16
star
39

ReactNativePlayground

Playground used to learn and experiment with React Native πŸš€
TypeScript
16
star
40

KataScreenshotIOS

Screenshot Kata for iOS Developers. The main goal is to practice UI Testing
Swift
16
star
41

KataLogInLogOutKotlin

Solution for the testing kata imparted during the mobile testing training written in Kotlin
Kotlin
15
star
42

MarvelApiClient

Marvel Api Client written in Swift.
Swift
14
star
43

ktlint-sbt

Ktlint Sbt Plugin
Scala
13
star
44

kodein-sample-testing

This repository aims to be a small example of how to use Kodein to provide different implementations for production code and testing code
Kotlin
11
star
45

KataSuperHeroesSpringBoot

This is a spring boot kata for the courses.
Kotlin
10
star
46

EndZone

Swift
10
star
47

hangout-slack-import

Script that help you import your google hangout chat history to Slack
Python
9
star
48

MagicCounterKataAndroid

Magic counter kata for Android developers. The main goal is to unit and integration testing.
Kotlin
9
star
49

KataSuperHeroesReactNative

Super Heroes Kata for React Native Developers in Typescript.
TypeScript
8
star
50

HotSwitchLocalizationTest

Android app implemented to show how to change the language and country used by our apps in runtime without restarting thea app. This only works for API >= 17. For API < 17 the localization change is not applied.
Kotlin
6
star
51

boilerplate-wars

Swift
6
star
52

TestingPlayFramework

Example repository used to show how to test a Play Framework application
Scala
4
star
53

KataContactsCSharp

C#
4
star
54

KataLogInLogOutSwift

Solution for the testing kata imparted during the mobile testing training written in Swift
Swift
4
star
55

LitElementPlayground

Playground used to learn and experiment with Lit Element and Web development
JavaScript
3
star
56

BasicTextFieldKeyboardBug

Repository used to show how to reproduce a bug we've found in BasicTextField component.
Kotlin
3
star
57

ExtensionProtocolforStruct

Swift
3
star
58

infrared-wifi-bridge-led

Open Hardware, Infrared Wifi bridge with an integrated LED Strip.
C
2
star
59

MaxibonKataCSharp

C#
2
star
60

SwiftMonad

Swift
2
star
61

KarumiJekyllTheme

Karumi Official Jekyll Template
CSS
2
star
62

KataSuperHeroesSwiftUI

Swift
2
star
63

MagicCounterKataIOS

Magic counter kata for iOS developers. The main goal is to unit and integration testing.
Swift
1
star