Tìm hiểu về các loại test type (phần 1)
Bài đăng này đã không được cập nhật trong 3 năm
Test type và test level là hai khái niệm mà rất nhiều người hay nhầm lẫn và đây cũng là hai phần được hỏi khá nhiều trong đề thi ISTQB. Bài viết lần trước tôi đã nói về test level còn lần này xin phép được viết về test type. Nội dung bài viết này được dịch từ Chương 2. Testing throughout the software life cycle trong cuốn Foundations Of Software testing (ISTQB certification) của các tác giả Rex Black, Erik Van Veenendaal, Dorothy Graham hi vọng sẽ giúp mọi người hiểu thêm về các loại Test type cũng như áp dụng một cách tốt hơn trong công việc của mình.
Test type được giới thiệu như là một sự định nghĩa rõ ràng về đối tượng test. Ta cần nghĩ về các loại test type khác nhau bởi vì nếu chỉ dựa trên test level thì sẽ không thể kiểm tra được đầy đủ các tính năng của component hay system. Tập chung vào kiểm tra những đối tượng cụ thể sau đó chọn một loại test type thích hợp giúp kiểm thử một đối tượng trở nên dễ dàng hơn.
Một loại test type chỉ tập chung vào một mục tiêu test cụ thể, có thể là chức năng được thực thi bởi một component hay system, các thuộc tính non-function như là reliability hay usability, kiến trúc, kết cấu của component hay system hoặc những thay đổi liên quan như confirm xem lỗi đã được check chưa, hay tìm kiếm những thay đổi không mong muốn (regression testing). Việc kiểm thử sẽ được tổ chức theo những cách khác nhau phụ thuộc vào đối tượng test
Có 4 loại test type đó là:
- Testing of function (functional testing)
- Testing of software product characteristics
- Testing of software structure/architecture (structuraltesting)
- Testing related to changes (confirmation and regressiontesting)
1. Testing of function (functional testing)
Khái niệm "function" của của một system hay một component nghĩa là "những gì mà nó thực hiện", nó được mô tả trong requirement specification, function specification hoặc trong use case. Có thể có một vài chức năng được thêm vào mà không hề có bất kì tài liệu mô tả nào, mặc dù trường hợp này cũng khá khó khăn cho việc kiềm thử. Function testing được dựa trên các function, các tài liệu đặc tả hoặc sự hiểu biết của tester. Function testing có thể thực hiện ở tất cả các test level (ví dụ như kiểm tra một component có thể dự trên tài liệu đặc tả của component đó).
Function testing xem xét tài liệu đặc tả và nó thường được coi như là kiểm thử hộp đen. Tuy nhiên điều này không hoàn toàn chính xác vì kiểm thử hộp đen còn bao gồm cả non-function.
Function testing được dựa trên tiêu chuẩn ISO 9126, nó tập chung vào các tiêu chí sau: suitability, interoperability, security, accuracy và compliance (tham khảo: https://en.wikipedia.org/wiki/ISO/IEC_9126). Ví dụ như security testing sẽ điều tra những chức năng liên quan đến các mối nguy hiểm liên quan đến virus, các hình thức tấn công từ bên ngoài...
Functional testing có thể thực hiện trên cả 2 cách: requirements-based và business-process-based
Requirement -base testing sử dụng đặc tả của function của system như là cơ sở để design test. Một cách tốt hơn là sử dụng bảng danh sách các nội dung đặc tả function và đánh dấu các function sẽ test hoặc sẽ không test. Chúng ta nên xét độ ưu tiên của đặc tả yêu cầu dựa trên tiêu chuẩn đánh giá độ rủi ro (risk criteria) và dựa trên độ ưu tiên để tiến hành test. Điều này đảm bảo rằng hầu hết các chức năng quan trọng nhất sẽ được tập chung test.
Business-process-based testing sử dụng những kiến thức về bussiness process. Bussiness process mô tả kịch bản về bussiness hằng ngày của system. Ví dụ: Một hệ thống quản lý nhân sự và tính lương có một bussiness theo 1 line như sau: Một người gia nhập công ty -> người đó được trả lương một cách thường xuyên -> người đó out khỏi công ty. Nếu sử dụng use case sẽ mang nhiều hơi hướng của Hướng đối tượng (Object-oriented) nhưng ngày nay, phổ biến hơn vẫn là dựa trên life cycle. Chúng ta có thể sử dụng bussiness process như là điểm khởi đầu. Use case cũng rất hữu dụng để tạo ra các test case từ quan điểm cái nhìn về bussiness.
Kĩ thuật sử dụng trong functional testing là specification-base, nhưng kĩ thuật experienced-based có thể được sử dụng. Điều kiện test và test case có thể được chuyển giao từ function của component hoặc system. Như là một phần của test design, một mô hình có thể được phát triển như là process model, state transition model hoặc một plain-language specification.
2. Testing of software product characteristics (non-fucntional testing)
Mục tiêu thứ hai của việc kiểm thử là kiểm tra quality characteristics hay kiểm tra các đặc tính non-functional của hệ thống (hoặc của component hay integration group). Chúng ta sẽ quan tâm đến việc mọi thứ hoạt động tốt ra sao, nhanh thế nào...?. Chúng ta sẽ kiểm tra những thứ cần phải đo lường ví dụ như thời gian phản hồi của website (time to respond)...
Non-fucntion testing cũng như function testing được tiến hành ở tất cả các test level. Non-function testing bao gồm một cách không giới hạn : performance testing, load testing, stress testing, usability testing, maintainability testing, reliability testing và portability testing. Chúng ta sẽ kiểm tra xem "hệ thống sẽ hoạt động tốt như thế nào ".
Nhiều người cố gắng nắm bắt tất cả các đặc điểm chất lượng của phần mềm và các đặc điểm phụ liên quan. Trong những mô hình này, một số đặc tính cơ bản vẫn được lắp lại, mặc dù vị trí ban đầu có thể khác nhau. Tiêu chuẩn ISO (International Organization for Standardization) đã định nghĩa tập các tiêu chí chất lượng [ISO/IEC 9126, 2001] cho phần mềm. Tiêu chuẩn này là một bước tiến quan trọng dẫn đến sự thống nhất chung trong ngành công nghiệp phần mềm đồng thời giải thích những khái niệm chung trong ngành. Tiêu chuẩn ISO 9126 định nghĩa 6 tiêu chuẩn chất lượng và mỗi tiêu chuẩn lại bao gồm nhiều tiêu chuẩn nhỏ hơn. Tiêu chuẩn này ngày càng được nhiều ngành công nghiệp công nhận và giúp các bên phát triển, kiểm thử dùng chung một thuật ngữ kĩ thuật trong non-function testing.
Dưới đây là tiêu chuẩn chất lượng và những tiêu chuẩn nhỏ hơn tương ứng:
- functionality bao gồm 5 đặc điểm con: suitability, accuracy,security, interoperability, compliance.
- reliability bao gồm 4 đặc điểm con: maturity(robustness), fault-tolerance, recoverability, compliance
- usability bao gồm 5 đặc điểm con: understandability,learnability, operability, attractiveness, compliance
- efficiency bao gồm 3 đặc điểm con: time behavior (performance), resource utilization, compliance
- maintainability bao gồm 5 đặc điểm con: analyzability, changeability, stability, testability, compliance
- portability bao gồm 5 đặc điểm con: adaptability, installability, co-existence, replaceability, compliance
All rights reserved