Skip to content

Commit

Permalink
main: update tutorial
Browse files Browse the repository at this point in the history
  • Loading branch information
agungsptr committed Nov 17, 2023
1 parent 2b2a51c commit 6c17b6c
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 1,017 deletions.
50 changes: 39 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,43 @@
### Tutorial
# Unit Testing and Code Coverage

## Setup the project
## Apa itu testing di Backend
Seperti artinya testing berarti pengujian, backend testing merupakan metode untuk mengecek aplikasi backend atau database telah berjalan sesuai dengan semestinya.

secara umum ada 3 jenis test yang dapat dilakukan pada backend
- Structural Testing
- Functional Testing
- Non-Functional Testing

### Structural testing
Testing untuk memastikan seluruh element pada database data bekerja dengan baik untuk meyimpan data. Dalam melakukan structural testing ini kita dapat mengecek mulai dari schema database, table, column, trigger, view dst yang termasuk element dalam database dan memastikan seluruhnya telah sesuai.

### Functional Testing
Functional testing melakukan pengujian pada fungsional applikasi backend apakah sudah bekerja dengan semestinya atau belum. Testing dapat mencakup backend app dalam menerima request dan memprosesnya sampai memberikan response pada client, seluruh element yg berperan dalam flow ini perlu untuk dilakukan testing.

### Non-Functional Testing
Testing ini menguji stress dan load yang dapat di handle backend application, dengan melakukan test ini dapat memastikan performa dari backend aplikaction.

Namun kali ini kita akan berfokus pada functional testing pada backend application kita. Dalam functional testing sendiri masih ada istilah lain seperti Unit Testing dan Code Coverage

### Unit Testing
Seperti bahasnya dalam testing ini kita perlu menguji setiap unit yang ada di backend applikcation kita. Mulai dari function, class, serta integrasinya.

create directory <simple-rest>
### Code Coverage
Code coverage ini mengukur setiap function atau seluruh utiliy yang sudah kita buat dalam project itu telah digunakan dalam testingnya, dengan melakukan code coverage ini kita dapat mengetahu fucntion apa saja atau baris code apa saja yang belum berjalan pada testing. Biasanya dalam tim code covearge harus memperoleh persentasi diatas 80%.

init for npm

https://testsigma.com/blog/backend-testing/
https://www.geeksforgeeks.org/what-is-backend-testing/

## Setup the project

### Init for npm
```bash
npm init
```

install package
### Install package
```bash
npm install express dotenv cors
```
Expand All @@ -18,7 +46,7 @@ install package
- dotenv to set environment variable in your machine using .env file
- cors to handle cross origin resource sharing

install dev package
### Install dev package
```bash
npm install --save-dev typescript ts-node nodemon @types/express @types/cors
```
Expand All @@ -29,10 +57,10 @@ install dev package
- @types/cors cors in typescript
- --save to install package only in dev dependencies

add git ignore
```bash
touch .gitignore
```
or you can simply create file named `.gitignore`
### Add miscellaneous files
- `.gitignore` - To set all ignore files or directories in git
- `jest.config.ts` - Config for jest to run unit tests
- `tsconfig.json` - Typescript config
- `.env` - To set all environment variable

build web server
### Build web server
7 changes: 3 additions & 4 deletions jest.config.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
import type {Config} from '@jest/types';
import type { Config } from "@jest/types";

// Sync object
const config: Config.InitialOptions = {
verbose: true,
transform: {
'^.+\\.ts?$': 'ts-jest',
"^.+\\.ts?$": "ts-jest",
},
// setupFilesAfterEnv: ['./tests/bootstrap.ts']
};
export default config;
export default config;
33 changes: 33 additions & 0 deletions src/book-try.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import request from "supertest";
import express, { Express } from "express";
import router from "./book.router";

describe("Book", () => {
let app: Express;

beforeAll(() => {
app = express();
app.use(express.json());
app.use("/api", router);
});

it("Can get all book", async () => {

});

it("Can get all book with limit 10", async () => {

});

it("Can get book by author", async () => {

});

it("Can add book", async () => {

});

it("Can response error if create with empty body", async () => {

});
});
Loading

0 comments on commit 6c17b6c

Please sign in to comment.