Change-related Testing (Kiểm thử thay đổi)

Một phần của tài liệu TranThiKhanh_1721050490_DATN_K62 (Trang 28)

1. 3 Các kỹ thuật kiểm thử

1.5.4 Change-related Testing (Kiểm thử thay đổi)

Mục đích của kiểm thử thay đổi là để kiểm tra xem phần mềm có vận hành trơn tru sau những lần sửa lỗi hay không. Kiểm thử thay đổi gồm 2 loại chính:

Kiểm thử xác nhận (Confirm testing): Thường Confirmation Testing sẽ diễn ra sau khi lỗi trong phần mềm đã được xác nhận và được sửa. Lúc này, vai trò của Kiểm thử xác nhận là để xem lỗi đã thực sự được sửa hay chưa. Các tester sẽ tiến hành bằng cách cho một input giống hệt ban đầu và test xem output có ra được như mong muốn hay không.

Kiểm thử hồi quy (Regression testing): Mục đích của kiểm thử hồi quy để xác nhận rằng các thay đổi trong phần mềm hoặc môi trường không gây ra bất lợi ngoài mong muốn và hệ thống vẫn đáp ứng các yêu cầu. Kiểm thử hồi quy được thực hiện khi phần mềm thay đổi, do sửa lỗi hoặc do chức năng mới. Việc thực thi Regression Testing cũng nên được cân nhắc khi môi trường xung quanh phần mềm có sự thay đổi.

CHƯƠNG 2: KIỂM THỬ DATABASE VÀ CÔNG CỤ DBEAVER 2.1 . Giới thiệu về SQL, Database và Cơ sở dữ liệu Oracle

2.1.1 . SQL

SQL (viết tắt của từ Structured Query Language) nghĩa là ngôn ngữ truy vấn dữ liệu, là tập hợp các lệnh để tương tác với cơ sở dữ liệu. Dùng để lưu trữ, thao tác và truy xuất dữ liệu được lưu trữ trong một cơ sở dữ liệu quan hệ.

SQL là một chuẩn ANSI (American National Standards Institute – Viện tiêu chuẩn quốc gia Hoa Kỳ) về truy xuất các hệ thống CSDL. Các câu lệnh SQL được sử dụng để truy xuất và cập nhật dữ liệu trong một CSDL.

SQL hoạt động với hầu hết các chương trình CSDL như Oracle, MySQL,…

2.1.2 . Database

Cơ sở dữ liệu (Database), viết tắt là CSDL hoặc DB, là một tập hợp các dữ liệu có quan hệ logic với nhau. CSDL là tập hợp có cấu trúc của những dữ liệu có liên quan với nhau được lưu trữ trong máy tính. Một CSDL được thiết kế, xây dựng và lưu trữ với một mục đích xác định như phục vụ lưu trữ, truy xuất dữ liệu cho các ứng dụng hay người dùng.

Bảng CSDL: Một CSDL thường bảo gồm một hoặc nhiều bảng (table). Mỗi bảng được xác định thông qua một tên. Bảng chứa mẩu tin – dòng, là dữ liệu của bảng.

2.1.3 . Cơ sở dữ liệu Oracle

Oracle là một trong những nhà cung cấp lớn nhất trên thị trường công nghệ hiện nay. Cái tên Oracle chính là tên viết tắt từ sản phẩm chủ lực của hãng, hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) có tên chính thức là Oracle Database. Phần mềm cơ sở dữ liệu thường giữ vị trí trung tâm trong mảng IT của công ty, hỗ trợ nhiều nhiệm vụ khác nhau gồm xử lý giao dịch, business intelligence (BI), và các ứng dụng phân tích.

Hình 2.10. Oracle Database

Kiến trúc cơ sở dữ liệu của Oracle

Oracle được kiến trúc theo mô hình 3 lớp: + Lớp dữ liệu (File Systems)

+ Lớp xử lý bên dưới (Backgruond Processes) + Lớp bộ nhớ (Memory)

