Langsung ke konten utama

Continues Integration Menggunakan Travis CI dan Github Part 1


Setelah sebelumnya saya telah membahas tentang Pentingnya DevOps Dalam Dunia IT, maka pada kesempatan kali ini saya akan mencoba memberikan sedikit tutorial bagaimana cara Anda dapat mengadopsi DevOps untuk proyek Anda. Disini saya akan memulai dengan proses Continues Integration, situs yang akan kita gunakan adalah Travis CI untuk melakukan Continues Integration dan Github untuk menyimpan source code proyek Anda.

Apa Itu Continues Integration ?

Continuous Integration adalah proses menjalankan semua unit test pada kode terbaru yang diajukan untuk memeriksa apakah komponen yang baru ditambahkan tidak merusak fungsi lama apapun. Hal ini sangat penting dari perspektif pengujian dan penyebaran. Ini mencegah masalah rollbacks setelah-deployment. Mereka mengambil banyak waktu dan mengurangi keandalan produk. Untuk penjelasan  yang lebih lengkap tentang Continues Integration dapat Anda baca di Wikipedia.

Sebelum memulai melakukan proses Continues Integration, pertama-tama Anda harus menentukan jenis proyek yang akan Anda buat. Disini saya ambil contoh untuk membuat proyek aplikasi dengan Node.js. Setelah menentukan jenis proyeknya Anda harus mengetahui framework/library yang akan digunakan untuk proyek Anda, disini saya sudah menyiapkan sebuah proyek Node.js untuk mencari gambar menggunakan Google Custom Search. Untuk dapat menggunakan API dari Google Custom Search Anda perlu membuat search engine baru dan mendapatkan API key dari search engine tersebut. Silahkan menuju Google Custom Search untuk membuat search engine baru dan mendapatkan API keynya. Untuk mendapatkan sourcecode project yang saya gunakan dapat Anda temukan di Github saya  dengan nama gcs-image-api.

Perlu diingat bahwa bila Anda menggunakan proyek Anda sendiri yang tidak menggunakan Node.js tetapi menggunakan framework lain seperti misalnya .NET Core maka anda harus mengetahui build process yang terjadi, karena di Continues Integration semua build proccess dilakukan melalui terminal biasanya di Visual Studio menggunakan msbuild atau dotnet. Setiap provider biasanya menggunakan nama file yang berbeda untuk mengetahui build process yang akan dilakukan melalui terminal, namun karena dalam kasus ini saya menggunakan Travis CI maka nama file untuk mendefinisikan build processnya adalah .travis.yml.

Disini saya hanya akan fokus membuat build process yang saya gunakan, jika Anda ingin membuat untuk proyek lain Anda dapat membaca dokumentasi Travis CI di Travis CI User Documentation.
Untuk kasus kali ini proyek akan di deploy ke heroku agar dapat langsung diakses setelah proses Continues Integration selesai.

Sebelum membuat file untuk mendefinisikan build process yang terjadi biasanya Anda harus menentuka terlebih dahulu testing framework apa yang akan digunakan. Terdapat banyak sekali testing framework yang berbeda untuk bahasa pemrograman yang berbeda, namun karena disini saya menggunakan node.js yang mana di node.js menggunakan bahasa pemrograman javascript maka saya hanya memilih automated testing framework untuk javascript, untuk daftar testing framework dapat Anda temukan disini. Pada kasus ini saya menggunakan mocha dan chai dalam proses testing.

Sebelumnya saya akan sedikit menjelaskan tentang beberapa jenis Software Development Process yang sering digunakan pengembang/developer dalam pembuatan software.

Test-driven Development

