Cara menemukan batasan pada klien dan server

Bagaimana cara seorang penguji biasanya mencari batasan di lapangan? Jika ada batasan dalam TK, maka itu menguji mereka. Dan jika tidak? Semuanya jelas dengan batas bawah - ini adalah bidang kosong. Bagaimana cara menemukan yang teratas? Masukkan garis besar dan lihat berapa banyak karakter yang disimpan. Dan itu saja ...



Tetapi jika kita memiliki aplikasi client-server , maka pengembang dapat menetapkan batas di setiap tautan!







Dan tester harus memeriksa semuanya. Mengapa? Karena ketika kita menduplikasi nilai yang sama beberapa kali di tempat yang berbeda, ada kemungkinan besar salah. Pada saat yang sama, batas pada klien sangat mudah untuk dihapus. Apa yang terjadi jika pengguna berkeliling perbatasan pada klien? Apakah dia akan menghancurkan situs kami dengan garis besar?



Dalam artikel ini, saya akan menunjukkan kepada Anda bagaimana menemukan perbatasan untuk bidang dalam formulir web. Ambil contoh formulir edit penggunasistem Pengguna gratis .



Kandungan





1. Berbatasan dengan klien



Panjang maksimal



Batasan pada panjang garis pada klien ditentukan dalam parameter panjang bidang maksimum.



Untuk menemukannya, Anda perlu:



  1. Buka panel pengembang - tekan f12 .
  2. Tekan tombol paling kiri dan gerakkan kursor ke atas elemen pada halaman.


Voila! Untuk bidang "name1" kami memiliki batas 10 karakter.







Lihat juga:

Apa yang perlu diketahui oleh penguji tentang panel pengembang



Memeriksa batas - mencoba memasukkan lebih dari 10 karakter. Tapi tepatnya 10 diperkenalkan, itu tidak memberi lagi. Anda mengetik di keyboard, dan sistem sama sekali tidak merespons:







Ini perbatasan! Perbatasan ada di klien, kami menemukannya, hore.



Tetapi ini tidak berarti bahwa Anda perlu tenang untuk ini. Perbatasan pada klien dapat dihapus dengan sangat mudah, jadi penting untuk memeriksa server juga. Dan kami, sebagai penguji, harus memeriksa apakah ada perlindungan di server.



Karena itu, kami menghapus perbatasan. Untuk melakukan ini, tepat di model DOM (ini adalah struktur halaman kami, yang kami cari dengan inspektur), kami memperbaiki garis dengan parameter. Ya, itu sedang berubah. Klik dua kali pada parameter maxlength dan ubah nilainya. Voila! Banyak karakter sekarang dapat dimasukkan daripada sebelumnya!







Harap dicatat - karakter dapat dimasukkan segera, tanpa menyegarkan halaman. Selain itu, jika Anda me-refresh halaman, perubahan Anda akan hilang. Lagi pula, ketika Anda me-refresh halaman, kode HTML diminta dari server, dan di sana perubahan Anda tidak ada. Jadi bermain-main sebanyak yang Anda inginkan, jangan takut untuk merusak sesuatu =)



Pada prinsipnya, untuk memeriksa perbatasan di server, Anda dapat mengubah nilai dari 10 menjadi 1000 terlebih dahulu. Tetapi jika Anda ingin mencari dengan tepat untuk batas teknologi, maka lebih baik memilih nilai yang lebih besar. Atau hapus parameternya sama sekali. Pilih dan Hapus!







Ketika Anda menemukan item di inspektur, Anda dapat melihat angka selain panjang maksimal . Misalnya, "data-max" atau "data-jsmax" , atau yang lainnya. Bisakah mereka dianggap batas? Hanya jika Anda dapat membaca kode dan menemukan artinya di dalamnya.



Pengembang dapat menulis HTML sesuka hatinya. Dia dapat menentukan atribut apa pun untuk tag, dengan nama apa pun. Sama sekali bukan fakta bahwa ini akan menjadi semacam perbatasan.



Ini bisa menjadi elemen "warisan", yaitu tidak diproses atau digunakan sama sekali. Hanya lupa hapus. Atau dapat digunakan untuk CSS - "jika kita memiliki nilai ini dan itu, maka kita menulis dalam warna putih, jika itu, maka hitam."



Dan di sini adalah maxlengthMerupakan atribut standar. Dan jika diatur, maka itu membatasi pengguna - pengguna tidak dapat memasukkan lebih banyak karakter ke dalam kolom input dari yang ditentukan dalam panjang maksimum . Jadi ini perbatasannya.



Dan yang lainnya - perlu untuk memeriksa apakah itu membatasi kita entah bagaimana, atau tidak. Bagaimana cara mengeceknya? Nyalakan konsol!







