Kiểm thử phần mềm (software testing) là hoạt động nhằm tìm kiếm và phát hiện ra các lỗi của phần mềm, đảm bảo phần mềm chính xác, đúng và trọn vẹn theo yêu cầu của khách hàng, yêu cầu của sản phẩm đã đặt ra. Software testing cũng gửi tới mục tiêu, cái nhìn độc lập về phần mềm điều này cho phép đánh giá và hiểu rõ các rủi ro khi thực thi phần mềm. Căn cứ là gì? Hãy cùng LVN Group nghiên cứu thông qua nội dung trình bày dưới đây
1. Kiểm thử là gì?
Đây là một trong những loại kiểm thử phần mềm cần thiết để xác nhận xem hệ thống có hoạt động đúng yêu cầu được không. Ở tất cả các mức độ kiểm thử đều được kiểm thử chức năng.
Testing of function là một trong những loại kiểm thử phần mềm cần thiết
Testing of function có thể thực hiện theo 2 quan điểm: business – process – based và requirements-based. Với business – process – based, kiểm thử viên sẽ sử dụng các kiến thức về quy trình nghiệp vụ (mô tả các kịch bản liên quan đến nghiệp vụ của hệ thống mỗi ngày).
Trong khi đó, requirements-based sử dụng các đặc tả yêu cầu của hệ thống làm cơ sở để design test. Để đảm bảo những thành phần cần thiết nhất đều được kiểm thử, hãy xem xét độ ưu tiên của yêu cầu dựa trên tiêu chí rủi ro, theo đó, chúng ta sẽ sử dụng độ ưu tiên để kiểm thử.
Các bước kiểm thử chức năng gồm:
Bước 1: Xác định phần mềm sẽ kiểm thử và chức năng của nó
Bước 2: Dựa trên tài liệu đặc tả chức năng để tạo dữ liệu đầu vào
Bước 3: Dựa vào tài liệu đặc tả chức năng để xác định đầu ra
Bước 4: Thực hiện các trường hợp kiểm thử phần mềm
Bước 5: So sánh kết quả thực tiễn với mong muốn đạt được
2. Phương pháp kiểm thử
Phương pháp kiểm thử (Testing Methods) Kiểm thử hộp trắng (White Box Testing) Kiểm thử hộp đen (Black Box Testing):
- Phân vùng tương đương (Equivalence partitioning)
- Phân tích giá trị biên (Boundary value analysis)
- Bảng quyết định (Decision table)
- Đoán lỗi – Error Guessing
3. Các thành phần chính, cần thiết trong việc lập kế hoạch
3.1 Chiến lược kiểm thử
- Lập kế hoạch kiểm thử mức cao
- Test scripts
- Test Cases
- Test data
Sau đây chúng ta sẽ đi vào từng thành phần
Chiến lược kiểm thử Đây là tài liệu ghi lại cách tiếp cận kiểm thử cho các thành phần còn lại Các chiến lược kiểm thử có thể được phát triển rất sớm trong một dự án và chỉ yêu cầu thông tin ban đầu để có thể viết. Bất cứ khi nào một loại dự án hoặc công nghệ mới đang được kiểm thử, chiến lược kiểm thử là một trong những tài liệu cần thiết nhất cần thiết lập và cho ra đời sớm nhất.
Lập kế hoạch kiểm thử mức cao Đây là tài liệu mô tả cho việc kiểm thử “ai, cái gì, khi nào, ở đâu và thế nào”. Kế hoạch kiểm thử có thể được phát triển ở nhiều mức độ khác nhau, nhưng chúng tôi sẽ tập trung chủ yếu ở cấp độ dự án hoặc hệ thống trong phạm vi tài liệu này.
Kiểm thử mức chi tiết hơn ( Test scripts, Test cases, Test data) Kế hoạch kiểm thử mức cao sẽ cho thấy các function và thuộc tính nào của ứng dụng sẽ được kiểm thử. Các mô tả kiểm thử chi tiết thể hiện các thử nghiệm này theo nghĩa là người kiểm thử có thể thực thi hoặc có thể được viết test scripts để có thể thực hiện kiểm thử tự động. Chúng tôi sẽ xem xét làm thế nào để phát triển tất cả các thành phần trên và hiển thị các ví dụ của mỗi thành phần.
3.2 Các nhiệm vụ (tasks) chính trong việc lập kế hoạch kiểm thử
- Phát triển chiến lược kiểm thử
- Xác định mục tiêu kiểm thử
- Xác định các nguồn lực cần thiết
- Lập kế hoạch môi trường kiểm thử
- Xác định thủ tục kiểm thử (Test Procedures)
- Xác định các function cần kiểm thử
- Xác định các giao diện cần kiểm thử
- Viết Test Scripts
- Xác định Test cases
- Thiết kế Test Data
- Xây dựng Test maxtric
- Thiết lập Test schedules
- Giả định thông tin
- Kết thúc việc lập kế hoạch
Nhiệm vụ 1: Phát triển chiến lược kiểm thử
Định nghĩa các khía cạnh riêng của kiểm thử
Xác định
Nhân tố cần thiết tạo nên thành công của dự án (Critical Success Factors – CSF)
Loại ứng dụng
Loại dự án
Loại môi trường
Phạm vi kiểm thử
Rủi ro (Criticality)
Xác định
Ai sẽ là người kiểm thử
Khi nào kiểm thử sẽ được tiến hành
Kết hợp các yếu tố
Chi phí
Lịch trình (schedule)
Phạm vi (scope)
Chất lượng
Chiến lược kiểm thử là tài liệu cấp cao mô tả tính chất cơ bản và các khía cạnh riêng của kiểm thử. Chiến lược kiểm thử là một công cụ để giao tiếp để mọi người trong dự án biết cách kiểm thử sẽ được tiến hành. Các chiến lược kiểm thử có thể được xây dựng sớm trong dự án cho phép kiểm thử tiến hành một cách sớm nhất Một chiến lược kiểm thử điển hình sẽ xác định:
- Nhân tố cần thiết tạo nên thành công của dự án (Critical Success Factors – CSF)
Các nhân tố cần thiết tạo nên thành công của dự án là các thuộc tính của một ứng dụng phải có mặt để nó được coi là thành công. Ví dụ về CSF bao gồm tính chính xác, khả năng sử dụng, độ tin cậy, tính di động, khả năng tương tác và bảo mật. Các CSF liên quan trực tiếp đến kiểm tra các rủi ro và rủi ro dự án. Điều cần thiết là chỉ chọn 4 hoặc 5 yếu tố cần thiết, vì mỗi yếu tố sẽ yêu cầu các công cụ, con người và quy trình cụ thể.
- Loại ứng dụng Mô tả mục đích và mục tiêu của ứng dụng, chẳng hạn như: batch, on-line, web-base, Windows 32 bit, thương mại điện tử, truy cập dữ liệu, mạng nội bộ của công ty, extranet của khách hàng, v.v.
- Loại môi trường Mô tả loại môi trường hoạt động hoặc nền tảng ứng dụng sẽ tùy thuộc vào. Có thể bao gồm môi trường người dùng, cũng như môi trường vật lý, chẳng hạn như ngoài trời, truy cập công cộng, quyền truy cập bị giới hạn, v.v.
- Phạm vi kiểm thử Mô tả cái sẽ được test và không được test
- Rủi ro (Criticality)
Là bất kỳ khía cạnh nào của ứng dụng được kiểm thử làm tổ chức bị ảnh hưởng, mất mát.
Nhiệm vụ 2: Xác định mục tiêu kiểm thử
Xác định những gì sẽ được kiểm thử ở mức cao (high level)
Tốt nhất nên dựa trên yêu cầu
Mặt khác có thể dựa trên:
Quy trình và nghiệp vụ
Nhu cầu của khách hàng
Những chức năng cơ bản
Mục tiêu kiểm thử nên liên quan trực tiếp đến các mục tiêu của dự án hoặc hệ thống. Đối với mỗi hệ thống hoặc mục tiêu của dự án, cần có mục tiêu kiểm thử. Bạn có thể chọn để xác định mục tiêu kiểm thử của hệ thống bằng cách chia nhỏ các chức năng hoặc vùng chức năng. Trong việc thiết lập các mục tiêu kiểm thử, xác định tất cả những điều mà kiểm thử nên hoàn thành. Trong trường hợp lý tưởng, các mục tiêu kiểm thử sẽ dựa trên chi tiết được xác định yêu cầu. Tuy nhiên, người kiểm thử thường không nhận được mức độ chi tiết trong các yêu cầu để viết mục tiêu. Thay vào đó, các mục tiêu kiểm thử có thể thu được từ:
Quy trình và nghiệp vụ
Ví dụ, bạn cần biết khách hàng sẽ đặt một số loại giao dịch hoặc yêu cầu một số dịch vụ nhất định …
Nhu cầu của khách hàng
Bạn cần biết khách hàng cần có phản hồi nhanh với các yêu cầu hoặc có thể huỷ giao dịch
3.3 Những chức năng cơ bản
Một số chức năng cơ bản cần cho phần mềm ví dụ như: tìm kiếm, các nút (buttons), controls…
Nhiệm vụ: Xác định các chức năng cần kiểm thử
Dựa trên yêu cầu Các yêu cầu của ứng dụng hoặc hệ thống thường được văn bản hoá, đó chính là nguồn tốt nhất để tìm ra các chức năng cần được kiểm thử. Tuy nhiên các yêu cầu này có thể thường xuyên được thay đổi. Do đó quy trình kiểm thử cần phải đáp ứng được với sự thay đổi yêu cầu này
Dựa trên chức năng hoạt động/ nghiệp vụ của toàn hệ thống
Các sự kiện (events) của hệ thống
Các chức năng trong hệ thống nhà gửi tới
Mục đích Thương mại
Ví dụ về tài liệu kế hoạch kiểm thử với các chức năng cần kiểm thử
Hệ thống: Hệ thống lương
4. Các công cụ kiểm thử phần mềm phổ biến hiện nay
4.1. Selenium
Selenium là một công cụ kiểm thử phần mềm tự động mã nguồn mở miễn phí cho các ứng dụng web trên nhiều trình duyệt và nền tảng khác nhau như Windows, Mac và Linux. Selenium giúp Tester thực hiện kiểm thử bằng nhiều ngôn ngữ lập trình khác nhau như Java, PHP, C#, Python, Groovy, Ruby và Perl.
Selenium hiện có 3 loại: Selenium Webdriver, Selenium IDE, Selenium Grid. Tùy vào kỹ năng, nền tảng và yêu cầu mà bạn có thể lựa chọn sử dụng loại Selenium phù hợp.
Công cụ này phổ biến với tất cả các trình duyệt nổi tiếng hiện tại như Chrome, Mozila Firefox, Microsoft Edge, Apple Safari, Opera. Vì vậy, Selenium chắc chắn là nền tảng cho hầu hết các công cụ kiểm thử phần mềm khác.
4.2. TestingWhiz
TestingWhiz là công cụ kiểm thử phần mềm tự động với phiên bản Enterprise gửi tới một gói hoàn chỉnh gồm nhiều giải pháp test tự động khác nhau. Trong đó bao gồm: test web, test phần mềm, test database (cơ sở dữ liệu), test API, test ứng dụng di động, bảo trì bộ kiểm tra hồi quy, tối ưu hóa và tự động hóa cũng như kiểm thử trên nhiều trình duyệt.
Mặt khác, TestingWhiz gửi tới nhiều tính năng cần thiết khác nhau như:
Kiểm thử theo hướng từ khóa (key-word driven), theo hướng dữ liệu (data driven) và kiểm thử phân tán (distributed)
Kiểm thử tiện ích mở rộng trong trình duyệt
Object Eye Internal Recorder
SMTP Integration
Tích hợp với các công cụ theo dõi lỗi như Jira, Mantis, TFS và FogBugz
Tích hợp với các công cụ quản lý kiểm thử như HP Quality Center, Zephyr, TestRail và Microsoft VSTS
Centralized Object Repository (Kho lưu trữ đối tượng tập trung)
Version Control System Integration (Tích hợp hệ thống kiểm soát phiên bản)
Customized Recording Rule (Quy tắc ghi tùy chỉnh)
4.3. HPE Unified Functional Testing (HP – UFT formerly QTP)
HPE UFT gửi tới tính năng tự động hóa kiểm thử để kiểm thử chức năng và kiểm thử hồi quy cho các ứng dụng phần mềm. Ngôn ngữ script Visual Basic Scripting Edition được ứng dụng bởi công cụ này để đăng ký các quá trình kiểm thử và vận hành các đối tượng và điều khiển khác nhau trong việc test các ứng dụng.
Mặt khác, QTP gửi tới các tính năng khác như:
Tích hợp với Mercury Business Process Testing và Mercury Quality Center
Nhận dạng Unique Smart Object
Cơ chế xử lý lỗi
Tạo các tham số cho đối tượng, checkpoint và bảng điều hướng dữ liệu
Tài liệu tự động
4.4. TestComplete
TestComplete là một nền tảng kiểm thử chức năng gửi tới các giải pháp khác nhau để tự động kiểm thử. Công cụ này sử dụng cho máy tính để bàn, web và các ứng dụng di động.
TestComplete gửi tới các tính năng sau:
GUI testing
Hỗ trợ ngôn ngữ test – JavaScript, Python, VBScript, JScript, DelphiScript, C++ Script & C# Script
Kiểm thử trình hiển thị
Kiểm thử theo script (Scripted testing)
Kiểm thử ghi và phát lại (Test recording and playback)
4.5. Ranorex
Ranorex Studio gửi tới các công cụ tự động hóa testing khác nhau bao gồm việc test tất cả các ứng dụng máy tính để bàn, web và thiết bị di động.
Căn cứ hơn, Ranorex gửi tới các tính năng sau:
Kiểm thử GUI
Có thể tái sử dụng test code
Phát hiện bug
Tích hợp với nhiều công cụ khác nhau
Ghi và phát lại
4.6. Sahi
Sahi là một công cụ kiểm thử phần mềm tự động hóa áp dụng cho việc test các ứng dụng web. Mã nguồn mở Sahi được viết bằng ngôn ngữ lập trình Java và JavaScript.
Sahi gửi tới các tính năng sau:
Thực hiện kiểm thử nhiều trình duyệt cùng lúc
Hỗ trợ các framework ExtJS, ZK, Dojo, YUI, v.v.
Ghi lại và phát lại khi test trình duyệt
4.7. Watir
Watir là một công cụ kiểm thử mã nguồn mở được tạo thành từ các thư viện Ruby để tự động kiểm thử ứng dụng web.
Công cụ này gửi tới các tính năng sau:
Kiểm thử bất kỳ ứng dụng web dựa trên ngôn ngữ nào
Kiểm thử trên nhiều trình duyệt
Tương thích với các công cụ phát triển theo định hướng kinh doanh như RSpec, Cucumber và Test / Unit
Kiểm thử các nút, biểu mẫu, liên kết và phản hồi của chúng trên trang web
4.8. Tosca Testsuite
Tosca Testsuite là một công cụ phần mềm để thực hiện tự động kiểm thử phần mềm chức năng và hồi quy. Ngoài chức năng tự động hóa thử nghiệm, TOSCA bao gồm quản lý kiểm thử tích hợp, giao diện người dùng đồ họa (GUI), giao diện dòng lệnh (CLI) và giao diện lập trình ứng dụng (API).
Tosca Testsuite đi kèm với các tính năng sau:
Lập kế hoạch và thiết kế trường hợp thử nghiệm
Kiểm tra gửi tới dữ liệu
Dịch vụ mạng ảo hóa
Kiểm tra ứng dụng di động
Quản lý tích hợp
Bảo hiểm rủi ro
4.9. Telerik TestStudio
Telerik TestStudio gửi tới giải pháp để tự động kiểm thử ứng dụng trên máy tính để bàn, web và thiết bị di động bao gồm kiểm thử giao diện người dùng, load và hiệu suất.
Công cụ này gửi tới nhiều khả năng tương thích khác nhau như:
Hỗ trợ các ngôn ngữ lập trình như HTML, AJAX, ASP.NET, JavaScript, Silverlight, WPF và MVC
Tích hợp với Visual Basic Studio 2010 và 2012
Ghi và phát lại
Kiểm thử trên nhiều trình duyệt
Kiểm thử thủ công
Tích hợp với các công cụ theo dõi bug
4.10. Katalon Studio
Katalon Studio là một công cụ kiểm thử phần mềm tự động hóa miễn phí được phát triển bởi Katalon LLC. Công cụ này được xây dựng dựa trên các framework tự động hóa mã nguồn mở Selenium, Appium với giao diện IDE chuyên biệt để kiểm tra API, web và thiết bị di động. Công cụ này bao gồm một gói trọn vẹn các tính năng mạnh mẽ giúp dễ dàng tự động hóa kiểm thử giao diện người dùng web.
Katalon Studio bao gồm các tính năng sau:
Kho lưu trữ đối tượng tích hợp, XPath, nhận dạng lại đối tượng
Hỗ trợ các ngôn ngữ script Java / Groovy
Hỗ trợ tích hợp cho kiểm thử dựa trên hình ảnh
Hỗ trợ các công cụ Tích hợp liên tục như Jenkins & TeamCity
Hỗ trợ Duel-editor Interface
Quy trình thực thi có thể tùy chỉnh