SQL testing (Phần 1 - Ứng dụng của SQL trong testing)

Nguồn tham khảo:

http://vietjack.com/sql/sql_la_gi.jsp

https://vntesters.com/su-dung-kien-thuc-sql-de-cong-viec-test-de-dang-hon/

SQL là gì?

  • QL là viết tắt của Structured Query Language, là ngôn ngữ truy vấn mang tính cấu trúc.

  • Nó được thiết kế để quản lý dữ liệu trong một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS).

  • SQL là ngôn ngữ cơ sở dữ liệu, được sử dụng để tạo, xóa trong cơ sở dữ liệu, lấy các hàng và sửa đổi các hàng, …

Tất cả DBMS như MySQL, Oracle, MS Access, Sybase, Informix, Postgres và SQL Server sử dụng SQL như là ngôn ngữ cơ sở dữ liệu chuẩn.

Chức năng cơ bản của SQL

  • Với SQL, chúng ta có thể truy vấn Database theo nhiều cách khác nhau, bởi sử dụng các lệnh.

  • Với SQL, người dùng có thể truy cập dữ liệu từ RDBMS.

  • SQL cho phép người dùng miêu tả dữ liệu.

  • SQL cho phép người dùng định nghĩa dữ liệu trong một Database và thao tác nó khi cần thiết.

  • Cho phép người dùng tạo, xóa Database và bảng.

  • Cho phép người dùng tạo view, Procedure, hàm trong một Database.

  • Cho phép người dùng thiết lập quyền truy cập vào bảng, thủ tục và view.

Ứng dụng của SQL trong testing

Test một chức năng khi những chức năng liên quan chưa hoàn thiện.

Ví dụ bạn có chức năng tạo mới user và list user chính xác. Tuy nhiên chức năng list user chưa hoàn thiện nên khi tạo mới user xong bạn có thể xác nhận bằng cách kiểm tra trong database xem đã tạo bản ghi mới là lưu đúng các trường, đúng value hay chưa.

Test data.

Thường đối với các chức năng thống kê, ngoài việc check việc hiển thị dữ liệu trên màn hình cần có con số thống kê chính xác nên việc kiểm tra lại số liệu trên database là cần thiết.

Có những chức năng mà Back End chủ yếu là làm ra 1 câu SQL đưa data lên cho Front End. Tìm hiểu câu SQL đó có thể phân tích và kiểm tra xem có làm đúng logic không?

** Fake data.**

Như ví dụ lúc đầu, bạn có chức năng tạo mới và list user. Bạn cần test list user trong khi chưa code xong chức năng tạo mới. Lúc này bạn cần fake data trong database để hiển thị trên list user.

Clean data

Có rất nhiều test case đòi hỏi môi trường test trong sạch (tức là clear hết dữ liệu), thay vì ngồi xóa thủ công mất rất nhiều thời gian, thậm chí có những dữ liệu không thể xóa trên giao diện, bạn nên sử dụng câu lệnh Delete để tiết kiệm thời gian và đảm bảo dữ liệu được dọn dẹp sạch sẽ.

Dummy data

Với những tình uống sau đây, bạn nên cân nhắc tạo ra 1 bộ data chuẩn và lưu giữ nó lại:

  • Bạn đang cần 1 lượng data lớn để test performance
  • Bạn không muốn client của bạn phải vào test khi chưa có 1 data nào trong website sau mỗi lần deploy.
  • Bạn đang cần 1 bộ data gồm nhiều case, giả sử như First Name có đủ kiểu từ chữ thường cho đến tiếng Hoa, Tiếng Hàn, “[email protected]#”,… để test layout.
  • Bạn đang muốn test case: structure của Dabase cũ sẽ được migrate sang thành structure mới khi server bạn start
  • Automation test case của bạn cần phải có 1 bộ data chuẩn, vì test case được thiết kế để kiểm tra đúng sai trên đúng bộ data đó! Là cái khác, sai 1 chút thì sẽ có 1 test case fail. Với những trường hợp như trên mình đề nghị:

Bạn tạo ra 1 bộ data test với những data bạn cần. Khi tạo data, mình dùng câu lệnh INSERT, hoặc những website như https://www.mockaroo.com/ sẽ giúp bạn làm chuyện này tốt hơn. Học cách sử dụng những “data generator tool” không khó.

Nếu bạn muốn chắc ăn. Hãy tạo data trên UI, nhưng mình không khuyến khích vì nó sẽ tốn thời gian và phụ thuộc vào độ support của UI.

Sau đó, dump nó ra thành 1 file SQL. Trong SQL tools hoặc thậm chí là command line luôn có cách để làm vụ này Khi nào cần, thì dùng chức năng backup file SQL ( có cả command line) để dump data ngược trở vào, đè lên toàn bộ data cũ.

Với cách này, mỗi lần test, bạn có thể ung dung test những case bạn cần với data có sẵn. Thậm chí bạn đã biết trước kết quả sẽ như thế nào nên việc testing cũng sẽ dễ dàng

Kết luận: Nếu biết cách sử dụng thì SQL sẽ trở thành trợ thủ đắc lực của QA. Trong phần sau em sẽ hướng dẫn các câu lệnh cơ bản và hay sử dụng, có thể ứng dụng luôn trong việc testing.