PHPUnit Testing pada Laravel

1200px-phpunit_logo-svg_-1024x413

Hallo kreatif reader, pada kesempatan kali ini aku mau sharing dari artikel yang udah aku baca..

Apa sih itu PHPUnit?
PHPUnit adalah kerangka pengujian (testing framework) untuk bahasa pemrograman PHP yang bertujuan untuk memastikan bahwa setiap bagian kecil dari program berfungsi sebagaimana mestinya. Dengan menggunakan PHPUnit, developer PHP dapat meningkatkan kualitas software dengan mengidentifikasi dan memperbaiki bug lebih awal dalam siklus pengembangan.

Adapun tahapan-tahapan yang dilakukan dalam automated testing menggunakan PHPUnit adalah sebagai berikut:

1. Instalasi software testing menggunakan PHPUnit yang terintegrasi dengan framework laravel untuk pengembangan aplikasi. Ini dapat dilakukan menggunakan Composer. Sebelumnya pastikan Composer telah diinstal, kemudian buka terminal dan eksekusi perintah berikut:

composer require --dev phpunit/phpunit ^9.6

2. Menuliskan kode pengujian pada PHPUnit dengan nama file pengujian (misalnya: MyMathTest.php) untuk menguji fitur yang telah ditentukan sesuai dengan kebutuhan output yang diharapkan. Berikut contoh kode pengujian pada PHPUnit:

// File: MyMathTest.php

use PHPUnit\Framework\TestCase;

class MyMathTest extends TestCase {
 public function testAdd() {
 $math = new MyMath();
 $result = $math->add(3, 5);
 $this->assertEquals(8, $result);
 }

 public function testSubtract() {
 $math = new MyMath();
 $result = $math->subtract(8, 3);
 $this->assertEquals(5, $result);
 }
}

3. Menjalankan PHPUnit untuk mengetahui hasil pengujian (lulus atau tidak), lakukan perintah berikut melalui terminal dari direktori proyek:

vendor/bin/phpunit MyMathTest.php

Jika memiliki banyak file pengujian, dapat menjalankan semua pengujian dengan perintah berikut:

vendor/bin/phpunit

4. Jika fitur yang diuji lulus, status hasil pengujian menjadi “passed”.
5. Jika fitur yang diuji tidak lulus, maka PHPUnit akan menampilkan pesan error.
Catatan: untuk mempermudah deteksi dan eksekusi pengujian oleh PHPUnit, sebaiknya developer memberikan nama file pengujian dengan format “nama class” dan akhiran “.php”

Berikut ini adalah beberapa fitur PHPUnit dengan keunggulannya:
1. Pengujian Unit Otomatis: Fitur ini membantu dalam mendeteksi kesalahan dan memastikan bahwa perubahan kode tidak merusak fungsionalitas yang ada.
2. Pelaporan Hasil: PHPUnit memberikan laporan hasil pengujian yang jelas dan terstruktur. Ini membantu developer untuk dengan cepat mengidentifikasi masalah dan memperbaikinya.
3. Pengujian Fungsionalitas dan Integrasi: PHPUnit juga mendukung pengujian fungsionalitas dan integrasi, untuk menguji sejauh mana berbagai komponen bekerja bersama.
4. Kemampuan Pengujian Paralel: PHPUnit mendukung pengujian paralel, yang dapat menjalankan beberapa unit pengujian secara bersamaan untuk meningkatkan efisiensi.

Sehingga dapat disimpulkan, apabila tim developer sudah menggunakan PHPUnit untuk pengujian otomatis maka dapat mengurangi error dan menghemat waktu dalam pengembangan aplikasi.

Referensi:
[1] Zhang Tao and He Lei, 2018, Design and Implementation of HTTP Interface Automation Test Framework PHPUnit, Department of Informatics, Beijing University of Technology, China, Atlantis Press.
[2] PHPUnit Testing.

PHP Framework Symfony

Hallo kreatif reader, aku mau sedikit sharing nih dari artikel yang udah aku baca..

Apa itu Web Framework?
Web framework atau yang biasa dikenal dengan web application framework merupakan sebuah software yang menyediakan struktur dan alat untuk membangun dan mengembangkan aplikasi web, web service, dan web dinamis.
Salah satu contoh web framework adalah Symfony (PHP).

logoLalu, apa sih Framework Symfony?
Symfony dibangun pada tahun 2005 sesuai dengan standar PSR yang direkomendasikan oleh standar PHP. Symfony adalah framework lengkap yang dirancang untuk mengoptimalkan kode PHP dalam pengembangan aplikasi Web berdasarkan pola Model View Controller (MVC).