Hình 2.11. Kiến trúc cơ sở dữ liệu

Ngoài ra, còn một điều bạn cần quan tâm nữa, đó là Oracle Database được sử dụng cấu trúc bảng theo hàng và phần cột để nối các phần tử dữ liệu mang đến sự liên quan trong nhiều bảng khác nhau, để giúp cho người dùng không phải lưu trữ dữ liệu của mình thông qua nhiều bảng để xử lý.

2.2 . Khái quát về kiểm thử Database 2.2.1 . Kiểm thử Database

Cơ sở dữ liệu là một thành phần thiết yếu và không thể thiếu trong hầu hết các ứng dụng phần mềm hiện nay. Đặc biệt đối với các ứng dụng chuyên ngành đặc thù, các phần mềm nghiệp vụ lớn như giáo dục, y tế... Điều đó đặt ra vấn đề đối với các nhà phát triển phần mềm phải thiết kế, kiểm thử cấu trúc cơ sở dữ liệu một cách nghiêm túc và chất lượng.

Database Testing – Kiểm tra cơ sở dữ liệu là một loại kiểm thử phần mềm nhằm mục đích kiểm tra các bảng, lược đồ quan hệ của Cơ sở dữ liệu (Database). Nó cũng kiểm tra tính toàn vẹn và nhất quán của dữ liệu, kiểm tra hoạt động của Cơ sở dữ liệu trước những luồng dữ liệu đầu vào thông thường và bất thường.

Hình 2.12. Database Testing

2.2.2 . Tầm quan trọng của kiểm thử Database2.2.2.1 Tính toàn vẹn của dữ liệu 2.2.2.1 Tính toàn vẹn của dữ liệu

Điều này sẽ bao gồm các hoạt động - Tạo, Truy xuất, Cập nhật và Xóa - CRUD, cập nhật hoặc trạng thái gần đây hoặc bất kỳ giá trị nào trong dữ liệu được chia sẻ hoặc phải hiển thị trên màn hình hoặc biểu mẫu. Bằng cách thực hiện thay đổi dữ liệu trong BD chúng ta có thể kiểm tra được dữ liệu trên giao diện người dùng có được update đúng. Việc kiểm tra này sẽ cho phép kiểm tra dữ liệu ở những nơi khác nhau để kiểm tra xem chúng có giống nhau một cách nhất quán hay không.

Khi một ứng dụng đang trong giai đoạn phát triển, các hành động CRUD của người dùng cuối sẽ được giả định và kiểm thử bằng các công cụ của cơ sở dữ liệu

+ Create: Khi người dùng thực hiện “Lưu” bất kì một giao dịch mới nào + Read/Retrieve: Khi người dùng thực hiện các hành động “Tìm kiếm” hoặc “Xem” bất kì giao dịch đã lưu nào

+ Update: Khi người dùng thực hiện “Chỉnh sửa” một dữ liệu nào đó đã tồn tại

+ Delete: Khi người dùng thực hiện hoạt động “Xóa” dữ liệu khỏi hệ thống Bất kỳ hoạt động cơ sở dữ liệu nào được thực hiện bởi người dùng cuối luôn là một trong bốn thao tác trên.

Vì vậy, hãy tạo ra các trường hợp thử nghiệm DB bằng cách bao gồm việc kiểm tra dữ liệu ở tất cả những nơi mà nó xuất hiện để xem liệu nó có nhất quán hay không.

2.2.2.2 Mapping dữ liệu

Bạn cần hiểu rằng dữ liệu liên tục chuyển từ giao diện người dùng (UI) sang cơ sở dữ liệu và sau đó chuyển trở lại UI. Các khía cạnh chính cần ghi nhớ là: Bạn cần kiểm tra tất cả trường có trong giao diện người dùng và giao diện người dùng để chúng có thể ánh xạ nhất quán với bảng tương ứng trong cơ sở dữ liệu. Các thao tác từ giao diện người dùng được thực hiện trong một ứng dụng thì CRUD song song sẽ tham gia vào giao diện người dùng. Điều cần thiết là phải kiểm tra xem các hành động được thực hiện dữ liệu có được ánh xạ phù hợp hay không

