Trong quá trình thực hiện công việc kiểm thử, chúng ta gặp phải vô số các khái niệm kiểm thử khác nhau. Các khái niệm này có thể đã quen thuộc với nhiều người, nhưng cũng có rất nhiều khái niệm mà chúng ta lạ lẫm và chưa từng nghe thấy.
Xuất phát từ việc hiểu được rằng “Những điều chúng ta biết chỉ là giọt nước, những điều chúng ta chưa biết là cả đại dương”, bài viết này sẽ đưa đến cho bạn đọc 100+ khái niệm kiểm thử phần mềm khác nhau mà các Tester cần biết. Đây là một danh sách tổng hợp bao gồm định nghĩa và giới thiệu ở mức tổng quan về hơn 100 khái niệm testing. Qua bài viết này, hi vọng bạn đọc sẽ có hiểu biết rõ ràng hơn về các khái niệm test cũng như nắm được các thông tin cơ bản nhất về các loại test mà mình đang quan tâm.
- Acceptance Testing: Khách hàng thực hiện (hoặc ủy quyền cho một nhóm thứ ba thực hiện). Mục đích của Acceptance Test là để chứng minh PM thỏa mãn tất cả yêu cầu của khách hàng và khách hàng chấp nhận sản phẩm.
- Accessibility Testing: Là một loại kiểm thử dành cho các hệ thống được thiết kế cho người khuyết tật (khiếm thính, khiếm thị, thiểu năng tâm thần…), xác định khả năng tiếp cận và sử dụng của họ với ứng dụng, ví dụ như các thiết lập Accessibility của smart phone: Text-to-Speech, “Magnification gestures”… Người khuyết tật thường sử dụng những tính năng hỗ trợ họ sử dụng các phần mềm. Loại test này có thể được thực hiện theo 2 cách là Manual và Automated.
- Active Testing: Loại kiểm thử bao gồm việc đưa ra dữ liệu test và phân tích kết quả thực hiện. Nó thường được tiến hành bởi đội tester. Trong quá trình active testing, tester sẽ hình dung để dựng một mô hình của phần mềm để test, cái này sẽ được phát triển và làm hoàn thiện hơn các tương tác của nó với những phần mềm đang chạy.
- Agile Testing: Kiểm thử Agile là việc kiểm thử phần mềm được thực hiện theo một số quy định của bản tuyên ngôn (manifesto) Agile, xem việc phát triển phần mềm như là khách hàng của việc kiểm thử. Kiểm thử Agile thực hiện kiểm thử theo quan điểm của khách hàng càng sớm càng tốt, thử nghiệm sớm và thường xuyên ngay khi code vừa xong và đủ ổn định để test từ level unit test.
- Age Testing: Loại kiểm thử đánh giá khả năng hoạt động của hệ thống trong tương lai. Quá trình đánh giá được thực hiện bởi đội tester. Age Testing đo đạc sự hao hụt về performance của hệ thống khi hệ thống PM bị cũ đi.
- Ad-hoc Testing: Việc thực hiện test mà không có plan, không có tài liệu, tester cố gắng phá vỡ hệ thống bằng cách thử ngẫu nhiên các chức năng của hệ thống. Việc này được thực hiện bởi đội tester.
- Alpha Testing: Loại kiểm thử phần mềm hoặc hệ thống được tiến hành bởi người dùng cuối nhưng thực hiện ngay tại chỗ của đội developer.
- Assertion Testing: Loại kiểm thử bao gồm việc xác minh nếu các điều kiện xác nhận yêu cầu. Nó được thực hiện bởi đội tester.
-
API Testing:
- API (Application Programming Interface): cho phép kết nối và trao đổi dữ liệu giữa hai hệ thống phần mềm riêng biệt. Một hệ thống phần mềm có thể nhúng các API bao gồm các hàm/thủ tục con (functions/sub-routines) mà có thể chạy bởi một hệ thống phần mềm khác.
- Kiểm thử API khác hoàn toàn với kiểm thử GUI và các thành phần chủ yếu khác trong tầng business logic của kiến trúc phần mềm. Loại kiểm thử này không tập trung vào phần giao diện và thao tác giao diện của một ứng dụng. Thay vì sử dụng các đầu vào (bàn phím) và đầu ra tiêu chuẩn, trong kiểm thử API, bạn có thể sử dụng một phần mềm để gửi các yêu cầu đến API, nhận đầu ra và ghi lại phản hồi của hệ thống.
- All-pairs Testing: All pair testing (Kiểm thử tất cả các cặp) hay còn gọi là pairwise testing, là một phương pháp test được thực hiện để kiểm thử các phần mềm sử dụng phương pháp tổ hợp. Đó là một phương pháp để kiểm tra tất cả các kết hợp rời rạc có thể có của các thông số liên quan, phương pháp test ít nhất sao cho chất lượng tốt nhất.
- Automated Testing: Kiểm thử tự động sử dụng công cụ (tool) để kiểm soát môi trường thiết lập, thực hiện kiểm tra và báo cáo kết quả. Nó được thực hiện bởi máy tính và được sử dụng trong nội bộ team
- Basis Path Testing: Thuộc phương pháp kiểm thử hộp trắng (White box test) là kĩ thuật kiểm thử mà phần mềm được chia thành các lộ trình, đảm bảo các lộ trình độc lập qua một module mã sẽ được kiểm thử đầy đủ. Thực hiện bởi developer.
- Backward Compatibility Testing: Phương pháp kiểm thử nhằm xác minh hành vi của phần mềm đã được phát triển so với các phiên bản cũ của môi trường test. Được thực hiện bởi đội test.
- Benchmark Testing: Kĩ thuật kiểm thử sử dụng tập hợp các chương trình và dữ liệu tiêu biểu được thiết kế để đánh giá hiệu suất của phần cứng và phần mềm máy tính trong một cấu hình nhất định. Được thực hiện bởi đội test.
- Beta Testing: Là giai đoạn test cuối cùng trước khi bàn giao ứng dụng, ứng dụng hoặc phần mềm được phân bổ như một phiên bản thử nghiệm (sử dụng thử) để người dùng kiểm tra ứng dụng tại nơi làm việc của họ. Người sử dụng sẽ quan sát phần mềm, trong trường hợp nếu có bất kỳ lỗi xảy ra thì nó được báo cáo đến người phát triển.
- Big Bang Integration Testing: Khi mà tất cả mọi thứ sẵn sàng thì kĩ thuật kiểm tra này thực hiện để tích hợp các module độc lập của chương trình.
- Binary Portability Testing: Kĩ thuật test một ứng dụng thực thi cho tính di động của phần mềm bằng cách thực thi phần mềm trên nền tảng và môi trường khác nhau. Nó được sử dụng cho cấu tạo của Application Binary Interface (ABI). Binary Portability testing nên được tiến hành trên các loại khác nhau của platform, như Windows(x86, X86-64), Linux, Mac OS, Java, Solaris, and Android. Nếu ứng dụng có tính di động cao thì người dùng có thể chạy ứng dụng trên bất kì nền tảng (platform) nào. Do đó để test Binary portability thì tức là khi xây dựng 1 phần mềm thì cần test việc nó thực thi được ứng dụng đó trên nhiều hệ điều hành khác nhau, nếu nó là website thì cần chạy được trên nhiều trình duyệt khác nhau để kiểm tra tính di động của nó. Được thực hiện bởi nhóm test.
- Boundary Value Testing: Kĩ thuật kiểm thử phần mềm trong đó test case được thiết kế để bao gồm những giá trị giới hạn tiêu biểu. Được thực hiện bởi đội test.
- Bottom Up Integration Testing: Trong kiểm thử tích hợp từ dưới lên, mô-đun ở mức thấp nhất được phát triển đầu tiên và các mô-đun khác đi theo hướng chương trình chính được tích hợp và kiểm thử cùng một lúc. Thực hiện bởi nhóm kiểm thử.
- Branch Testing: Kỹ thuật kiểm thử, trong đó tất cả các nhánh trong mã nguồn của chương trình sẽ được kiểm tra ít nhất một lần. Thực hiện bởi các developer.
- Breadth Testing: Một bộ kiểm tra đầy đủ các chức năng của một sản phẩm nhưng không kiểm tra các tính năng chi tiết. Thực hiện bởi các đội kiểm thử.
- Black box Testing: Một phương pháp kiểm thử phần mềm xác minh các chức năng của một ứng dụng mà không có kiến thức cụ thể về mã / cấu trúc bên trong của ứng dụng. Các kiểm thử được dựa trên yêu cầu và chức năng. Thực hiện bởi team QA.
- Code-driven Testing: Kỹ thuật kiểm thử sử dụng framework để kiểm thử (như xUnit) cho phép thực hiện các kiểm thử đơn vị (unit test) để xác định xem các phần khác nhau của mã đang hoạt động như mong đợi trong những tình huống khác nhau. Thực hiện bởi developers.
- Compatibility Testing: Kỹ thuật kiểm thử xác nhận làm thế nào một phần mềm thực hiện tốt trong một phần cứng / phần mềm / hệ điều hành/ môi trường hệ thống / môi trường mạng. Thực hiện bởi các nhóm kiểm thử.
- Comparison Testing: Kỹ thuật kiểm thử so sánh điểm mạnh và điểm yếu của sản phẩm với các phiên bản trước đó hoặc các sản phẩm tương tự khác. Thực hiện bởi nhân viên kiểm thử, các nhà phát triển, quản lý sản phẩm hoặc chủ sở hữu sản phẩm.
- Component Testing: Kỹ thuật kiểm thử tương tự với kiểm thử đơn vị, nhưng với một mức độ kiểm thử tích hợp cao hơn được thực hiện kiểm thử các ứng dụng thay vì chỉ trực tiếp kiểm thử một phương thức cụ thể. Thực hiện bởi đội kiểm thử hoặc đội phát triển.
- Configuration Testing: Kỹ thuật kiểm thử quyết định cấu hình tối thiểu và tối ưu của phần cứng và phần mềm, hiệu quả của việc thêm hoặc sửa đổi các nguồn tài nguyên như bộ nhớ, ổ đĩa và CPU. Thực hiện bởi các kỹ sư kiểm thử hiệu năng.
- Condition Coverage Testing: Loại kĩ thuật kiểm thử phần mềm mà mỗi điều kiện được gán 2 giá trị đúng và sai ít nhất 1 lần. Thực hiện bởi các nhóm kiểm thử tự động.
- Compliance Testing: Loại kiểm thử mà kiểm tra xem hệ thống đã được xây dựng phù hợp với các tiêu chuẩn, thủ tục và hướng dẫn. Thực hiện bởi các công ty ngoài , các công ty cung cấp thương hiệu “chứng nhận tuân thủ OGC “.
- Concurrency Testing: Kiểm thử đa người dùng hướng tới việc xác định ảnh hưởng của việc tiếp cận cùng một mã ứng dụng, mô-đun hoặc cơ sở dữ liệu. Thực hiện bởi các kỹ sư hiệu năng.
- Conformance Testing: Quá trình kiểm thử một sản phẩm hoặc hệ thống phù hợp với đặc điểm kỹ thuật của spec. Thực hiện bởi các đội kiểm thử.
- Context Driven Testing: Một kỹ thuật kiểm tra Agile, theo chủ trương đánh giá liên tục và sáng tạo các cơ hội kiểm thử của những thông tin tiềm năng, các giá trị của thông tin để tổ chức kiểm thử tại một thời điểm cụ thể. Thực hiện bởi các đội kiểm thử Agile.
- Conversion Testing: Kiểm thử các chương trình hoặc các thủ tục được sử dụng để chuyển đổi dữ liệu từ hệ thống hiện có để sử dụng trong các hệ thống thay thế. Thực hiện bởi team QA.
- Decision Coverage Testing: Loại hình kiểm thử phần mềm mà mỗi quyết định được thực hiện ít nhất một lần đảm bảo rằng tất cả các code được thực hiện. Mỗi quyết định được thực hiện bằng cách đặt vào 2 giá trị đúng và sai. Thực hiện bởi các nhóm kiểm thử tự động hóa.
- Destructive Testing: Loại kiểm thử trong đó các kiểm thử được tiến hành với các dữ liệu kiểm thử thất bại , để hiểu về hiệu suất ,hành vi quan trọng của một mẫu kiểm thử theo tải trọng khác nhau. Thực hiện bởi đội ngũ QA.
- Dependency Testing: Loại kiểm thử trong đó xem xét các yêu cầu của một ứng dụng cho các phần mềm tiền đề, trạng thái ban đầu và cấu hình để duy trì chức năng thích hợp. Thực hiện bởi các đội kiểm thử.
- Dynamic testing: Kiểm thử liên quan đến việc thực thi các thành phần hoặc toàn bộ hệ thống phần mềm. Thường được thực hiện bởi đội test.
- Domain testing: Là loại kiểm thử kiểm tra những thông tin mà người dùng sử dụng để nhập vào, kiểm tra các kết quả nhận được và xem xét chúng có đúng không. Thường được thực hiện bởi đội phát triển phần mềm và team test automation.
- Error handling testing: Loại kiểm thử phần mềm xác định trách nhiệm của hệ thống xử lý các giao dịch có lỗi một cách thích hợp. Thường được thực hiện bởi đội test.
- End – to- end testing: Tương tự với system testing, liên quan đến việc kiểm thử của môi trường tương tự với môi trường sử dụng thật, ví dụ tương tác với DB, sử dụng giao tiếp mạng, hoặc tương tác với các phần cứng, ứng dụng, hoặc hệ thống nếu phù hợp. Được thực hiện bởi đội QA.
- Endurance testing: Loại test để check việc thiếu bộ nhớ hoặc các vấn đề có thể xảy ra khi ứng dụng được thực hiện trong thời gian dài. Thường được thực hiện bởi đội hiệu năng.
- Exploratory testing: Kỹ thuật kiểm thử hộp đen thực hiện mà không cần plan và tài liệu. Thường được thực hiện bởi tester manual.
- Equivalence Partitioning testing: Kỹ thuật kiểm thử phần mềm chia dữ liệu đầu vào thành các phân vùng nhỏ hơn. Thường được đội QA sử dụng.
- Fault injection testing: Là kỹ thuật mà tester tập trung vào phương pháp mà hệ thống xử lý ngoại lệ thông qua việc truyền mã độc vào hệ thống. Được thực hiện bởi đội QA.
- Formal verification testing: Kiểm định hình thức theo kiểu chứng minh định lý (Theorem Proving), kiểm tra logic hệ thống xem có phù hợp với spec không. Thường được thực hiện bởi đội QA.
- Functional testing: Loại kiểm thử hộp đen dựa trên test case và spec. Được thực hiện bởi đội kiểm thử.
- Fuzz testing: Kỹ thuật kiểm thử phần mềm dùng các dữ liệu input invalid, không mong muốn hoặc random – nó là trường hợp đặc biệt của mutation testing. Fuzz testing được thực hiện bởi đội test.
- Gorilla testing: Là kỹ thuật mà tester thực hiện test lại phần đã test một vài lần trước đó để đảm bảo tính chắc chắn của hệ thống Được thực hiện bởi tester hoặc developer.
- Gray box testing: Là sự kết hợp của kiểm thử hộp đen và kiểm thử hộp trắng. Test phần mềm dựa trên spec nhưng lại sử dụng cả các kiến thức bên trong về hoạt động của code. Được thực hiển bởi dev và test.
- Glass box testing: Nó khá giống với kiểm thử hộp trắng. Nó cũng sử dụng kiến thức về xử lý code bên trong để test. Được đội dev thực hiện là chủ yếu.
- GUI software testing: Test giao diện người dùng của sản phẩm để đảm bảo đáp ứng được các yêu cầu. Thường được thực hiện bởi đội test.
- Globalization testing: Phương pháp kiểm thử kiểm tra các chức năng thích hợp của sản phẩm trong điều kiện thiết lập culture / locale sử dụng tất cả các loại đầu vào quốc tế có thể. Nó được thực hiện bởi đội test.
- Hybrid integration testing: Kết hợp 2 kỹ thuật kiểm thử tích hợp từ trên xuống và tích hợp từ dưới lên để tận dụng những ưu điểm của cả 2 kỹ thuật đó. Thường được thực hiện bởi đội test.
- Intergration testing: Integration Testing là công việc kiểm thử tích hợp 1 nhóm các module riêng lẻ với nhau. Thường được thực hiện bởi nhóm kiểm thử.
- Interface Testing: Kiểm thử giao diện là việc kiểm tra các yếu tố liên quan đến giao diện người dùng. Được thực hiển bởi tester hoặc nhóm phát triển.
-
Install/ Uninstall Testing:
- Kiểm thử cài đặt: Được thực hiện để xác minh liệu rằng các phần mềm đã được cài đặt với tất cả các thành phần cần thiết và các ứng dụng đang làm việc như mong đợi.
- Kiểm thử gỡ bỏ cài đặt: Được thực hiện để xác minh liệu rằng tất cả các thành phần của ứng dụng có bị loại bỏ trong quá trình hay không. Tất cả các tập tin liên quan đến ứng dụng cùng cấu trúc thư mục của nó phải được gỡ bỏ sau khi quá trình gỡ bỏ thành công.
- Được thực hiện bởi các kỹ sư kiểm thử phần mềm.
- Internationalization Testing: Quá trình đảm bảo chắc chắn các chức năng của sản phẩm không bị phá vỡ và tất cả các thông điệp được đưa ra ngoài chính xác khi được sử dụng trong các ngôn ngữ và miền địa phương khác nhau. Được thực hiện bởi đội kiểm thử.
- Inter-system Testing: Kỹ thuật kiểm thử tập trung vào kiểm thử các ứng dụng nhằm đảm bảo các kết nối giữa chức năng ứng dụng luôn chính xác. Thường được thực hiện bởi các nhóm kiểm thử.
- Keyword driven testing: Keyword Driven Testing (hay còn gọi là as table-driven testing hoặc action word based testing) là một kỹ thuật lập trình sử dụng các tập tin dữ liệu không chỉ chứa các dữ liệu kiểm thử và kết quả mong đợi, mà còn chứa các từ khóa liên quan đến ứng dụng đang được kiểm thử. Thực hiện bởi nhóm kiểm thử thủ công và tự động.
- Load Testing: Load testing là một quá trình thêm nhu cầu vào một hệ thống hoặc thiết bị và đo lường phản ứng của nó. Load testing được thực hiện để xác định ứng xử của hệ thống trong các điều kiện tải bình thường và cao hơn điều kiện tải dự kiến. Được thực hiện bởi các kỹ sư hiệu năng.
- Localization Testing: Localization testing là quá trình kiểm thử nhằm mục đích kiểm tra các phiên bản địa phương hóa của sản phẩm đặc trưng cho một nền văn hóa hoặc một địa phương cụ thể. Được thực hiện bởi tester.
-
Loop Testing:
- Kỹ thuật kiểm thử hộp trắng tạo ra một chu trình vòng lặp.
- Kiểm tra vòng lặp hoàn toàn tập trung vào tính hiệu lực của các cấu trúc vòng lặp. Nó là một trong những phần kiểm soát kiểm tra cơ cấu (kiểm tra đường dẫn, kiểm tra xác nhận dữ liệu, kiểm tra điều kiện).
- Được thực hiện bởi các kỹ sư phát triển.
- Manual Scripted Testing: Kỹ thuật kiểm thử trong đó các TCs được thiết kể và xem xét bởi nhóm kiểm thử trước khi thực hiện chúng. Được hoàn thành bởi nhóm kiểm thử thủ công.
- Manual Support Testing: Kiểm thử hỗ trợ thủ công là loại kiểm thử các chức năng hỗ trợ bằng tay. Nó đạt hiệu quả nhất trong giai đoạn cài đặt sản phẩm. Được thực hiện bởi nhóm kiểm thử.
- Model based Testing: MBT là thế hệ tự động của quy trình kiểm thử phần mềm sử dụng mô hình hành vi và yêu cầu hệ thống. Được thực hiện bởi nhóm kiểm thử.
- Mutation Testing: Kiểm thử hoán chuyển là phương pháp kiểm thử cấu trúc phần mềm nhằm mục đích đánh giá/cải thiện tính đầy đủ của điều kiện test và ước tính số lượng lỗi có thể phát sinh với hệ thống trong quá trình test. Được thực hiện bởi tester và developer.
- Modularity driven testing: Kiểm thử mô đun là một framework kiểm thử tự động trong đó các mô đun nhỏ, độc lập của kịch bản tự động hóa được phát triển cho ứng dụng dưới quá trình kiểm thử. Được thực hiện bởi Tester.
- Non-functional Testing: Kiểm thử phi chức năng đề cập đến các khía cạnh của phần mềm có thể không liên quan đến một chức năng cụ thể hoặc hành động người dùng, chẳng hạn như khả năng mở rộng và hiệu suất khác, hành vi dưới những hạn chế hoặc bảo mật nhất định. Có thể được thực hiện bởi các kỹ sư hiệu năng hoặc đội test.
- Negative Testing: Để đảm bảo hệ thống chạy trơn tru và ổn định, chúng ta chỉ test những trường hợp bình thường và hợp lệ là chưa đủ. Vì vậy, để đảm bảo hệ thống chạy có thể xử lý được những trường hợp ngoại lệ ta cần test thêm những ngữ cảnh không hợp lệ. Việc test những ngữ cảnh không hợp lệ gọi là negative testing. Được thực hiện bởi nhóm kiểm thử thủ công hoặc tự động.
- Operational Testing: Kiểm thử chấp nhận hoạt động (OAT) là một kỹ thuật kiểm thử được tiến hành nhằm xác nhận sự sẵn sàng hoạt động (trước khi release) của sản phẩm hoặc ứng dụng dưới quá trình test. Kỹ thuật này chủ yếu dựa trên sự sẵn sàng hoạt động của hệ thống sao cho gần giống với môi trường production. Được thực hiện bởi Tester.
- Orthogonal Array Testing: Kiểm thử mảng trực giao là một loại kiểm thử hộp đen – kiểm tra các trường hợp tối ưu hóa kỹ thuật được sử dụng khi hệ thống được thử nghiệm có các dữ liệu đầu vào khổng lồ.
- Pair testing: Kiểm thử theo cặp là cách tiếp cận một quá trình kiểm thử thiết kế bởi có hai tester kiểm tra được điều tương tự tại cùng một thời gian và địa điểm, liên tục trao đổi ý tưởng. Thực hiện bởi Tester.
- Passive Testing: Kiểm tra kỹ thuật: bao gồm trong việc theo dõi kết quả của một hệ thống đang chạy mà không tác động vào hệ thống. Được thực hiện bởi tester.
- Performance Testing: Kiểm thử hiệu năng là một phương tiện để đảm bảo chất lượng (QA), được thực hiện để xác định hệ thống thực hiện một khối lượng công việc cụ thể nhanh thế nào. Có thể dùng để xác nhận và xác minh những thuộc tính chất lượng khác của hệ thống như là khả năng mở rộng, độ tin cậy và sử dụng tài nguyên.
- Parallel Testing: Kiểm thử song song là kiểm tra khả năng tương thích của hệ thống mới được phát triển với hệ thống cũ. Thực hiện bởi Tester.
- Path Testing: Kiểm tra đường dẫn là một phương pháp kiểm tra cấu trúc liên quan đến việc sử dụng mã nguồn của một chương trình để tìm ra tất cả các đường dẫn thực thi tốt. Thực hiện bởi developer.
- Penetration Testing: Kiểm thử thâm nhập là một loại kiểm tra an ninh dùng để kiểm tra các khu vực không an toàn của hệ thống hoặc ứng dụng. Phương pháp mà đánh giá sự an toàn của một hệ thống máy tính hoặc mạng bằng cách mô phỏng một cuộc tấn công từ một nguồn độc hại. Tạo ra bởi công ty kiểm thử thâm nhập chuyên ngành.
- Qualification Testing: Là loại kiểm thử với mục đích kiểm tra lại các thông số kỹ thuật của phiên bản trước, thường được thực hiện bởi dev cho người tiêu dùng, để chứng minh rằng các phần mềm đáp ứng yêu cầu quy định của nó.
- Ramp Testing: Loại thử nghiệm bao gồm việc nâng cao một tín hiệu đầu vào liên tục cho đến khi hệ thống bị phá vỡ. Có thể được thực hiện bởi tester hoặc dev.
- Regression Testing: Kiểm thử hồi quy là loại kiểm thử phần mềm tìm cách để phát hiện ra các lỗi phần mềm sau khi thay đổi chương trình (ví dụ như sửa lỗi hoặc chức năng mới) đã được thực hiện, bởi việc kiểm tra lại chương trình.
- Recovery Testing: Kiểm thử phục hồi: là một loại kiểm thử phi chức năng, kiểm tra kỹ thuật để đánh giá một hệ thống phục hồi như thế nào từ sự cố, lỗi phần cứng, hoặc các vấn đề nghiêm trọng khác.
- Requirements Testing: Kiểm tra các yêu cầu: xác nhận rằng yêu cầu này là chính xác, đầy đủ, rõ ràng, và hợp lý; phù hợp và cho phép thiết kế một bộ các test case cần và đủ của những yêu cầu. Được thực hiện bởi đội ngũ QA.
- Security Testing: tester phải ra soát, tìm những lỗ hổng của hệ thống mà từ những lỗ hổng đó hacker có thể xâm nhập, phá hỏng hoặc làm sai lệch hệ thống → yêu cầu của loại test này đòi hỏi tester phải có 1 kiến thức nhất định về Security.
- Sanity Testing: Sanity testing là kiểu test dựa trên việc đánh giá ước lượng tính phù hợp của yêu cầu hoặc sự tính toán một cách nhanh chóng. Ví dụ như trong lĩnh vực toán học, khi lấy 3 nhân cho 9, ta phải kiểm tra rằng tổng các chữ số của kết quả phải chia hết cho 3 hoặc 9. Được thực hiện bởi tester.
- Scenario Testing: Một kịch bản thử nghiệm là một kịch bản được trình bày từ quan điểm người dùng cuối và dựa trên kịch bản này, các thử nghiệm được tiến hành.Trong thử nghiệm kịch bản, tester đặt mình vào người dùng cuối và tìm ra các kịch bản thực tế.
- Statement Testing: Là loại kiểm thử hộp trắng đáp ứng các tiêu chí mỗi câu lệnh trong một chương trình được thực hiện ít nhất một lần trong chương trình kiểm thử. Thường được thực hiện bởi dev.
- Scalability Testing: Kiểm tra khả năng mở rộng là kiểm tra hiệu suất hoạt động điều tra khả năng của một hệ thống để phát triển bằng cách tăng khối lượng công việc cho mỗi người dùng, hoặc số lượng người dùng đồng thời, hoặc kích thước của một cơ sở dữ liệu. Là một loại kiểm thử phi chức năng, là loại nhỏ trong kiểm thử hiệu suất.
- Static Testing: Là một cách gọi của quá trình review code và các tài liệu của dự án. Đây là hình thức test mà không cần chạy thử phần mềm. Phương pháp này sử dụng giấy, bút để kiểm tra lần lượt từng logic, ngay sau khi lập trình xong. Chủ yếu kiểm tra tính đúng đắn của các dòn code, thuật toán và các tài liệu đặc tả. Thực hiện bởi Developer, Code Reviewer, Business Analysts.
- Stability Testing: Là kỹ thuật test nhằm xác minh sự ổn định của phần mềm qua việc kiểm tra khả năng chạy liên tục của ứng dụng trong hoặc hơn khoảng thời gian có thể chấp nhận được. Kiểm tra xem tại giới hạn nào thì ứng dụng bị crash. Là một phần của performance test, cũng thường được gọi là Load testing hoặc Endurance testing (test khả năng chịu đựng). Thực hiện bởi performance tester/ engineer.
- Smoke Testing: Là kiểu test mở đầu cho quá trình test, được thực hiện ngay khi code được build trên môi trường test. Kiểu này cơ bản giống như kiểu Adhoc testing: kiểm tra xem phần mềm có sẵn sàng cho việc test chưa, có đủ môi trường cho việc test chưa? Kiểm tra đại khái các thành phần cơ bản của hệ thống phần mềm để xem rằng các chức năng chính có bị bất thường hay không? Sau khi test smoke, các tester sẽ thực hiện test khả năng thực hiện của các chức năng. Thực hiện bởi tester.
- Stress Testing: Stress testing là một hình thức kiểm thử được sử dụng để xác định tính ổn định của một hệ thống phần mềm. Là kiểu test kiểm tra thời gian đáp lại người dùng với số lượng người dùng bất kỳ trong nhiều ngữ cảnh khác nhau của cùng một ứng dụng tại cùng một thời điểm. Nó liên quan đến những kiểm thử vượt quá khả năng bình thường của hệ thống, thường để xác định các điểm phá vỡ của hệ thống, để quan sát các kết quả khi vượt qua ngưỡng giới hạn.Thực hiện bởi các kỹ sư hệ thống, Testers.
- Storage Testing: Là loại test nhằm xác minh chương trình qua việc kiểm tra các file dữ liệu có được lưu trữ trong các thư mục chính xác hay không? Kiểm tra xử lý của ứng dụng trong trường hợp thiếu không gian bộ nhớ thì có bị chấm dứt bất ngờ hay không? Ngoài ra còn xác định việc ứng dụng sử dụng bộ nhớ có nhiều hơn so với ước tính hay không, có khả năng gây đầy bộ nhớ và làm tăng thời gian chết hay không? Thực hiện bởi Tester.
- Structural Testing: Là một tên gọi khác của white box testing. Hay thường được gọi là clear box testing, hoặc cũng được biết đến như glass box testing. Được thực hiện bởi developers đã tạo ra code nhằm kiểm tra tính đúng đắn của các dòng code và đảm bảo các xử lý của từng hàm, từng chức năng riêng lẻ được thực hiện đúng theo yêu cầu.
- System Testing: Là quá trình thử nghiệm một hệ thống phần cứng và phần mềm tích hợp với nhau một cách hoàn chỉnh để xác minh rằng hệ thống đáp ứng được các yêu cầu về chức năng và kỹ thuật.Thời điêm thực hiện: Sau khi tester hoàn thành công việc test ứng dụng ở môi trường test (chỉ test với dữ liệu test, không test trên dữ liệu thật) thì ứng dụng phải được test trên môi trường thật. Vì trong môi trường test, một vài trường hợp không thể test được hoặc phải dùng thao tác giả. Khi ứng dụng chạy trên môi trường thật, cơ sở dữ liệu khác nhau, một số thao tác có thể không làm việc như mong đợi. Người thực hiện: Testers. Môi trường: cả môi trường phát triển và môi trường thật.
- System integration Testing: Là quá trình kiểm tra tương tác giữa các hệ thống khác nhau khi cùng được cài đặt và chạy trên cùng một môi trường. Được thực hiện sau khi thực hiện System test. Nó xác minh sự thi hành đúng của các thành phần của phần mềm cũng như giao diện thích hợp giữa các thành phần. Thực hiện bởi Tester.
- Top Down Integration Testing: Là kỹ thuật test dựa trên việc xây dựng cấu trúc chương trình. Trong đó các module của phần mềm được tích hợp bằng cách di chuyển theo chiều hướng xuống theo trình tự kiểm soát cấp bậc, bắt đầu từ module chính tới các module phụ. Khi tích hợp từ trên xuống thì khung tổng thể của hệ thống được phát triển trước, các chức năng thành phần gắn vào sau.(trái ngược với Bottom up integration: Tích hợp các thành phần có cấu trúc bên dưới trước như: dịch vụ chung, mạng, truy cập cơ sở dữ liệu, sau đó gắn thêm các thành phần chức năng). Được thực hiện bởi các tester.
- Thread Testing: Thread Testing là một kỹ thuật test phần mềm được sử dụng trong giai đoạn test integration sớm để kiểm tra khả năng hoạt động của các chức năng chính. Loại kỹ thuật này rất hữu ích khi test ứng dụng có sử dụng kiến trúc client server. Được thực hiện bởi các tester.
- Unit Testing: Là kiểu test kiểm tra code xem liệu chức năng nó đang thực hiện có đúng cách hay không theo như yêu cầu. Được thực hiện bởi developers.
- Upgrade Testing: Được thực hiện khi có phiên bản mới có những tính năng mới được tạo ra dựa trên một phiên bản cũ. Đây là kỹ thuật test nhằm xác minh rằng phiên bản mới được nâng cấp, hoạt động đúng và không thách thức người dùng trong việc học cách sử dụng. Được thực hiện bởi các tester.
- User Interface Testing: Là việc kiểm tra ứng dụng thông qua giao diện đồ họa (GUI) để kiểm tra giao diện của ứng dụng có đáp ứng được yêu cầu về thiết kế cũng như các hoạt động của từng thành phần trên giao diện đó (Click button, link…). Được thực hiện bởi các tester.
- Usability Testing: Là kỹ thuật test xác minh ứng dụng có khả năng ứng dụng cao và dễ sử dụng: người sử dụng có thể học để thao tác, input dữ liệu, giải thích kết quả của hệ thống hoặc các thành phần một cách dễ dàng. Giao diện thân thiện với người dùng: màu sắc, font chữ, size chữ, ngữ pháp câu chữ… Người thực hiện: end user.
- Volume Testing: Volume testing đề cập tới việc kiểm thử phần mềm ứng dụng với một lượng dữ liệu nhất định. Số lượng này có thể là kích thước cơ sở dữ liệu hoặc nó cũng có thể là kích thước của 1 tập tin giao tiếp là đối tượng của volume testing (định nghĩa trong các thuật ngữ chung). Thực hiện bởi performance engineer/tester.
- Vulnerability Testing: Là một loại test bảo mật, có mục đích để ngăn chặn vấn đề có thể ảnh hưởng đến tính toàn vẹn ứng dụng và ổn định. Được thực hiện bởi tester thông thường hoặc một đơn vị test chuyên biệt.
- White box Testing: Là kỹ thuật test dựa trên kiến thức về logic bên trong mã nguồn của một ứng dụng và bao gồm các loại test như coverage of code statements, branches, paths, conditions ( độ phủ của các dòng lệnh, test nhánh, test đường dẫn, test điều kiện).Thực hiện bởi Developers.
- Workflow Testing: Workflow là một kịch bản mô phỏng tiến trình hoạt động của chức năng nào đó hay nghiệp vụ nào đó được dự kiến sử dụng bởi người dùng cuối. Nó bao gồm nhiều bước thực hiện để đạt được kết quả mong muốn của chức năng đó. Test theo workflow là quá trình đảm bảo mỗi tiến trình làm việc phản ánh chính xác các business process. Loại test này phù hợp cho các ứng dụng workflow-based applications. Được thực hiện bởi Tester.
Trên đây là danh sách giới thiệu 100 khái niệm test dành cho các Tester. Trong số các loại test này, có thể có loại test mà bạn đã biết, cũng có thể có loại test bạn đã từng nghe nhưng chưa biết tên, và cũng có những loại test bạn chưa từng biết đến. Bài viết chỉ dừng lại ở việc giới thiệu khái niệm và mục đích của các loại test này, hi vọng nó sẽ là một cẩm nang hữu ích cho việc tra cứu đối với những ai đang thực hiện công việc test cũng như những ai có định hướng đi lên con đường tester chuyên nghiệp.
Techtalk via viblo