Làm thế nào để thực hiện kiểm tra BACKEND
Thông thường, một phần mềm ứng dụng khi đến người sử dụng cuối, họ chỉ nhìn thấy phần giao diện tương tác với họ mà thôi. Người sử dụng thao tác phần mềm, kết quả sẽ được trả về đúng, họ không quan tâm tới việc làm thế nào để có được kết quả đó. Vậy, với một người kiểm thử phần mềm, làm thế nào để ...
Thông thường, một phần mềm ứng dụng khi đến người sử dụng cuối, họ chỉ nhìn thấy phần giao diện tương tác với họ mà thôi. Người sử dụng thao tác phần mềm, kết quả sẽ được trả về đúng, họ không quan tâm tới việc làm thế nào để có được kết quả đó. Vậy, với một người kiểm thử phần mềm, làm thế nào để chúng ta có thể kiểm tra được phần mềm, ứng dụng của ta xử lý như thế nào để có được kết quả đúng?
Hoạt động của ứng dụng phần mềm rất phức tạp. Nó phức tạp hơn so với những gì ta nhìn thấy. Hầu hết việc thử nghiệm đều cố gắng đi qua GUI (giao diện) . Điều này chính là việc kiểm tra phần mềm đó có phù hợp để đưa tới người dùng cuối hay không. Người dùng cuối sử dụng GUI và chúng tôi cũng vậy. Tuy nhiên, phần mềm cũng có rất nhiều phạm vi hoạt động khác không được nhìn thấy trực tiếp hoặc có sẵn cho người dùng để tương tác trực tiếp. Những phạm vi hoạt động này rất quan trọng và chúng cần phải trải qua quá trình kiểm tra kỹ lưỡng. Sự kết hợp hoàn hảo hoạt động của các yếu tố này làm cho một ứng dụng phần mềm được hình thành đầy đủ hơn. Chúng ta có thể kết hợp mọi thứ mà chúng ta không trực tiếp nhìn thấy gọi là 'Back-end'.
- Cơ sở dữ liệu (Database)
- API (API)
- Máy chủ (Servers) Tùy thuộc vào tính chất của ứng dụng, back-end có thể bao gồm các cấu hình mạng khác nhau, các giao thức truyền thông,... Nhưng thường thì nó gồm có ba yếu tố trên. Bây giờ, chúng ta tìm hiểu xem từng thành phần này cần kiểm tra những gì và làm thế nào.
2.1. Kiểm tra Cơ sở dữ liệu (Database testing)
Thông thường nhất, khi sử dụng thuật ngữ 'Back End Testing', nó có nghĩa là kiểm tra cơ sở dữ liệu. Cơ sở dữ liệu là một phần quan trọng của bất kỳ ứng dụng nào. Khi GUI và DB tương tác với nhau thì ứng dụng hoạt động tốt. Nếu có vấn đề, ta sẽ gặp các kết quả không phù hợp, các mối đe dọa an ninh và hiệu suất ứng dụng bị giảm sút
Cơ sở dữ liệu thường được xác nhận cho:
- Tính chất ACID (atomicity, consistency, isolation, và durability) ACID là từ viết tắt của bốn từ tiếng Anh atomicity, consistency, isolation, và durability. Chúng được coi là bốn thuộc tính quan trọng của một hệ quản trị cơ sở dữ liệu khi xử lý bất kỳ giao dịch nào. Nếu thiếu một trong những thuộc tính này thì tính toàn vẹn của cơ sở dữ liệu khó có thể được đảm bảo. Trong một hệ quản trị cơ sở dư liệu, một giao dịch là một đơn vị lô gích thao tác trên dữ liệu, có thể bao gồm nhiều thao tác Tính nguyên tố (Atomicity). Một giao dịch có nhiều thao tác khác biệt thì hoặc là toàn bộ các thao tác hoặc là không một thao tác nào được hoàn thành.
- Tính nhất quán (Consistency). Một giao dịch hoặc là sẽ tạo ra một trạng thái mới và hợp lệ cho dữ liệu, hoặc trong trường hợp có lỗi sẽ chuyển toàn bộ dữ liệu về trạng thái trước khi thực thi giao dịch.'
- Tính độc lập (Isolation). Một giao dịch đang thực thi và chưa được xác nhận phải bảo đảm tách biệt khỏi các giao dịch khác.
- Tính bền vững (Durability). Dữ liệu được xác nhận sẽ được hệ thống lưu lại sao cho ngay cả trong trường hợp hỏng hóc hoặc có lỗi hệ thống, dữ liệu vẫn đảm bảo trong trạng thái chuẩn xác.
- Hoạt động CRUD (Create, Read, Update, Delete)
- Hoạt động Tạo mới (Create): Có thể thêm mới
- Hoạt động Đọc (Read): Đọc được dễ dàng
- Hoạt động Sửa đổi (Update): Có thể sửa đổi cấu trúc, nội dung
- Hoạt động Xoá (Delete): Có thể xoá
- Giản đồ (Schema): Việc này dễ dàng cho việc quản lý các Cơ sở dữ liệu
- Tính Di chú (Migration): DB có có thể chạy trên các máy khác nhau hay các hệ điều hành khác nhau.
- Tính Phù hợp với quy tắc nghiệp vụ
- Tính Bảo mật
- Hiệu suất sử dụng Việc nâng cao việc trích xuất, chuyển tiếp, tải ETL ( Extract, Transform, Load) và bảo trì hệ thống kho dữ liệu sẽ cần kiểm tra song song. Có nhiều công cụ thường được sử dụng trong các thử nghiệm để tương tác và xác nhận hành vi DB thông qua các truy vấn. Chúng ta tìm hiểu một vài công cụ (Tools) để kiểm tra Cơ sở dữ liệu:
a. Các công cụ Truy vấn cơ sở đữ liệu qua giao diện
Có rất nhiều công cụ, tuy nhiên ở giới hạn bài viết này, tôi chỉ đề cập đến một số tools được nhiều người lựa chọn nhất
- TOAD: Nó hỗ trợ nhiều cơ sở dữ liệu (DBs) và nền tảng. TOAD có cả phiên bản miễn phí và thương mại. Thêm thông tin, tài nguyên, và phiên bản miễn phí được tìm thấy tại toadworld http://www.toadworld.com/
- PHpMyAdmin: Đây là một công cụ mã nguồn mở tuyệt vời cho phép bạn chạy các truy vấn và tương tác với DB của bạn thông qua Giao diện người dùng. Nếu bạn đang tìm kiếm một môi trường kết nối đến cơ sở dữ liệu MySQL và MariaDB thì PHpMyAdmin là một công cụ rất hữu ích. Tham khảo thêm thông tin tại link sau https://www.phpmyadmin.net/
- HeidiSQL: Công cụ này rất giống với pHpMyAdmin. Là công cụ mã nguồn mở, Nó kết nối với MySQL, cơ sở dữ liệu Microsoft SQL và PostgreSQL. Tìm thêm thông tin tại : https://www.heidisql.com/ Hình ảnh trên ứng dụng như dưới đây:
b. Các công cụ Load DB và Đo hiệu suất
- HammerDB: Đây là một công cụ mã nguồn mở mà nhiều chuyên gia DB đánh gia. Nó hỗ trợ nhiều cơ sở dữ liệu. Từ ảnh chụp màn hình cho đến hình ảnh của nó, nó là một công cụ đáng giá để kiểm thử. Chi tiết công cụ xem tại link: http://www.hammerdb.com/
- SLOB: Công cụ Benchmark Oracle Silly Little giúp bạn có thời gian và đánh giá kiểu vào/ ra (I/O) của các giao dịch DB. Nó có thể giúp bạn hiểu CPU, bộ nhớ và thời gian xử lý cho hàng loạt các giao dịch trên hệ thống của bạn. Chi tiết công cụ xem thêm tại link: https://kevinclosson.net/
- Swingbench: Đây là một công cụ rất giống với HammerDB. Nó làm việc rất hiệu quả trên Oracle DB. Để hiểu công cụ này và các tính năng của nó ta tìm hiểu thêm tại link: http://www.dominicgiles.com/
2.2. Thử nghiệm API
API nói đúng chứ không phải là back-end nhưng vì chúng ta đang nhóm những hoạt động không thể nhìn thấy được với người dùng cuối như là back-end API viết tắt của Giao diện Chương trình Ứng dụng (Application Program Interface), điều này về cơ bản là nơi chứa tất cả logic lập trình. Nó không có UI là một trong những thách thức lớn nhất khi thử nghiệm. Mặt khác, vì các API nói chung được tạo ra trước khi UI của ứng dụng xuất hiện, Do đó việc thử nghiệm API thường có nghĩa là thử nghiệm sớm.
- Công cụ phổ biến nhất được sử dụng để thử nghiệm API là SOAPUI. (SoapUI là một dịch vụ web ứng dụng thử nghiệm mã nguồn mở, với tính năng dễ sử dụng, soap ui cho phép bạn kiểm tra dễ dàng và nhanh chóng cho phép thực hiện các thử nghiệm chức năng trên web)
Có một vài thử nghiệm như sau:
1. Setting
- Sau khi quá trình cài đặt hoàn tất, bạn có thể vào các thư mục tương ứng và đảm bảo rằng các tệp tin hoặc thành phần đã được chuyển đến các thư mục đích theo cách chúng được yêu cầu. Nếu bạn đang tự hỏi 'làm thế nào để tôi biết được mọi thứ cần phải làm như thế nào?' Yêu cầu đội phát triển hoặc đội triển khai xác nhận lại điều này cho bạn.
- Bước này có thể không bắt buộc, nhưng một số công ty sử dụng triển khai thủ công. Trong trường hợp đó, nó có thể trở thành một bước smoke test/ sanity test (Phân biệt smoke test và sanity test)
2. Logs
- Logs được duy trì cho mỗi trạng thái của giao dịch trên máy chủ. Điều này sẽ cho chúng ta cái nhìn sâu sắc về việc xử lý cuối cùng có kết thúc thành công hay không. Đôi khi giao diện người dùng nhập vào dữ liệu hợp lệ và cơ sở dữ liệu có thể cập nhật đúng. Điều gì sẽ xảy ra nếu thao tác này trả lại một lỗi ngoại lệ (exception), gây rò rỉ bộ nhớ, hoặc gây ra một số sự cố? Khi đó tra Logs trên máy chủ sẽ cung cấp thông tin này cho chúng ta thông tin cần thiêt
- Logs không phải là một quy tắc, nhưng nói chung, hầu hết các máy server hệ thống dựa trên UNIX. Vì vậy, để có thể làm việc thông qua chúng một cách dễ dàng, bạn sẽ cần một cách để kết nối với máy chủ của bạn.
PuTTy là sự lựa chọn phổ biến nhất để kết nối với máy chủ của bạn. Putty là một sản phẩm mã nguồn mở và không cần cài đặt. Tất cả bạn phải làm là tải về và sử dụng nó. Tải tại link: http://www.putty.org/
- Các hệ thống UNIX không có giao diện người dùng và đó là điều làm cho chúng phù hợp để trở thành các máy chủ App và DB. Chúng an toàn, trừu tượng, nhanh hơn và rẻ hơn. Do sự vắng mặt của GUI, chúng ta sẽ phải sử dụng các lệnh để giao tiếp với máy chủ. Tất cả chúng ta đều có nguồn tài nguyên hướng đến các lệnh UNIX. Sử dụng freeengineer sẽ rất tiện lợi. Tham khảo chi tiết tại link: http://freeengineer.org/learnUNIXin10minutes.html
2.3. Máy chủ (Server)
Máy chủ (Server) được kết nối với một mạng máy tính hoặc internet, có IP tĩnh, có năng lực xử lý cao và trên đó lưu trữ cơ sở dữ liệu, phầm mềm của dự án.... để phục vụ cho các máy tính khác truy cập để yêu cầu cung cấp các dịch vụ và tài nguyên. Do đó vấn đề hiệu suất và bảo mật của Server là vấn đề rất quan trọng. Cũng giống như bất kỳ phần nào khác của phần mềm:
- Máy chủ phải luôn được an toàn
- Luôn có tính tương thích với nhiều hệ điều hành Có rất nhiều công cụ có sẵn để kiểm tra điều này. Tôi sẽ giới thiệu trong các bài viết sau.
Bài viết này chỉ mang tính chất tham khảo, nó sẽ không giúp bạn hiểu được toàn bộ việc kiểm tra Backend phải làm những gì. Tuy nhiên, nó sẽ chỉ cho bạn các nguồn lực và tài liệu tham khảo sẽ giúp bạn có thể làm được nó.