Kesalahan di konsol JS



Saat menguji web, pastikan untuk mengaktifkan konsol:

F12 β†’ Konsol




Dan awasi dia dari sudut mataku. Jika tidak, Anda dapat melewati kesalahan!



Kebetulan sistem tidak menunjukkan masalah dengan cara apa pun - tidak ada perubahan pada antarmuka itu sendiri. Memasukkan data ke dalam bidang? Tidak ada yang disorot dalam warna merah, tetapi kesalahan muncul di konsol. Apakah kita menekan tombol? Laporan sedang dimuat, semuanya tampak baik-baik saja, tetapi ada kesalahan di konsol.



Jika kesalahan muncul di konsol, ini tidak normal. Dan ini harus ditangani. Kesalahan mungkin memiliki efek yang tertunda, atau mungkin Anda hanya tidak melihat manifestasinya. Misalnya, saat memuat laporan, satu sel dihitung secara tidak benar karena tidak dapat memuat data, yang saya tulis ke konsol. Pada saat yang sama, laporan dimuat dan sepertinya ada data di dalamnya, sepertinya baik-baik saja. Namun ada kesalahan.



Jadi, buka konsol dan mulai mengisi kolom pengguna. Misalnya, kami mengarahkan data ke bidang "hamster". Kami menghapus batas pada klien (panjang maksimal) dan mencetak. Dan kemudian kami perhatikan bahwa ada kesalahan yang muncul di konsol!







Ternyata pengembang telah menempatkan perlindungan tambahan di lapangan. Selain maxlength, saya menulis batasan dalam kode. Mungkin pesan ini seharusnya ditampilkan di antarmuka sehingga pengguna dapat melihat ada sesuatu yang salah, tetapi pengembang mengacaukan dan mengeluarkannya ke konsol.



Dalam kasus Pengguna, pengembang tidak membingungkan apa pun, ia harus menampilkan pesan seperti itu di konsol sesuai dengan TK =)) Karena tugas kami hanya untuk menunjukkan situasi ketika semuanya baik-baik saja di antarmuka, tetapi ada kesalahan di konsol.



Tapi di mana perbatasannya? Dilihat oleh pesan kesalahan "Maksimum - 10". Jadi batasnya adalah 10 karakter. Iya? Bukan ara! Perbatasan adalah ketika kita memiliki satu perilaku sistem sebelum itu (tidak ada kesalahan), dan setelah yang lain.







Ingat, pesan kesalahan juga kode. Yang juga perlu diuji. Pengembang dapat membuat kesalahan dan menulis pesan dengan salah. Jadi mari kita periksa di mana respons sistem terhadap input akan berubah.



Kami mulai mengetik karakter dengan lambat, menonton konsol:



  • 10 - tidak ada kesalahan
  • 11 - tidak ada kesalahan
  • 12 adalah kesalahan!


Ya, itu berarti bahwa perbatasan menurut JS bukan 10, tetapi 11 karakter! Sampai 11, semuanya baik-baik saja, dan setelah itu kesalahan mulai berdatangan. Dan pesan kesalahannya ternyata bohong. Jadi "percaya tapi verifikasi" =)



Ini juga merupakan batas pada klien. Jadi bidang hamster memiliki dua batas pada klien:



  1. maxlength = 10 karakter
  2. js = 11 karakter


Tetapi di bidang "nama 1" satu perbatasan pada klien: maxlength = 10 karakter. Tidak ada kesalahan di konsol saat memasukkan karakter.







Perubahan perilaku



Saya ingin menekankan sekali lagi bahwa perbatasan tidak hanya ketika kesalahan dituangkan ke konsol. Ini juga bisa menjadi perubahan perilaku sistem yang terlihat oleh pengguna.



Sebagai contoh, seorang analis memutuskan bahwa panjang nama minimal 3 huruf. Oleh karena itu, ketika pengguna menempatkan kursor pada bidang dengan nama, bingkai merah muncul di sekitarnya dan tulisan "Nama tidak boleh lebih pendek dari 3 huruf" muncul di bagian bawah. Saya memasukkan 1-2 surat - tidak ada yang berubah. Dimasukkan 3 - bingkai dengan tanda tangan menghilang. Atau bingkai telah berubah dari merah menjadi hijau.





Tidak ada batasan seperti itu di Pengguna, jadi saya hanya mengambil gambar dari Internet =)



Ini adalah batas bawah yang ditetapkan menurut TOR. Dan dibuat pada klien. Demikian pula, Anda dapat mengatur batas atas - apakah Anda memasukkan lebih dari 10 karakter? Batas merah muncul di sekitar bidang. Jadi ini juga perbatasan.