Test-driven Development (TDD) adalah proses pengembangan perangkat lunak yang bergantung pada pengulangan siklus pengembangan yang sangat singkat: Persyaratan diubah menjadi kasus pengujian yang sangat spesifik, maka perangkat lunak ditingkatkan untuk lulus tes baru. Hal ini bertentangan dengan pengembangan perangkat lunak yang memungkinkan perangkat lunak untuk ditambahkan yang tidak terbukti memenuhi persyaratan.
TDD Biasanya dibagi menjadi lima tahap yang berbeda:

  1. Pertama, pengembang menulis beberapa tes.
  2. Pengembang kemudian menjalankan tes tersebut dan (jelas) mereka gagal karena tidak satu pun fitur tersebut yang benar-benar diterapkan.
  3. Selanjutnya, pengembang benar-benar menerapkan tes tersebut dalam kode.
  4. Jika pengembang menulis kode mereka dengan baik, maka pada tahap berikutnya mereka akan melihat bahwa tes mereka lulus.
  5. Pengembang kemudian dapat melakukan refactor kode mereka, menambahkan komentar dan membersihkannya, karena mereka menginginkannya karena pengembang mengetahui bahwa jika kode baru tersebut merusak sesuatu, pengujian akan menjadi peringatan karena kegagalan.

Siklus terus berlanjut selama pengembang memiliki lebih banyak fitur untuk ditambahkan.

Mari kita lihat contoh bagaimana pengembang akan melakukan ini.
Katakanlah pengembang ingin menulis sebuah fungsi yang melakukan sesuatu yang sederhana, seperti menghitung faktorial. Pendekatan normal yang ditentukan oleh TDD adalah dengan menggunakan fungsi tersebut dan kemudian menyatakan bahwa hasilnya memenuhi nilai tertentu.

Dalam contoh ini, kita akan menggunakan JavaScript Testing Framework yang disebut Mocha. Tes mungkin terlihat seperti berikut:
var assert = require('assert'),
factorial = require('../index');

suite('Test', function (){
setup(function (){
// Create any objects that we might need
});

suite('#factorial()', function (){
test('equals 1 for sets of zero length', function (){
assert.equal(1, factorial(0));
});

test('equals 1 for sets of length one', function (){
assert.equal(1, factorial(1));
});

test('equals 2 for sets of length two', function (){
assert.equal(2, factorial(2));
});

test('equals 6 for sets of length three', function (){
assert.equal(6, factorial(3));
});
});
});

Tes pasti akan gagal karena fungsinya belum ditulis. Jadi mari kita tulis fungsi itu untuk memenuhi tes.

module.exports = function (n) {
if (n < 0) return NaN;
if (n === 0) return 1;

return n * factorial(n - 1);
};
Sekarang jika kita menjalankan tes, kita bisa melihat semua tes berhasil! Beginilah cara TDD bekerja. Sekarang mari kita lihat BDD untuk melihat bagaimana perbedaannya.

Behavior-driven Development

Behavior-driven development (BDD) adalah proses pengembangan perangkat lunak yang muncul dari uji coba pengembangan (TDD). Behavior-driven development menggabungkan teknik umum dan prinsip TDD dengan gagasan dari desain berbasis domain dan analisis dan desain berorientasi objek untuk menyediakan pengembangan perangkat lunak dan tim manajemen dengan alat bersama dan proses bersama untuk berkolaborasi dalam pengembangan perangkat lunak.

Berbeda dengan TDD, BDD adalah ketika kita menulis perilaku & spesifikasi yang kemudian mendorong pengembangan perangkat lunak kita. Perilaku & spesifikasi mungkin tampak sangat mirip dengan tes tapi bedanya sangat halus dan penting.

Mari kita lihat contoh sebelumnya tentang penulisan sebuah fungsi untuk menghitung faktorial untuk sebuah angka.

var assert = require('assert'),
factorial = require('../index');

describe('Test', function (){
before(function(){
// Stuff to do before the tests, like imports, what not
});

describe('#factorial()', function (){
it('should return 1 when given 0', function (){
factorial(0).should.equal(1);
});

it('should return 1 when given 1', function (){
factorial(1).should.equal(1);
});

it('should return 2 when given 2', function (){
factorial(2).should.equal(2);
});

it('should return 6 when given 3', function (){
factorial(3).should.equal(6);
});
});

after(function () {
// Anything after the tests have finished
});
});
Perbedaan utamanya hanyalah kata-katanya saja. BDD menggunakan gaya yang lebih verbose sehingga bisa dibaca hampir seperti sebuah kalimat.

Kemampuan untuk membaca tes Anda seperti kalimat adalah perubahan kognitif dalam bagaimana Anda akan memikirkan tes Anda. Argumennya adalah bahwa jika Anda bisa membaca tes Anda dengan lancar, Anda tentu akan menulis tes yang lebih baik dan lebih komprehensif.

