Kiểm thử phần mềm thực hiện một chương trình hoặc ứng dụng để kiểm tra xem kết quả thực tế có khớp với kết quả mong đợi hay không và để đảm bảo rằng hệ thống phần mềm không có Lỗi. Nó có thể được thực hiện thủ công hoặc sử dụng các công cụ tự động. Kiểm thử phần mềm được phân thành hai loại:
- Functional Testing
- Non – Functional Testing
Kiểm thử chức năng xem xét mọi khía cạnh của một phần mềm để đảm bảo rằng nó hoạt động chính xác. Kiểm thử chức năng xác minh rằng hệ thống sẽ hoạt động như mong đợi khi các tính năng của nó được thực hiện bởi một số hệ thống khác hoặc trực tiếp bởi người dùng
1. Kiểm thử chức năng
Kiểm thử chức năng (Functional Testing) là một trong các quy trình đảm bảo chất lượng của lĩnh vực kiểm thử phần mềm. Đây là một loại kiểm thử hộp đen (black box testing), tức là các trường hợp nó cần xét đến sẽ dựa vào đặc tả của ứng dụng/phần mềm hoặc hệ thống đang thử nghiệm. Các chức năng sẽ được kiểm tra bằng cách nhập các giá trị đầu vào và sau đó sẽ kiểm tra, đánh giá các kết quả đầu ra mà không cần quan tâm đến các cấu trúc hay cài đặt bên trong của ứng dụng.
Thông thường kiểm thử chức năng sẽ tiến hành theo 6 bước sau:
- Bước 1: Xác định các chức năng mà phần mềm dự kiến sẽ làm (dựa vào đặc tả của phần mềm)
- Bước 2: Xác định bộ dữ liệu đầu vào dựa trên các thông số kỹ thuật của chức năng
- Bước 3: Xác định bộ dữ liệu đầu ra dựa trên các thông số kỹ thuật của chức năng
- Bước 4: Viết và thực thi các trường hợp kiểm thử (test case)
- Bước 5: So sánh kết quả đầu ra chuẩn bị ở bước 3 và kết quả thực tế
- Bước 6: Dựa vào nhu cầu của khách hàng để đánh giá xem kết quả ở bước 5 có phù hợp hay không
Phân loại:
Function Testing
- Kiểm tra hoạt động hay chức năng của phần mềm thông qua việc tương tác với hệ thống giao diện sản phẩm
- Phân tích kết quả trả về
Kiểm tra dựa trên giao diện của người dùng thông qua đó sử dụng chức năng trên hệ thống phần mềm để đánh giá xem là chức nắng có hoạt động đúng và đủ theo những yêu cầu của người dùng hay không. Sẽ so sánh kết quả thực tế so với kết quả mong muốn dựa vào đặc tả yêu cầu người dùng . Kiểm tra luồng hoạt động
User Interface Testing
- Hệ thống liên kết
- Phương thức truy cập
- Các thành phần trên giao diện
Kiểm tra bộ mặt trên hệ thống, test đầy đủ chính xác Truy cập có dễ dàng và có vấn đề xảy ra khi truy cập hay không
Data & Database Intergrity Testing
- Kiểm tra dữ liệu trả về
- Kiểm tra dữ liệu cung cấp cho các phương thức
- Kiểm tra các hoạt động của hệ thống cơ sở dữ liệu
Kiểm tra dữ liệu lưu trong hệ quản trị cơ sở dự án có đang lưu đúng và đầy đủ hay không
Business Cycle Testing
- Đảm bảo tất cả chức năng hoạt động theo yêu cầu của từng dự án, quy trình của khách hàng
Phía khách hàng có yêu cầu chung, yêu cầu riêng: cùng 1 nghiệp vụ nhưng mỗi dự án sẽ có các nghiệp vụ thêm riêng khác nhau
Access Control Testing
- Đảm bảo quá trình truy cập hệ thống theo phân quyền của người dùng ( Tính bảo mật hệ thống khi phân quyền người dùng)
Nhằm đảm bảo hệ thống phần mềm có xử lý chức năng ủy quyền vai trò của người dùng, đảm bảo tính chính xác và đầy đủ.
2. Kiểm thử phi chức năng
Kiểm thử phi chức năng (non-functional) được định nghĩa là một loại kiểm thử phần mềm để kiểm tra các khía cạnh phi chức năng (hiệu suất, khả năng sử dụng, độ tin cậy, v.v.) của ứng dụng phần mềm. Nó được thiết kế để kiểm tra sự sẵn sàng của một hệ thống theo các tham số không thuộc về chức năng và không được giải quyết bằng kiểm thử chức năng.
Một ví dụ về kiểm thử phi chức năng đó là kiểm tra xem có bao nhiêu người có thể đăng nhập đồng thời vào một hệ thống phần mềm.
Phân loại: 4 loại cơ bản của kiểm thử full chức năng
Performance Testing (Kiểm thử hiệu năng)
Kiểm thử hiệu năng (Performance Testing) được thực hiện để xác định tốc độ của một hệ thống thực hiện hay xử lý một khố lương công việc cụ thể.
5 tiêu chí đánh giá hiệu năng:
- Thời gian phản hồi (Response time) là thời gian phản hồi nhanh hay chậm, từ lúc client gửi request tới server cho đến khi client nhận được response từ server trả về.
Response time = Transfering time + Waiting time + Processing time
𝑇𝑟𝑎𝑛𝑠𝑓𝑒𝑟𝑖𝑛𝑔 𝑡𝑖𝑚𝑒 là thời gian truyền tải dữ liệu trên đường truyền.
𝑊𝑎𝑖𝑡𝑖𝑛𝑔 𝑡𝑖𝑚𝑒 là thời gian request chờ trong queue.
𝑃𝑟𝑜𝑐𝑒𝑠𝑠𝑖𝑛𝑔 𝑡𝑖𝑚𝑒 là thời gian request được xử lý thực sự. Đơn vị của respose time là một đơn vị thời gian như giây(s), phút(m), mili giây(ms)
-
Khả năng mở rộng (Scalability) : Xác định với lượng truy cập tăng vọt, khả năng đáp ứng cũng như khả năng mở rộng của hệ thống
-
Băng thông thông lượng (Throughput): Số kết nối tối đa mà hệ thống có thể đáp ứng, hay đơn giản và số người truy cập cùng thời điểm tối đa
Thông lượng hệ thống, tính bằng số giao dịch (transaction) hệ thống đáp ứng được trong một khoảng thời gian. Đơn vị tổng quát là transaction per time_period ( viết tắt là TPS). Ví dụ như transactions per second, calls per day…
-
Tính ổn định(Stability): Sự ổn định của hệ thống dưới các mức tải khác nhau
-
Speed: Tốc độ phần mềm.
Load Testing (Kiểm thử tải)
Load Testing là kiểm tra hệ thống bằng cách tăng tải liên tục và đều đặn cho hệ thống cho đến khi đạt giới hạn ngưỡng . Nó là 1 tập hợp con của test hiệu năng.
Kiểm tra tải có thể dễ dàng thực hiện bằng cách sử dụng bất kỳ công cụ tự động hóa phù hợp nào có trên thị trường. WAPT và LoadRunner là hai công cụ nổi tiếng hỗ trợ kiểm tra tải. Load Testing cũng nổi tiếng bởi các tên như: Kiểm tra khối lượng và kiểm tra độ bền.
Stress Testing (Kiểm thử về áp lực)
Stress Testing còn được gọi là kiểm tra độ mỏi ( fatigue testing), bài test này sẽ nắm bắt được tính ổn định của ứng dụng bằng cách kiêm tra nó vượt quá khả năng băng thông của nó.
Do đó, về cơ bản, Stress Testing đánh giá hành vi của 1 ứng dụng vượt quá tải tối đa và các điều kiện bình thường.
Mục đích của Stress Testing là để xác định sự thất bại của hệ thống và theo dõi cách hệ thống phục hổi. Thách thức ở đây là thiết lập một môi trường được kiểm soát trước khi khởi chạy bài test của chúng ra có thể nắm chính xác hành vi của hệ thống nhiều lần trong các tình huống khó lường nhất.
-> Khi có con số dự tải tối đa hệ thống đáp ứng được, thì Stress Testing kiểm tra xem khi mà hệ thống vượt ngưỡng tối đa đó, hệ thống sẽ ra sao và khả năng phục hồi của hệ thống như nào? thời gian phục hồi nhanh hay chậm. -> Stress Testing để phòng ngừa rủi ro, sự cố bất ngờ có thể xảy ra
So sánh Load Testing và Stress Testing
Load Testing | Stress Testing | |
---|---|---|
Khái niệm | Load Testing là kiểm tra hệ thống bằng cách tăng liên tục và đều đặn cho hệ thống đến khi đạt đến giới hạn ngưỡng | Stress Testing đánh giá hành vi của 1 ứng dụng vượt quá tải tối đa và các điều kiện bình thường |
Mục đích | Gán cho hệ thống công việc lớn nhất mà nó có thể xử lý để kiểm tra dộ bền của hệ thống và theo dõi kết quả | Để xác định sự thất bại của hệ thống phục hồi. Mục tiêu là phân tích các báo cáo sau sự cố để xác định hành vi của ứng dụng sau thất bại |
-------- | Kiểm tra khả năng chịu tải: load dữ liệu, xử lý dữ liệu, đo lượng truy cập người dùng tối đa | Đo được độ phục hồi sau sự cố: phục hồi như nào, khà năn phục hồi nhanh hay chậm,... |
Volume Testing (Kiểm thử khối lượng)
Volume Testing (Kiểm thử khối lượng) là một thử nghiệm hiệu suất phi chức năng, nơi mà phần mềm phải chịu một lượng lớn dữ liệu. Nó cũng được gọi là flood testing khố lượng thử nghiệm được thực hiện để phân tích hiệu suất của hệ thống bằng cách tăng khối lượng dữ liệu trong CSDL
-> Phụ thuộc 1 lượng lớn dữ liệu khi hệ thống đổ ra
-> Sử dụng thao tác chức năng trên hệ thống, xem chức năng đó với lượng dữ liệu lớn và dữ liệu ít hoạt động như nào? có vấn đề hay bắt thường gì không? Nó sẽ căn cứ và đo khả năng xử lý dữ liệu chức năng dựa trên lượng lớn dữ liệu đổ vào