Batas total pada klien



Batas pada klien adalah nilai atribut "maxlength" di bidang input karakter. Anda tidak dapat memasukkan lebih dari nilai ini, sistem tidak akan membiarkan Anda melakukan ini.





Keterbatasan ini dapat dengan mudah dihapus melalui panel pengembang - Cara menghapus maxlength dari semua bidang formulir .



Ini mungkin bukan satu-satunya batas. Pengembang juga dapat menulis perbatasan ke dalam kode. Untuk menemukannya, kami mengikuti sistem. Jika dia mengubah perilakunya, kami telah menemukan perbatasan:



  • Anda memasukkan simbol dan bidang memiliki perbatasan merah dan tanda tangan "terlalu panjang" - perbatasan! Selain "maxlength", pengembang menambahkan cek
  • Anda memasukkan karakter dan kesalahan muncul di konsol - juga perbatasan!






2. Perbatasan server



Perbatasan server adalah berapa banyak karakter yang dapat kita simpan di sistem. Secara teori, itu harus bertepatan dengan batas pada klien =) Tapi apa pun bisa terjadi. Ketika kita perlu menulis satu nilai di tempat yang berbeda, selalu ada peluang untuk membuat kesalahan.



Karena perbatasan pada klien mudah untuk dilalui, kita pasti perlu melakukan ini selama pengujian. Dan lihat apakah ada batasan di server. Dan jika demikian, yang mana.



Mari kita hapus batasan maxlength = 10 di Users dari bidang "name1", masukkan string panjang di sana dan cobalah untuk menyimpan. Saat menyimpan, sistem memberikan kesalahan:







Ini adalah batas pada server. Klien mengirim permintaan ke server, yang berhasil dan mengembalikan umpan balik.



Masih memahami di mana perbatasan itu. Tentu saja, pesan kesalahan membantu kami dengan ini: "aktual: 37, maksimum: 9"... Secara teori, server memiliki batas 9 karakter. Tetapi kita sudah tahu bahwa ini harus diperiksa!



Kami memeriksa:



  • Masukkan 9 karakter, simpan - simpan!
  • Masukkan 10 karakter - disimpan.
  • Masukkan 11 karakter - galat saat menyimpan.


Ini berarti batas sebenarnya adalah 10 karakter di server. Cocok dengan perbatasan pada klien, itu bagus.



Sekarang mari kita periksa bidang hamster.







Aha, di sini perbatasannya berbeda. Dalam pesan 19, tetapi kita ingat bahwa itu bohong. Kami memeriksa - batasnya adalah 20 karakter. Dan pada klien itu 10, dalam maxlength! Jadi batasannya berbeda.



Secara umum, ini adalah alasan untuk mengirim bug, karena batas harus sesuai. Benar, itu bisa ditutup sebagai "tidak akan diperbaiki" , well, disimpan sedikit lagi, dan oke. Jauh lebih buruk ketika pengembang salah arah sebaliknya:



  • Server - 10 karakter
  • Klien - 20 karakter


Akibatnya, Anda dapat memasukkan 20 karakter pada klien, tetapi saat menyimpan, kami mendapatkan kesalahan. Tidak baik!



Setelah memeriksa batas atas dalam batas "memadai", ada baiknya mencari batas teknologi. Kami menghapus batasan pada klien, memperkenalkan beberapa juta karakter. Ini sangat mudah untuk dilakukan. Kami mengambil alat apa pun dari artikel " Cara menghasilkan string besar, alat ", gantikan, simpan.



Jika sistem memberikan kesalahan yang sama persis seperti sebelumnya, maka kira-kira. Ini berarti tidak ada batas teknologi. Itu bagus. Yang utama adalah kami mencoba mencari =)



Mengapa kami perlu melakukan ini? Karena sistem tidak hanya dapat menyimpan data, tetapi entah bagaimana pra-prosesnya. Periksa dengan kondisi, atau sesuatu yang lain. Dan kemudian sistem akan menguasai garis kecil, tetapi tidak lagi garis besar.



Lihat juga:

Perbatasan teknologi dalam kiat badan hukum - jika Anda memasukkan 1000 karakter, tidak ada yang akan terjadi, tetapi jika "perang dan perdamaian" ...







3. Perbatasan dalam database



Batas dalam basis data adalah berapa banyak karakter yang masuk ke dalam basis data. Saat membuat basis, kami menunjukkan dimensi masing-masing bidang. Berikut ini contoh dari orang-orang :



  • nama keluarga - VARCHAR (255)
  • nama - VARCHAR (100)
  • kota - VARCHAR (20)