Hình 2.14. Ví dụ File mapping Import các trường

2.2.2.3 Sự tuân thủ quy tắc

Điểm này hoàn toàn phụ thuộc vào độ phức tạp của dự án. Khi cơ sở dữ liệu có độ phức tạp thì các thành phần cũng sẽ phức tạp như trình kích hoạt, rang buộc quan hệ và các thủ tục được lưu trữ, v.v. Trong trường hợp như vậy, được kiểm tra cần lưu ý một số điều, đặc biệt là Truy vấn SQL có thể giúp bạn kiểm tra độ phức tạp của DB.

2.2.2.4 Xác thực các thuộc tính ACID

Chủ yếu có 4 thuộc tính mà hiệu suất của CSDL phụ thuộc vào:

Atomicity – Tính bảo toàn: có nghĩa là một hoạt động thành công hoặc thất bại. Tính chất này đảm bảo khi một hành động liên quan đến hai hay nhiều xử lý, ngay cả khi một phần của hành động không thành công – thì có nghĩa là toàn bộ hành động đã thất bại. Thông thường, đây được gọi là quy tắc “tất cả hoặc không có gì”.

Consistancy – Tính nhất quán: đảm bảo rằng một hành động không bao giờ được thông qua cơ sở dữ liệu trong trại thái dở dang, tức là một hành động luôn dẫn đến một trạng thái hợp lệ trong cơ sở dữ liệu

Isolation – Tính độc lập: đảm bảo rằng nếu có nhiều giao dịch và chúng được thực hiện tất cả cùng một lúc, kết quả trong cơ sở dữ liệu phải giống như khi nó được thực hiện lần lượt

Durability – Tính bền vững: đảm bảo rằng sau khi một giao dịch được hoàn tất, không có một yếu tố bên ngoài nào như mất điện hoặc sự cố có thể thay đổi nó.

Hình 2.15. ACID

2.2.3 . Quy trình thực hiện kiểm thử Database

Quy trình thực hiện Data Testing khá giống nhau đối với các loại ứng dụng khác nhau:

Bước 1: Chuẩn bị môi trường test Bước 2: Chạy thử nghiệm

Bước 3: Kiểm tra kết quả thực hiện Bước 4: Xác nhận kết quả

Bước 5: Thực hiện báo cáo

Một số cách thực hiện Database Testing

1.Tự viết các câu truy vấn

Để kiểm tra Cơ sở dữ liệu một cách chính xác, người kiểm thử phải có kiến thức rất tốt về các câu lệnh SQL và DML (Ngôn ngữ truy vấn cấu trúc).

Người kiểm thử cũng cần biết cấu trúc DB bên trong của hệ thống.

Người kiểm thử có thể kết hợp GUI và xác minh dữ liệu trong các bảng tương ứng để có kết luận chính xác. Nếu người kiểm thử đang sử dụng máy chủ SQL thì có thể sử dụng Trình phân tích truy vấn SQL để viết các truy vấn, thực thi chúng và truy xuất kết quả.

Nếu ứng dụng rất phức tạp thì người kiểm thử có thể khó hoặc không thể viết tất cả các truy vấn SQL được yêu cầu. Đối với các truy vấn phức tạp, tester sẽ cần trợ giúp từ các developer, những người có hiểu biết sâu hơn về cơ sở dữ liệu.

2.Quan sát dữ liệu trong mỗi bảng

Tester có thể thực hiện xác minh dữ liệu bằng cách sử dụng kết quả của hoạt động CRUD. Điều này có thể được thực hiện thủ công bằng cách sử dụng giao diện người dùng ứng dụng khi bạn biết tích hợp cơ sở dữ liệu. Nhưng đây có thể là một nhiệm vụ tẻ nhạt và cồng kềnh khi có dữ liệu khổng lồ trong các bảng cơ sở dữ liệu khác nhau.

