Fakultas Ilmu Komputer UI

README.md 3.42 KB
Newer Older
LUTHFI DZAKY SAIFUDDIN's avatar
LUTHFI DZAKY SAIFUDDIN committed
1
2
# 1606889830-practice

LUTHFI DZAKY SAIFUDDIN's avatar
LUTHFI DZAKY SAIFUDDIN committed
3
4
5
6
Luthfi Dzaky Saifuddin - 1606889830 - Computer Science 2016 - PMPL B - Practice Repo

## URL

LUTHFI DZAKY SAIFUDDIN's avatar
LUTHFI DZAKY SAIFUDDIN committed
7
8
9
http://pmpl-luthfi.herokuapp.com

# Tutorial
LUTHFI DZAKY SAIFUDDIN's avatar
LUTHFI DZAKY SAIFUDDIN committed
10
11
12
13

## Tutorial 1 (DONE)
## Tutorial 2 (DONE)
forgot squash commit
Luthfi Dzaky Saifuddin's avatar
Luthfi Dzaky Saifuddin committed
14
## Tutorial 3 Explanation (DONE)
LUTHFI DZAKY SAIFUDDIN's avatar
LUTHFI DZAKY SAIFUDDIN committed
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

### Isolation Test
Pada tutorial 3 kali ini, dijelaskan mengenai <i>isolation test</i>, dimana seharusnya sebuah tes berjalan secara <b>independen</b>. Pada tutorial sebelumnya ketika kita menjalankan <i>functional test</i>. Kita harus menghapus `db.sqlite3` terlebih dahulu karena masih tersimpan data pada <i>functional test</i> sebelumnya.

<i>Isolation test</i> salah satunya dapat menggunakan `LiveServerTestCase`. Salah satu <i>tools</i> dari `Django` yang memungkinkan pembuatan Django Server ketika `setUp()` dan mematikannya ketika `tearDown()`. Dengan <i>tools</i> tersebut, memungkinkan kita melakukan <i>isolation test</i> karena setiap <i>test</i> yang kita lakukan akan selalu membuat Django Server yang baru. Kita sendiri dapat mengatur <i>port</i> yang akan digunakan. Contohnya ketika kita ingin menggunakan <i>port</i> 8333.

```python
./manage.py test --liveserver=localhost:8333
```
### Additional Information

Selain mengenai `isolation test` diatas, ada dua perubahan mengenai desain kode lama dan desain kode pada latihan kali ini.

Pertama, `functional test` pada latihan kali ini sudah diubah menjadi sebuah <i>app</i>. Jadi untuk menjalankan seluruh <i>test</i> cukup menggunakan kode berikut:
```python
python manage.py test
```
![Foto 1](https://i.ibb.co/0FPLpq8/line-20190928-212714.jpg)

Kedua, pada latihan sebelumnya setiap kali kita menjalankan sebuah `functional test`, setiap input yang diberikan kita akan memberi waktu eksplisit dengan `time.sleep(1)`. Namun, hal tersebut dapat berdampak pada dua hal, yaitu:
* Waktu yang digunakan terlalu cepat, sehingga menimbulkan `NoSuchElementException` atau `StateElementException`
* Waktu yang digunakan terlalu lama, hal tersebut membuat `functional test` berjalan lama.

Pada latihan kali ini menggunakan konsep `try-catch` dimana ketika tiap `time.sleep(0.5)` akan mengecek apakah elemen yang dicari ada atau tidak. Jika sudah mencapai `threshold` yang ditentukan (pada latihan ini 10 detik), maka akan langsung menimbulkan error.
Luthfi Dzaky Saifuddin's avatar
Luthfi Dzaky Saifuddin committed
39
40
41
42
![Foto 2](https://i.ibb.co/dBrHJSq/line-20190928-212737.jpg)

## Tutorial 4 (DONE)

43
[Bab 7]
Luthfi Dzaky Saifuddin's avatar
Luthfi Dzaky Saifuddin committed
44
45
46
Pada tutorial 4 kali ini, mempelajari bagaimana seharusnya sebuah program
dibuat secara bertahap. TDD membantu kita untuk bekerja secara bertahap
dengan cara memastikan setiap fitur yang kita buat sebelumnya tidak
47
menjadi rusak dengan penambahan fitur yang kita tambahkan. 
Luthfi Dzaky Saifuddin's avatar
Luthfi Dzaky Saifuddin committed
48

49
[Bab 8]
Luthfi Dzaky Saifuddin's avatar
Luthfi Dzaky Saifuddin committed
50
Selain itu, tutorial ini saya juga mengimplementasikan styling dengan <b>SCSS</b>
51
52
dan juga mengimplementasikannya pada tahap Deployment. Saya juga menggunakan `base.html` 
sebagai cara untuk tidak mengulangi suatu kode yang sama.   
Luthfi Dzaky Saifuddin's avatar
Luthfi Dzaky Saifuddin committed
53
54

Kemudian, saya juga belajar untuk melakukan testing pada bentuk
LUTHFI DZAKY SAIFUDDIN's avatar
LUTHFI DZAKY SAIFUDDIN committed
55
layout. Sehingga bisa memastikan apakah style yang saya gunakan (dengan <b>SASS</b>)
Luthfi Dzaky Saifuddin's avatar
Luthfi Dzaky Saifuddin committed
56
57
berhasil masuk. Untuk file yang saya gunakan adalah `home1.scss` sedangkan
jika saya menggunakan `home2.scss` akan menimbulkan `functional test` error
Luthfi Dzaky Saifuddin's avatar
Luthfi Dzaky Saifuddin committed
58
karena pada test tersebut saya mengecek layout apakah card berada di tengah atau tidak.
Luthfi Dzaky Saifuddin's avatar
Luthfi Dzaky Saifuddin committed
59
60
61
62
Ada perubahan pada `functional_test` dimana saya harus memakai
`StaticLiveServerTestCase` untuk mengetes layout karena ketika saya menggunakan
`LiveServerTestCase` style yang saya gunakan tidak tampil. Namun, penggunaannya tetap sama.