Adapun beberapa fitur pada framework symfony:
1. Struktur MVC (Model-View-Controller)
Symfony mengikuti pola desain arsitektur MVC, yang membantu dalam memisahkan logika aplikasi menjadi komponen-komponen yang terpisah, termasuk Model untuk representasi data, View untuk tampilan, dan Controller untuk mengelola logika bisnis.
2. Twig Template Engine
Symfony menggunakan Twig sebagai mesin template resmi. Twig adalah mesin template yang digunakan dalam kerangka kerja Symfony untuk membangun tampilan (views) dalam aplikasi web. Twig dirancang untuk membuat proses penulisan template lebih bersih, aman, dan ekspresif.
3. Doctrine ORM
Symfony menggunakan Doctrine sebagai Object-Relational Mapping (ORM) untuk berinteraksi dengan basis data. Doctrine memudahkan pengembangan basis data dengan memetakan objek PHP ke struktur basis data.
4. Security Component
Symfony memiliki komponen keamanan yang menyediakan alat dan fitur-fitur untuk mengelola otentikasi, otorisasi, dan perlindungan terhadap ancaman keamanan.
5. Routing
Symfony menyediakan sistem routing yang kuat yang memetakan URL ke tindakan-tindakan dalam aplikasi. Ini memungkinkan untuk pengelolaan URL yang fleksibel dan pembuatan tautan antar halaman.

Beberapa contoh aplikasi yang menggunakan framework symfony:
1. Accenture
accenture 2. Trivago
trivago 3. Typeform
typeform

Kesimpulan
Symfony adalah framework lengkap yang dirancang untuk memaksimalkan pengembangan aplikasi berbasis web dengan memperkenalkan beberapa fitur yang dapat diandalkan untuk pemula.

Referensi:
[1] M. Laaziri, K. Benmoussa, S. Khoulji, K. M. Larbi, and A. El Yamami, “A comparative study of laravel and symfony PHP frameworks,” vol. 9, no. 1, pp. 704–712, 2019
[2] Website Symfony

PHP Framework Laravel

laravel

Hallo kreatif reader, aku mau sedikit sharing nih dari buku yang udah aku baca..

Apa itu PHP framework?
PHP framework dapat membantu mempromosikan metode Rapid Application Development (RAD) atau bersifat incremental terutama untuk waktu pengerjaan yang pendek, menghemat waktu, membantu membuat aplikasi lebih stabil dan mengurangi jumlah pengkodean berulang bagi pengembang aplikasi.

Apa sih Laravel itu?
Laravel adalah PHP framework yang mengikuti pola arsitektur Model-View-Controller (MVC). Sejak diluncurkan tahun 2011, laravel banyak digunakan oleh programmer karena mudah dipahami dan dokumentasinya yang lengkap. Framework ini menyediakan beberapa jenis library dan fungsi lain yang bisa memudahkan dalam penulisan baris kode dengan tujuan memperindah website.

12-fitur-laravel-framework-php-untuk-membangun-website-2Fitur-fitur yang ada pada framework laravel adalah sebagai berikut:
1. Blade Template Engine
Laravel menggunakan blade template engine yang memungkinkan programer untuk mendesain layout yang unik, konsisten dan terstruktur selama proses pengembangan. Kelebihannya dapat menggunakan kode PHP biasa di dalam tampilan, kemudian desain tampilan akan tetap di cache sampai adanya modifikasi.
2. Routing
Laravel memiliki sistem routing yang memungkinkan programer mendefinisikan rute URL dengan mudah, menentukan rute untuk mengarahkan permintaan HTTP ke tindakan (controller) yang sesuai. Routing membantu untuk memperluas dan meningkatkan performa aplikasi web.
3. Eloquent ORM
Eloquent adalah sistem ORM (Object-Relational Mapping) yang terintegrasi dengan Laravel. Ini memungkinkan pengembang berinteraksi dengan database menggunakan model PHP, mengurangi kompleksitas dalam bekerja dengan database.
4. Middleware
Middleware dalam laravel memungkinkan pengembang untuk memodifikasi permintaan HTTP sebelum atau setelah mencapai tujuan akhir, memberikan fleksibilitas dalam memanipulasi permintaan.
5. Authentication and Authorization
Laravel menyediakan sistem autentikasi yang terintegrasi dengan kemudahan konfigurasi dan ekstensibilitas, serta fitur otorisasi yang memungkinkan pengembang mengontrol akses ke bagian-bagian tertentu dari aplikasi.
6. Artisan Command-Line Tool
Laravel dilengkapi dengan Artisan, sebuah perintah baris yang memudahkan pengembang dalam menjalankan tugas-tugas rutin seperti migrasi database, pembuatan controller, dan pengelolaan modul.
7. Migrations
Migrations dalam Laravel memungkinkan programmer mengelola struktur basis data menggunakan kode ataupun membuat dan mengubah tabel serta kolom menggunakan file migrasi. Hal ini memungkinkan tim bekerjasama dengan mudah dan menjaga konsistensi skema basis data dalam pengembangan aplikasi.
8. Testing Support
Laravel mendukung pengujian aplikasi menggunakan framework pengujian PHPUnit. Programmer dapat membuat dan menjalankan pengujian dengan mudah menggunakan alat bawaan Laravel.