Khi thực hiện Database Testing thủ công, tester phải có kiến thức tốt về cấu trúc bảng cơ sở dữ liệu.

3.Lấy các câu lệnh truy vấn từ Dev

Đây là một cách đơn giản để thực hiện kiểm thử dữ liệu. Tester có thể thực hiện bất kì hoạt động CRUD nào ở UI và xác minh tác động của nó bằng cách thực hiện các truy vấn SQL tương ứng từ các developer. Nó sẽ không yêu cầu người kiểm thử có kiến thức về SQL tốt cũng như kiến thức về cấu trúc cơ sở dữ liệu

2.2.4 . Các loại kiểm thử Database

Hình 2.16. Types of Database

Có 3 loại kiểm thử Database quan trọng mà chúng ta cần nằm được bao gồm:

- Structural Testing - Functional Testing - Non-Functional Testing

2.2.4.1 . Structural Testing

Kiểm thử cấu trúc của Database tập trung vào việc kiểm tra các vấn đề sau đây:

- Kiểm tra schemas: Kiểm tra schemas tập trung vào việc xác nhận sơ đồ thiết kế dữ liệu hoạt động tốt, data được ánh xạ giữa front-end và back-end là như nhau. Ngoài ra, cần thiết kiểm tra các trường hợp: table, view, column không trùng khớp lẫn nhau. Hoặc kiểm tra các kiểu dữ liệu của sơ đồ liên kết với cơ sơ dữ liệu. Nhiều khi, việc mapping định dạng của table có thể không tương thích với việc mapping định dạng trên giao diện người dùng của ứng dụng.

- Kiểm tra các table và colum trong cơ sở dữ liệu: Loại kiểm tra này tập trung vào việc xác nhận rằng giữa các trường (field) và cột của cơ sở dữ liệu ở back-end và front-end có được mapping với nhau hay không. Kiểu dữ liệu và độ dài của các cột trong cơ sở dữ liệu và khi hiển thị trên ứng dụng có tương thích với nhau...

- Kiểm tra thủ tục (Stored procedures): Kiểm tra thủ tục tập trung xác nhận các vấn đề như: xác nhận có các thủ tục nào không được sử dụng không,việc thực hiện chạy bằng tay các thủ tục có đảm bảo các trường trong bảng được update theo đúng yêu cầu của ứng dụng hay không ...

- Kiểm tra Trigger: Kiểm tra xem việc mã hóa các trigger đã đúng theo qui ước tiêu chuẩn hay chưa, các Update/Insert/Delete trigger được yêu cầu có chạy trong ứng dụng hay không, …

- Xác thực máy chủ cơ sở dữ liệu: Kiểm tra cấu hình của máy chủ cơ sở dữ liệu đã đúng với tài liệu đặc tả yêu cầu chưa, kiểm tra việc xác thực người dùng được thực hiện khi có các yêu cầu từ phía ứng dụng...

2.2.4.2 . Functional Testing

Kiểm thử chức năng database nhằm mục đích đảm bảo tất cả các hoạt động được thực hiện bởi người dùng cuối là phù hợp với yêu cầu của ứng dụng. Các vấn đề cần chú ý khi kiểm thử bao gồm:

- Đăng nhập và bảo mật thông tin user: Tập trung vào việc kiểm tra và xác nhận xem các dữ liệu nhạy cảm đã được mã hóa hay chưa, dữ liệu có được bảo vệ khi có truy nhập trái phép hay không ....

- Xác nhận tính toàn vẹn và nhất quán của dữ liệu: Xác nhận xem dữ liệu được lưu trong các bảng có chính xác và đúng yêu cầu hay không, dữ liệu đã được lưu trữ có giống với các dữ liệu được cập nhật trên giao diện người dùng hay không, dữ liệu được lưu trong các bảng có chính xác và đúng yêu cầu hay không....

