Apa perbedaan antara pengujian integrasi dan pengujian fungsional? [Tutup]


132

Apakah pengujian fungsional dan pengujian integrasi sama?

Anda memulai pengujian Anda melalui pengujian unit, lalu setelah menyelesaikan pengujian unit Anda pergi untuk pengujian integrasi di mana Anda menguji sistem secara keseluruhan. Apakah pengujian fungsional sama dengan pengujian integrasi? Anda masih menggunakan sistem secara keseluruhan dan mengujinya untuk kesesuaian fungsionalitas.


1
kemungkinan duplikat [The Agile Way: Integration Testing vs Functional Testing atau keduanya? ] ( stackoverflow.com/questions/555899/… )
Pascal Thivent

14
Bolehkah saya menyarankan Anda menerima beberapa jawaban dari pertanyaan yang Anda buat sebelumnya?
Stefano Borini

Lihat jawaban saya di sini: stackoverflow.com/questions/2741832/…
Andrejs

6
Saya harus mengatakan pertanyaan ini mewakili apa yang salah dengan situs ini. Apa yang salah dengan pertanyaan ini? Bagaimana itu terlalu luas? Ini menanyakan sesuatu yang SANGAT spesifik, terkait dengan pemrograman. Apa perbedaan antara sesuatu yang bahkan dapat direpresentasikan secara matematis Tampaknya hanya ada sejumlah besar pertanyaan yang sangat penting dan sangat relevan yang ditutup karena alasan yang tidak dapat dijelaskan. Saya tahu Anda orang-orang SO yang serius akan memberi tahu saya bahwa saya salah, tetapi fakta bahwa frasa-frasa ini dipecah menjadi situs-situs seperti Quara.com membuktikan saya benar. [Pada dasarnya SO mendedikasikan pangsa pasar].
Jim Maguire

1
Saya setuju dengan @JimMaguire: pertanyaan yang ditanyakan adalah pertanyaan "ya / tidak" (ditambah penjelasan mengapa ya atau tidak). Saya tidak melihat mengapa itu dianggap tidak fokus.
bob

Jawaban:


101

Pengujian integrasi adalah ketika Anda menguji lebih dari satu komponen dan bagaimana mereka berfungsi bersama. Misalnya bagaimana sistem lain berinteraksi dengan sistem Anda atau database berinteraksi dengan lapisan abstraksi data Anda. Biasanya ini membutuhkan sistem yang terinstal sepenuhnya, meskipun dalam bentuk yang paling murni tidak.

Pengujian fungsional adalah ketika Anda menguji sistem terhadap persyaratan fungsional produk. Manajemen Produk / Proyek biasanya menulis ini dan QA memformalkan proses apa yang harus dilihat dan dialami pengguna, dan apa hasil akhir dari proses tersebut. Tergantung pada produk ini dapat otomatis atau tidak.


9
Terima kasih ... ya tetapi dalam pengujian fungsional juga ketika kami menguji sistem terhadap persyaratan fungsional pada waktu itu juga kami menganggapnya sebagai sistem yang terintegrasi .. Dan saat melakukan tetsing fungsional kami juga akan mengetahui bahwa bagaimana unit yang berbeda bekerja bersama-sama sehingga bisa menjadi pengujian Integrasi ...
Mishthi

3
Khususnya di lingkungan kami, kami selalu menganggap unit test sebagai tes nunit yang ditulis terhadap satu kelas, tes integrasi menjadi tes nunit atau tes skrip sql yang membutuhkan lebih dari kelas, atau database, atau sistem lain (biasanya memerlukan instalasi penuh) dan tes fungsional adalah tes yang dijalankan QA atau pengujian UI otomatis.
aceinthehole

1
Juga, saya akan mengatakan bahwa jika Anda belum melakukan pengujian integrasi sebelum pengujian fungsional maka Anda melakukan keduanya pada waktu yang sama, dan Anda hanya akan menemukan kesalahan di bagian integrasi saat Anda menguji persyaratan fungsional.
aceinthehole

1
bagaimana ini bukan jawaban yang diterima !?
tftd

@ tftd karena autor dari pertanyaan ini telah tidak aktif sejak 2010 ...
t3chb0t

20