Meski contoh ini sangat sederhana dan tidak mengilustrasikannya, tes BDD harus lebih fokus pada fitur, bukan hasil sebenarnya. Seringkali Anda akan mendengar bahwa BDD adalah untuk membantu merancang perangkat lunak, tidak mengujinya seperti apa yang seharusnya dilakukan TDD.

Komentar

Postingan populer dari blog ini

Dua Startup Indonesia yang Berangkat ke Google Amerika

Dua perusahaan rintisan (startup) asal Indonesia berkesempatan diboyong ke markas Google yang bertempat di Mountain View, California, Amerika Serikat. Selain Indonesia, ada satu lagi startup dari negara lain yang dibawa untuk menghadiri konferensi tahunan Google I/O yang digelar pada 16-18 Mei 2017 mendatang. Yaitu dari Meksiko. STARTUP MENJAMUR DI INDONESIA, HANYA SEDIKIT YANG SUKSES Startup yang dimaksud adalah Pasienia (Indonesia) , Reblood (Indonesia) , dan Croquetero (Meksiko). Ketiganya yang terpilih dari 469 pelamar dari anggota Google Business Groups (GBG) dan para enterprenir independen di 26 negara. Disebutkan, pengajuan tersebut merepresentasikan ide-ide besar dari enterpreneur di seluruh dunia, termasuk di antaranya Brasil, Mesir, Maroko, Nigeria, Pakistan, Peru, hingga Uganda. "Sebagai bentuk usaha Google dalam menginspirasi para entrepreneur untuk dapat mengarahkan bisnis mereka ke ranah online, Google mengundang para anggota GBG global untuk dapat berpartisipasi dal

Membuat Situs Traffic Exchange

Membuat Situs Traffic Exchange Pada saat ini situs-situs traffic exchange semakin marak di dunia internet. Karena semakin berkembangya teknologi sehingga membuat hal lain pun ikut berkembang. Situs Traffic Exchange ini misalnya, saat ini banyak situs-situs traffic exchange yang tidak hanya menyediakan layana traffic exchange namun sekarang  telah ada situs traffic exchange yang menawarkan Social Exchange seperti twitter followers, facebook like, google+ circle dan lain sebagainya. Dan bahkan ada juga situs traffic exchange yang menyediakan layanan SEO seperti Directory Submission.  Pada postingan ini saya tidak akan berbicara banyak kepada Anda, karena saya tahu saat Anda masuk ke halaman ini berarti Anda sedang mencari cara Membuat Situs Traffic Exchange. Mungkin Anda sampai ke halaman ini karna mungkin hanya sedikit blog/website lain yang membahas tentang hal ini. Dan mungkin niat Anda adalah Membuat Situs Traffic Exchange secara gratis sehingga Anda tidak perlu mengeluarkan uang unt

18 Fakta Unik Dan Menarik Mengenai Youtube Yang Banyak Orang Belum Ketahui

Bagi kalian pengguna youtube setia,kali ni saya akan bagikan artikel mengenai 18 Fakta Unik Dan Menarik Mengenai Youtube Yang Banyak Orang Belum Ketahui . Youtube didirikan pada bulan februari 2005 Oleh 3 orang mantan karyawan Paypal,yaitu Chad Hurley Steve Chan dan Jawed Karim. Youtube adalah perpustakaan Video Paling banyak dan lengkap di dunia. Merupakan situs layanan sharing video paling terkenal di dunia,dan sudah menjadi salah satu situs besar dan terpopuler di internet sejak tahun 2005. Youtube memunculkan Beta Tes pada bulan mei 2005,dan pada bulan juli 2006 tepatnya 8 bulan setelah diresmikan,tercatat 65.000 video yang baru diupload ke situs youtube setiap harinya,dengan jumlah Viewer mencapai 100 juta perhari. Pada Bulan Oktober 2006 Perusahaan Google membeli youtube senilai 1,65 Milyar US$. Saat ini youtube menjadi situs video provider paling dominan di amerika serikat,bahkan mungkin didunia,dengan menguasahi hingga 43% Pasar. Diperkirakan 20 durasi jam video di upload ke y