2.2.4.3 . Non-Functional Testing

Kiểm thử phi chức năng trong kiểm thử cơ sở dữ liệu có thể được chia thành rất nhiều loại dựa trên yêu cầu đặc tả. Nó có thể là kiểm thử về tải (load testing), kiểm thử sự quá tải (stress testing), kiểm thử tính bảo mật (security testing), kiểm thử tính ổn định (usability testing) và kiểm thử tính tương thích (compatibility testing). Load testing và stress testing có thể được nhóm vào loại kiểm thử về hiệu năng (performance testing) để phục vụ hai mục đích khác nhau khi nói đến vai trò của kiểm thử phi chức năng.

2.2.5 . Sự khác biệt giữa kiểm thử giao diện người dùng (GUI) và databaseKiểm thử giao diện người dùng Kiểm thử CSDL/dữ liệu Kiểm thử giao diện người dùng Kiểm thử CSDL/dữ liệu

Tập trung vào giao diện phần mềm Phải có kiến thức về các yêu cầu nghiệp vụ

Phải hiểu rõ yêu cầu nghiệp vụ các chức năng

Nắm vững kiến thức về CSDL: các Table, các trường, …

Kiểu kiểm thử này thực hiện kiểm tra: textbox, selectbox, calendars và buttons, phân trang, hiển thị hình ảnh cũng như nhìn và cảm nhận tổng quan từ ứng dụng.

Kiểu kiểm thử này thực hiện kiểm tra: schema (giản đồ), các bảng cơ sở dữ liệu, các cột, các khóa và index (chỉ mục), xác thực cơ sở dữ liệu máy chủ, xác thực sự trùng lặp data.

Kiểu kiểm thử này chủ yếu được sử dụng cho tất cả các items được mở cho người dùng xem và tương tác tới nó như Forms, Presentation, Menus, Graphs và Reports, ... (được tạo ra thông qua VB, VB.NET, VC++, Các công cụ Delphi–Frontend)

Kiểu kiểm thử này chủ yếu được sử dụng cho tất cả các items mà người dùng không nhìn thấy. Chúng bao gồm các tiến trình và lưu trữ như Asembly, DBMS như Oracle, SQL server. MYSQL, ...

Bảng 2.1. So sánh Test GUI với Test Database

2.2.6 . Một số câu lệnh SQL thường sử dụng trong kiểm thử Database

Danh sách các câu và truy vấn của SQL:

SELECT: lấy dữ liệu từ một bảng CSDL

UPDATE: cập nhật/sửa đổi dữ liệu trong bảng

DELETE: xóa dữ liệu trong bảg

2.2.6.1 . SQL SELECT

SELECT là một câu lệnh cơ bản nhất trong SQL, mục đích là truy vấn/tìm kiếm trong các bảng (Table)

Cú pháp:

Hình 2.17. Cấu trúc SELECT

- Dấu * nghĩa là lấy dữ liệu của tất cả các cột nằm trong bảng - Column 1, 2 là tên column bạn cần lấy dữ liệu

- Table_name là tên bảng bạn cần lấy dữ liệu Ví dụ:Lấy số ID của nhân viên và họ tên của nhân viên:

Hình 2.18. Ví dụ SELECT

2.2.6.2 . SQL WHERE

Mệnh đề WHERE trong SQL được dùng để xác định một điều kiện trong khi lấy dữ liệu từ bảng đơn hoặc nhiều bảng kết hợp.

Mệnh đề WHERE không chỉ được sử dụng trong mệnh đề SELECT, mà nó còn được sử dụng trong các mệnh đề UPDATE, DELETE, …

Cú pháp:

Hình 2.19. Cấu trúc WHERE

Một phần của tài liệu TranThiKhanh_1721050490_DATN_K62 (Trang 28)

Tải bản đầy đủ (DOCX)

(92 trang)
w