Pengujian fungsional :

Ya, kami sedang menguji produk atau perangkat lunak secara keseluruhan apakah berfungsi dengan baik atau tidak (tombol pengujian, tautan, dll.)

Sebagai contoh: Halaman login.

Anda memberikan nama pengguna dan kata sandi, Anda menguji apakah itu membawa Anda ke halaman rumah atau tidak.

Pengujian Integrasi :

Ya, Anda menguji perangkat lunak yang terintegrasi saja tetapi Anda menguji di mana aliran data terjadi dan apakah ada perubahan yang terjadi dalam database.

Misalnya: Mengirim email

Anda mengirim satu email ke seseorang, ada aliran data dan juga perubahan dalam database (tabel yang dikirim nilainya 1)


Ingat - mengklik tautan dan gambar bukan pengujian integrasi. Semoga Anda mengerti mengapa, karena tidak ada perubahan dalam database hanya dengan mengklik tautan.

Semoga ini bisa membantu Anda.


3
Database adalah detail implementasi status program. Mengklik tautan juga dapat mengubah status program.
alehro

@ jsborn17 apakah pengujian integrasi berlaku untuk aplikasi front-end yang berkomunikasi dengan API, meskipun kami tidak dapat menjalankan API?
Wancieho

8

Ini adalah perbedaan penting, tetapi sayangnya Anda tidak akan pernah menemukan kesepakatan. Masalahnya adalah kebanyakan pengembang menentukan ini dari sudut pandang mereka sendiri. Ini sangat mirip dengan perdebatan tentang Pluto. (Jika itu lebih dekat ke Matahari, apakah itu akan menjadi planet?)

Pengujian unit mudah untuk didefinisikan. Ini menguji CUT ( Code Under Test ) dan tidak ada yang lain. (Yah, sesedikit mungkin.) Itu berarti ejekan, palsu, dan perlengkapan.

Di ujung lain dari spektrum ada apa yang banyak orang sebut pengujian integrasi sistem . Itu menguji sebanyak mungkin, tetapi masih mencari bug di CUT Anda sendiri.

Tapi bagaimana dengan bentangan luas antara?

  • Misalnya, bagaimana jika Anda menguji sedikit lebih banyak daripada CUT? Bagaimana jika Anda memasukkan fungsi Fibonacci, alih-alih menggunakan fixture yang telah Anda injeksi? Saya akan menyebutnya pengujian fungsional , tetapi dunia tidak setuju dengan saya.
  • Bagaimana jika Anda memasukkan time()atau rand()? Atau bagaimana jika Anda menelepon http://google.com? Saya akan menyebutnya pengujian sistem , tetapi sekali lagi, saya sendirian.

Mengapa ini penting? Karena tes sistem tidak dapat diandalkan. Mereka memang diperlukan, tetapi terkadang mereka akan gagal karena alasan di luar kendali Anda. Di sisi lain, tes fungsional harus selalu lulus, bukan gagal secara acak; jika mereka cepat, mereka mungkin juga digunakan dari awal untuk menggunakan Pengembangan Didorong-Test tanpa menulis terlalu banyak tes untuk implementasi internal Anda. Dengan kata lain, saya pikir unit-test bisa lebih banyak masalah daripada nilainya, dan saya punya teman yang baik .

Saya melakukan tes pada 3 sumbu, dengan semua nolnya di unit-testing :

  1. Pengujian fungsional: menggunakan kode nyata lebih dalam dan lebih dalam di tumpukan panggilan Anda.
  2. Integrasi pengujian: lebih tinggi dan lebih tinggi up Anda panggilan-stack; dengan kata lain, menguji CUT Anda dengan menjalankan kode yang akan menggunakannya.
  3. Pengujian sistem: semakin banyak operasi yang tidak dapat diulang (penjadwal O / S, jam, jaringan, dll. )

Sebuah tes dapat dengan mudah menjadi 3, dengan berbagai tingkatan.


tes fungsional selalu lulus? atau maksud Anda tes fungsional harus selalu lulus?
aceinthehole