Contoh laravel untuk e-commerce
working-of-mvc-1024x686-removebg-preview
Pengembang aplikasi dapat mengunakan konsep Model-View-Controller (MVC) untuk mengorganisir logika aplikasi yang diuraikan seperti berikut:
1. Model, dalam framework laravel akan mewakili entitas. Contohnya: produk dan keranjang belanja, kemudian berinteraksi dengan database untuk menyimpan dan mengambil data.
2. Controller, dalam framework laravel akan mengatur aliran informasi antara model dan view, kemudian mengambil data dari model lalu memperbarui tampilan yang relevan ke view.
3. View, dalam framework laravel akan menangani tampilan. Contohnya: halaman daftar produk, halaman detail produk dan halaman keranjang belanja.

Kesimpulan
Dengan kombinasi fitur-fitur yang sudah dijelaskan dan konsep Model-View-Controller (MVC) yang jelas, Laravel menjadi pilihan untuk pengembangan aplikasi web modern. Penggunaan laravel dapat meningkatkan efisiensi, kualitas, keamanan pengembangan aplikasi web, dan juga dokumentasi yang lengkap. Terimakasih..

Software Engineering #Chapter 22 : Project Management – Risk Management

risk_management-removebg-preview

 

Hallo teman-teman Akhdani, aku mau sedikit sharing nih dari buku yang udah aku baca

Apa itu Project Management?
Project Management adalah metode penyelesaian proyek dengan melakukan proses initiating, planning, executing, control and monitoring, hingga closing untuk mencapai output/tujuan yang sudah ditentukan.

Dalam pengelolaan proyek dapat mengikuti panduan dari PMBOK Guide 4th Edition yang salah satu isinya ada Risk Management.

Apa itu Risk Management?

Risk Management adalah salah satu pekerjaan terpenting seorang Project Manager yang memikirkan kemungkinan terjadinya risiko dan konsekuensinya terhadap proyek. Risk Management dapat mengantisipasi risiko yang mungkin mempengaruhi jadwal proyek atau kualitas software yang sedang dikembangkan, kemudian mengambil tindakan untuk menghindari risiko tersebut.

Beberapa tahapan yang dapat dilakukan:

screenshot-2023-10-30-105801

  1. Risk Identification
    Pada tahapan ini tim berkumpul untuk bertukar pikiran mengenai kemungkinan risiko yang terjadi sehingga project manager dapat mengidentifikasi risiko berdasarkan pengalaman pada proyek sebelumnya.
    Sebagai titik awal untuk identifikasi risiko, ada 6 (enam) jenis risiko yang dapat dimasukkan dalam daftar risiko:
    a. Estimation
    b. Organizational
    c. People
    d. Requirements
    e. Technology
    f. Tools
  2. Risk Analysis
    Pada tahapan ini project manager harus mempertimbangkan setiap risiko yang teridentifikasi dan mengambil tindakan penilaian tentang kemungkinan dan keseriusan risiko tersebut. Project manager tidak mungkin membuat penilaian numerik yang tepat mengenai probabilitas dan keseriusan setiap risiko, sehingga dapat dilakukan penilaian dengan cara berikut ini:
    a. Kemungkinan risiko dapat dinilai sebagai tidak signifikan (rendah, sedang, tinggi, atau sangat tinggi).
    b. Dampak risiko dapat dinilai sebagai bencana besar (mengancam kelangsungan hidup proyek), serius (akan menyebabkan penundaan besar), dapat ditoleransi (keterlambatan akan terjadi kontingensi yang diperbolehkan), atau tidak signifikan.
  3. Risk Planning
    Pada tahapan ini project manager mengembangkan strategi untuk mengelola risiko-risiko utama yang mengancam proyek. Untuk setiap risiko, project manager harus memikirkan tindakan yang memungkinkan dalam meminimalisir gangguan terhadap proyek jika masalah yang diidentifikasi dalam risiko tersebut terjadi.
  4. Risk Monitoring
    Pada tahapan ini project manager harus memantau risiko secara teratur di semua tahapan proyek, mempertimbangkan dan mendiskusikan setiap risiko utama secara terpisah, memutuskan apakah risiko tersebut lebih besar atau lebih kecil kemungkinannya untuk timbul dan apakah konsekuensi risiko telah berubah.