Ini berarti bahwa di bidang "nama belakang" kita dapat menyimpan 255 karakter, dalam nama 100, dan di kota - 20. Ketika mencoba untuk mendorong string yang lebih besar di sana, sistem akan menghasilkan kesalahan dari seri "ORA-06502: PL / SQL: kesalahan angka atau nilai msgstr "buffer string karakter terlalu kecil" .



Penting untuk dipahami bahwa kita akan melihat batas basis data hanya jika tidak ada batas pada server. Jalur pencarian batas tidak berubah:



  1. Menghapus batas pada klien
  2. Mengisi garis besar
  3. Mencoba menyelamatkan






Jadi, jika pengembang telah menetapkan batas pada server, maka kita akan melihat kesalahan yang ditangani - ditampilkan dengan indah (atau tidak begitu), dengan teks yang cukup bermakna. Karena pengembang menulisnya dan ini tentang aplikasi kita.







Dan jika tidak ada perbatasan di server, maka kita akan melihat kesalahan yang tidak tertangani. Ini bisa berupa kesalahan seperti "ORA-06502: ..", atau streamtrace kode - sekelompok karakter yang tidak dapat dipahami oleh pengguna biasa.







Tentu saja, mungkin ada situasi lain - ketika perbatasan lebih besar di server daripada di database:



  • Server - 20 karakter
  • DB - 10 karakter


Dan kemudian itu menjadi situasi yang lucu. Ya, kami telah melindungi diri dari penyisipan "perang dan perdamaian". Memasukkan 25 karakter atau 25 juta karakter - Anda mendapatkan kesalahan yang berarti. Tetapi jika Anda memasukkan 11 karakter, maka oh! Jejak tumpukan besar dan menakutkan di layar penuh.



Karena itu, saat menguji kotak hitam, jangan mencoba untuk menemukan BANYAK karakter sekaligus. Cobalah makna yang bermakna terlebih dahulu. Dan jika Anda menghapus batasan pada klien, ada baiknya mencoba nilai batas untuk itu. Apakah maxlength = 10? Coba 11 karakter. Dan kemudian 55 juta, dan kemudian 55 juta.







Total: daftar periksa untuk menemukan batas



Dalam aplikasi client-server, batas dapat di setiap tautan. Dan idealnya mereka harus cocok. Tapi kita harus memeriksanya!







Mungkin ada lebih banyak batasan. Pada klien, pengembang dapat memaksakan beberapa batasan sekaligus: baik maxlength dan perubahan perilaku saat melewati garis tertentu (kode js)



Mungkin ada batas lebih sedikit. Dari seri "biarkan pengguna tidak memasuki kebodohan", dan sebagai hasilnya, tidak ada batasan pada klien dan server. Namun dimensi bidang dalam database tetap ada.



Cara menemukan batas:



1. Periksa apakah bidang memiliki panjang maksimal - ini adalah batas paling jelas pada klien.



2. Hapus batasan ini .



3. Aktifkan konsol JS (di mana kita bisa pergi tanpa itu?).



4. Mulai untuk mengarahkan karakter, sekitar 50-100 ke setiap bidang. Mengikuti:



  • β€” ?
  • β€” ?


Jika perilaku sistem berubah, atau kesalahan muncul di konsol, ini juga merupakan batas pada klien. Tetapi yang lainnya adalah dalam kode js.



5. Cobalah untuk menyimpan 50-100 karakter ini. Ini adalah bagaimana kami mencari perbatasan di server dan / atau di database.



Jika sistem menghasilkan kesalahan yang berarti seperti "Field terlalu panjang" - ini adalah kesalahan di server. Jika kesalahan tidak ditangani, kemungkinan besar tidak ada perbatasan di server, dan Anda menemukan perbatasan di database.



Anda dapat menemukan nilai pasti perbatasan menggunakan metode pembagian dua bagian. Baik, atau menggunakan log / teks dari pesan kesalahan.



6. Kenalkan 100 juta simbol ( alat ) dan cobalah untuk menyimpannya untuk menemukan perbatasan teknologi.



Dalam perjalanan artikel, kami memeriksa bidang "name1" dan "hamster" di sistem Pengguna menggunakan daftar periksa ini. Hasil:



Bidang Name1:



  • maxlength - 10 karakter
  • server - 10 karakter


Bidang hamster:



  • maxlength - 10 karakter
  • js - 11 karakter
  • server - 20 karakter


Semuanya baik untuk nama, batas-batasnya bertepatan. Tetapi ketika memeriksa "hamster", kami menemukan 2 masalah sekaligus - perbedaan antara batas klien-server (10 dan 20), serta kesalahan di konsol. Anda dapat memposting bug!



All Articles