1
Mereka seharusnya tidak gagal secara acak. Ketika mereka gagal, mereka harus gagal setiap saat. Misalnya, mereka tidak boleh memasukkan panggilan ke host lain. Mungkin mereka harus disebut Tes Perilaku ? Saya tidak tahu istilah terbaik. Saya hanya tahu bahwa itu adalah tes yang paling penting, dan biasanya diabaikan di celah lebar antara tes unit murni, sepenuhnya diejek dan tes integrasi sistem tingkat tinggi .
cdunn2001

"Mereka seharusnya tidak gagal secara acak." - Istilah mungkin ada bahwa mereka "deterministik"
kleaver

7

Pengujian Fungsional: Ini adalah proses pengujian di mana setiap komponen modul diuji. Misalnya: Jika halaman web berisi bidang teks, botton radio, Buttons dan Drop down dll komponen yang perlu diperiksa.

Pengujian Integrasi: Proses di mana aliran data antara 2 modul diperiksa.


4

Saya akan mengatakan bahwa keduanya terkait erat satu sama lain dan sangat sulit untuk membedakan keduanya. Dalam pandangan saya, pengujian Integrasi adalah bagian dari pengujian fungsional.

Pengujian fungsionalitas didasarkan pada persyaratan awal yang Anda terima. Anda akan menguji perilaku aplikasi seperti yang diharapkan dengan persyaratan.

Ketika datang ke pengujian integrasi, itu adalah interaksi antar modul. Jika modul A mengirim input, modul B dapat memprosesnya atau tidak.


+1 untuk "Pengujian integrasi adalah bagian dari pengujian fungsional" - pengalaman saya juga menunjukkan bahwa pendekatan pengujian seperti itu adalah yang paling bermakna jika Anda membidik hasil dengan cepat. Misalnya, dalam kode pengujian saya, saya biasanya memperlakukan sistem sebagai satu kesatuan terintegrasi - Saya mengatur basis data dalam memori dan kemudian memberi makan pengontrol MVC aplikasi saya dengan beberapa data uji dan memverifikasi respons mereka, dan juga memverifikasi data dalam basis data untuk pastikan bahwa semua validasi data telah berfungsi seperti yang diharapkan, untuk menghindari bug ketika pengontrol MVC mengembalikan respons yang benar, tetapi sebenarnya tidak diteruskan dengan benar ke lapisan basis data.
JustAMartin

4

Pengujian integrasi - Pengujian integrasi tidak lain adalah pengujian berbagai modul. Anda harus menguji hubungan antar modul. Untuk mantan Anda membuka facebook maka Anda melihat halaman login setelah memasukkan id login dan kata sandi Anda dapat melihat halaman rumah facebook maka halaman login adalah satu modul dan halaman rumah adalah modul lain. Anda harus memeriksa hanya hubungan di antara mereka berarti ketika Anda masuk maka hanya halaman rumah harus terbuka bukan kotak pesan atau apa pun. Ada 2 jenis utama pengujian integrasi pendekatan TOP-DOWN dan pendekatan BOTTOM UP.

Pengujian Fungsional - Dalam pengujian fungsional Anda hanya perlu memikirkan input dan output. Dalam hal ini Anda harus berpikir seperti pengguna yang sebenarnya. Pengujian input apa yang Anda berikan dan output apa yang Anda dapatkan adalah pengujian fungsional. Anda hanya harus mengamati output. Dalam pengujian fungsional, Anda tidak perlu menguji kode aplikasi atau perangkat lunak.


2

Dalam pengujian pengujian Fungsional hanya berfokus pada Fungsionalitas dan sub fungsionalitas aplikasi. Fungsi aplikasi harus berfungsi dengan baik atau tidak.

Dalam pengujian integrasi, tester harus memeriksa ketergantungan antara modul atau sub-modul. Contoh untuk catatan modul harus diambil dan ditampilkan dengan benar di modul lain.


2

Uji Integrasi: - Ketika pengujian unit dilakukan dan masalah diselesaikan ke komponen terkait maka semua komponen yang diperlukan perlu diintegrasikan di bawah satu sistem sehingga dapat melakukan operasi. Setelah menggabungkan komponen-komponen sistem, Untuk menguji apakah sistem berfungsi dengan baik atau tidak, pengujian semacam ini disebut Pengujian Integrasi.