Sehingga dapat disimpulkan untuk pengajuan proposal manajemen proyek bagian Risk Management tertulis seperti berikut ini: 

421315

Software Engineering #Chapter 3 – Agile Software Development

blog-removebg-preview

Ringkasan Agile Software Development
Metode agile adalah metode pengembangan berulang yang berfokus pada pengurangan biaya overhead dan proses dokumentasi serta pengiriman perangkat lunak tambahan. Metode ini cocok untuk pengembangan aplikasi dimana persyaratan sistem biasanya berubah dengan cepat, kemudian mengusulkan persyaratan baru dan perubahan untuk disertakan dalam iterasi sistem selanjutnya selama proses pengembangan.

Scrum merupakan metode agile yang telah muncul sebagai metode yang paling banyak digunakan. Proses scrum atau siklus sprint menghasilkan peningkatan produk dari setiap iterasi proses, kemudian dapat dikirimkan ke pelanggan. Titik awal siklus sprint scrum adalah product backlog. Product backlog merupakan daftar dari item seperti fitur produk, dokumen requirement, daftar cerita pengguna, atau deskripsi lain dari software yang akan dikembangkan oleh tim Scrum. Kemudian seluruh tim dilibatkan dalam memilih item mana yang memiliki prioritas tertinggi dan memperkirakan waktu yang dibutuhkan untuk menyelesaikan setiap sprint.

Dalam berbagai kisah sukses Scrum (Schatz and Abdelshafi 2005; Mulder and van Vliet 2008; Bellouiti 2009), hal-hal yang disukai pengguna tentang metode Scrum adalah:

  1. Produk dipecah menjadi serangkaian bagian yang dapat dikelola bersamaan dan dipahami oleh para pemangku kepentingan.
  2. Perubahan requirement saat pengembangan software tidak menghambat kemajuan progress.
  3. Seluruh tim dapat melihat progress pengerjaan produk, sehingga komunikasi dan semangat tim meningkat.
  4. Pelanggan melihat kemajuan progress, deliverable tepat waktu, dan mendapatkan feedback tentang produk dengan jangka waktu yang cukup pendek.
  5. Kepercayaan antara pelanggan dan pengembang terjalin, dimana setiap pelanggan mengharapkan produk berhasil dan sesuai dengan yang diharapkan.

Diketahui sebagian besar software engineering melakukan pemeliharaan dan pengembangan dari sistem yang ada. Berikut adalah keunggulan pada metode agile software development:

  1. Up to date, karena lebih fleksibel dan menerima perubahan berkelanjutan.
  2. Resource yang dibutuhkan tidak terlalu banyak.
  3. Alur kerja lebih singkat dan efisien,  sehingga kinerja tim menjadi lebih stabil.
  4. Interaksi antara client dan developer menjadi lebih intens dan responsif terhadap kebutuhan pengembangan software.

Tetapi bagaimana jika business requirement saat pemeliharaan perangkat lunak melibatkan sistem kustom yang harus diubah, tidak ada konsensus yang jelas mengenai kesesuaiannya?
Tiga jenis masalah dapat terjadi:

  1. Kurangnya dokumentasi produk dari pembangunan perangkat lunak sebelumnya
  2. Menjaga keterlibatan pelanggan dalam proses pengembangan
  3. Tim pengembangan harus dapat memahami perangkat lunak sebelumnya

Kesimpulan
Menurut saya buku ini sangat menarik untuk pembaca yang ingin mengetahui teknik agile development seperti user stories, refactoring, pair programming and test-first development. Pada buku ini pembaca juga dapat memahami perbedaan antara metode agile software development dengan plan-driven development, dan isu-isu pada scaling agile methods.