Pengujian Fungsional: - Pengujian ini terutama dibagi menjadi dua kategori sebagai 1. Pengujian Fungsional 2. Pengujian Non-Fungsional ** Pengujian Fungsional: - Untuk menguji apakah perangkat lunak bekerja sesuai dengan kebutuhan pengguna atau tidak. ** Pengujian Non-Fungsional: - Untuk menguji apakah perangkat lunak memenuhi kriteria kualitas seperti Tes Stres, uji Keamanan dll.

Biasanya, Pelanggan akan memberikan persyaratan untuk Tes Fungsional saja dan untuk tes Non Fungsional, Persyaratan tidak boleh disebutkan tetapi aplikasi harus melakukan aktivitas tersebut.


2

Tes integrasi

  • Ini dapat dilihat sebagai bagaimana berbagai modul sistem bekerja bersama.
  • Kami sebagian besar mengacu pada fungsi terintegrasi dari modul yang berbeda, komponen yang agak berbeda dari sistem.
  • Agar setiap produk sistem atau perangkat lunak bekerja secara efisien, setiap komponen harus selaras satu sama lain.
  • Sebagian besar alat waktu yang kami gunakan untuk pengujian integrasi akan dipilih yang kami gunakan untuk pengujian unit.
  • Ini digunakan dalam situasi yang kompleks, ketika pengujian unit terbukti tidak cukup untuk menguji sistem.

    Pengujian Fungsional

  • Ini dapat didefinisikan sebagai pengujian fungsionalitas individu dari modul.
  • Ini mengacu pada pengujian produk perangkat lunak pada tingkat individu, untuk memeriksa fungsinya.
  • Uji kasus dikembangkan untuk memeriksa perangkat lunak untuk hasil yang diharapkan dan tidak terduga.
  • Jenis pengujian ini dilakukan lebih dari perspektif pengguna. Artinya, itu mempertimbangkan harapan pengguna untuk jenis input.
  • Ini juga disebut pengujian kotak hitam serta pengujian kotak tertutup


  • 1

    Memeriksa fungsi aplikasi umumnya dikenal sebagai pengujian fungsional, sedangkan pengujian integrasi adalah untuk memeriksa aliran data dari satu modul ke modul lainnya. Mari kita ambil contoh dari aplikasi pengiriman uang. Misalkan kita memiliki halaman di mana kita memasukkan semua kredensial dan jika kita menekan tombol transfer dan setelah itu jika kita mendapatkan kesuksesan, maka ini adalah pengujian fungsional. Tetapi dalam contoh yang sama jika kami memverifikasi jumlah transfer maka itu adalah pengujian integrasi.


    0

    Penulis banyak berbeda dalam hal ini. Saya tidak percaya ada "" interpretasi yang benar untuk ini. Itu sangat tergantung.

    Sebagai contoh: sebagian besar pengembang Rails menganggap tes unit sebagai tes model, tes fungsional sebagai tes pengontrol dan tes integrasi sebagai yang menggunakan sesuatu seperti Capybara untuk menjelajahi aplikasi dari perspektif pengguna akhir - yaitu, menavigasi halaman HTML yang dihasilkan, menggunakan DOM untuk memeriksa harapan.

    Ada juga tes penerimaan, yang pada gilirannya adalah dokumentasi "langsung" dari sistem (biasanya mereka menggunakan Gherkin untuk membuatnya mungkin menulis yang dalam bahasa alami), menggambarkan semua fitur aplikasi melalui beberapa skenario, yang pada gilirannya otomatis oleh pengembang. Mereka, IMHO, dapat juga dianggap sebagai keduanya, tes fungsional dan tes integrasi.

    Setelah Anda memahami konsep utama di balik masing-masing, Anda menjadi lebih fleksibel mengenai benar atau salah. Jadi, sekali lagi IMHO, tes fungsional juga dapat dianggap sebagai tes integrasi. Untuk tes integrasi, tergantung pada jenis integrasi yang digunakan, ini mungkin bukan tes fungsional - tetapi Anda umumnya memiliki beberapa persyaratan dalam pikiran ketika Anda menulis tes integrasi, sehingga sebagian besar waktu dapat juga dipertimbangkan sebagai tes fungsional.

    Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
    Licensed under cc by-sa 3.0 with attribution required.