Đặt vấn đề Kiểm thử mềm là một quy trình bắt buộc trong phát triển phần mềm. Các kỹ thuật kiểm thử áp dụng cho kiểm thử phần mềm là các kỹ thuật kiểm thử cơ bản nhƣ: kiểm thử chức năng (functionality test), kiểm thử ép buộc lỗi(forced-error test), phân tích điều kiện biên (boundary condition) và phân tích lớp tƣơng đƣơng (equivalence class analysis),v. Các khái niệm cơ bản về kiểm thử phần mềm 1. Khái niệm kiểm thử phần mềm? Kiểm thử phần mềm là hoạt động nhằm tìm kiếm, phát hiện các lỗi của phần mềm được kiểm thử về thiết kế, mã nguồn, chức năng, dữ liệu, bảo mật, thân thiện với người dùng, tài liệu kèm theo, môi trường hoạt động, tốc độ hoạt động, khả năng tải của hệ thống, thường được chia thành các nhóm là nhóm thuộc về chức năng, nhóm không thuộc chức năng, nhóm thuộc về cấu trúc và nhóm liên quan đến các thay đổi [16] Kiểm thử phần mềm là quá trình thực thi một chương trình với mục đích tìm lỗi.
[14] Kiểm thử phần mềm là hoạt động khảo sát thực tiễn sản phẩm hay dịch vụ phần mềm trong đúng môi trường chúng dự định sẽ được triển khai nhằm cung cấp cho người có lợi ích liên quan những thông tin về chất lượng của sản phẩm hay dịch vụ phần mềm ấy. Mục đích của kiểm thử phần mềm là tìm ra các lỗi hay khiếm khuyết phần mềm nhằm đảm bảo hiệu quả hoạt động tối ưu của phần mềm trong nhiều ngành khác nhau. Mục đích của kiểm thử Phát hiện lỗi. Một trƣờng hợp kiểm thử tốt là trƣờng hợp có nhiều khả năng tìm thấy các lỗi chƣa từng bị phát hiện bao giờ.
Một kiểm thử thành công là kiểm thử phát hiện ra lỗi chƣa tìm thấy Thiết kế các ca kiểm thử để tìm kiếm các lỗi/khuyết tật Thực hiện chƣơng trình để tìm các lỗi/khuyết tật Khoa Công Nghệ Thông Tin Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội (LUAN.05 Học viên: Nguyễn Thị Ngọc Hƣơng TIEU LUAN MOI download : skknchat@gmail.05 Luận văn Thạc sĩ 2011 15 Kỹ thuật kiểm thử trên các ứng dụng Web 1. Điều kiện kiểm thử Điều kiện kiểm thử là các nhân tố quan trọng trong kiểm thử ứng dụng Web. Điều kiện kiểm thử là các tình huống trong đó các ứng dụng cần đƣợc kiểm thử hoạt động. Có hai loại điều kiện kiểm thử đƣợc mô tả dƣới đây.
Điều kiện liên quan đến ứng dụng Điều kiện liên quan đến ứng dụng bao gồm việc chạy cùng một bộ kiểm thử từ vựng(trong MSWord) trong chế độ Normal View và sau đó chạy lại trong chế dộ Page View. Nếu một phép thử sinh ra lỗi, phép thử khác không sinh ra lỗi,thì bạn có thể kết luận có một điều kiện liên quan đến ứng dụng sinh ra lỗi 1. Điều kiện liên quan đến môi trƣờng Khi một lỗi sinh ra bởi các điều kiện bên ngoài ứng dụng cần đƣợc kiểm thử, các điều kiện đƣợc xem là liên quan đến môi trƣờng.Môi trƣờng tĩnh (lỗi về khả năng tƣơng thích và cấu hình):Một môi trƣờng hoạt động trong đó khả năng không tƣơng thích có thể tồn tại, bất kể các điều kiện biến đổi nhƣ tốc độ xử lý và dung lƣợng bộ nhớ Hình 1.1 Cấu hình hai máy[8] Môi trƣờng động(RAM, không gian đĩa, bộ nhớ, băng thông mạng…).Một môi trƣờng trong đó các thành phần tƣơng thích khác có thể tạo ra lỗi liên quan đến bộ nhớ hay các điều kiện về độ trễ. Khoa Công Nghệ Thông Tin Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội (LUAN.05 Học viên: Nguyễn Thị Ngọc Hƣơng TIEU LUAN MOI download : skknchat@gmail.05 Luận văn Thạc sĩ 2011 16 Kỹ thuật kiểm thử trên các ứng dụng Web Hình 1.2 Sơ đồ tranh chấp tài nguyên [8] 1.
Các giai đoạn kiểm thử phần mềm[18] 1. Kiểm thử đơn vị (Unit Test) Các phƣơng pháp thiết kế phần mềm đều chia phần mềm thành những mô- đun hoặc thành các chƣơng trình nhỏ có các dữ liệu vào và kết quả riêng. Chúng ta gọi các mô-đun hay chƣơng trình đó là các đơn vị phần mềm. Trên các đơn vị này chúng ta sẽ tiến hành kiểm thử đơn vị.
Một khi đơn vị phần mềm đã đƣợc mã hoá, nghĩa là lập trình và hồ sơ kiểm thử đơn vị tƣơng ứng đã đƣợc hoàn thành thì kiểm thử đơn vị có thể đƣợc tiến hành. Thực hiện các trƣờng hợp kiểm thử đã đƣợc mô tả. Nếu có lỗi xảy ra cần phải chỉnh sửa lại đơn vị phần mềm. Thực hiện kiểm thử đơn vị lại.
Nếu tất cả các trƣờng hợp đã đƣợc kiểm thử hết và thành công thì kiểm thử đơn vị sẽ kết thúc 1. Kiểm thử tích hợp(Integration test) Kiểm thử tích hợp kết hợp các thành phần của một ứng dụng và kiểm thử nhƣ một ứng dụng đã hoàn thành. Trong khi của kiểm thử đơn vị kiểm tra các thành phần và đơn vị riêng lẻ thì kiểm thử tích hợp kết hợp chúng lại với nhau và kiểm tra sự giao tiếp giữa chúng. Kiểm thử hệ thống(System Test) Mục đích kiểm thử hệ thống là kiểm thử thiết kế và toàn bộ hệ thống (sau khi tích hợp) có thỏa mãn yêu cầu đặt ra hay không.
Kiểm thử hệ thống bắt đầu khi tất cả các bộ phận của phần mềm đã đƣợc tích hợp thành công. Thông thƣờng loại kiểm thử này tốn rất nhiều công sức và thời gian. Trong nhiều trƣờng hợp, việc kiểm thử đòi hỏi một số thiết bị phụ trợ, phần mềm hoặc phần cứng đặc thù, đặc biệt là các ứng dụng thời gian thực, hệ thống phân bố, hoặc hệ thống nhúng. Ở mức độ hệ thống, ngƣời Khoa Công Nghệ Thông Tin Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội (LUAN.05 Học viên: Nguyễn Thị Ngọc Hƣơng TIEU LUAN MOI download : skknchat@gmail.05 Luận văn Thạc sĩ 2011 17 Kỹ thuật kiểm thử trên các ứng dụng Web kiểm thử cũng tìm kiếm các lỗi, nhƣng trọng tâm là đánh giá về hoạt động, thao tác, sự tin cậy và các yêu cầu khác liên quan đến chất lƣợng của toàn hệ thống.
Kiểm thử chấp nhận sản phẩm-Acceptance test Thông thƣờng, sau giai đoạn kiểm thử hệ thống là kiểm thử chấp nhận sản phẩm, đƣợc 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 kiểm thử chấp nhận sản phẩm là để chứng minh phần mềm 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 (và trả tiền thanh toán hợp đồng). Kiểm thử chấp nhận sản phẩm có ý nghĩa hết sức quan trọng, mặc dù trong hầu hết mọi trƣờng hợp, các phép kiểm thử của kiểm thử hệ thống và kiểm thử chấp nhận sản phẩm gần nhƣ tƣơng tự, nhƣng bản chất và cách thức thực hiện lại rất khác biệt. Đối với những sản phẩm dành bán rộng rãi trên thị trƣờng cho nhiều ngƣời sử dụng, thông thƣờng sẽ thông qua hai loại kiểm thử gọi là kiểm thử Alpha – Alpha Test và kiểm thử Beta – Beta Test.
Với Alpha Test, ngƣời dùng kiểm thử phần mềm ngay tại nơi phát triển phần mềm, lập trình viên sẽ ghi nhận các lỗi hoặc phản hồi, và lên kế hoạch sửa chữa. Với Beta Test, phần mềm sẽ đƣợc gửi tới cho ngƣời dùng để kiểm thử ngay trong môi trƣờng thực, lỗi hoặc phản hồi cũng sẽ gửi ngƣợc lại cho lập trình viên để sửa chữa. Thực tế cho thấy, nếu khách hàng không quan tâm và không tham gia vào quá trình phát triển phần mềm thì kết quả kiểm thử chấp nhận sản phẩm sẽ sai lệch rất lớn, mặc dù phần mềm đã trải qua tất cả các kiểm thử trƣớc đó. Sự sai lệch này liên quan đến việc hiểu sai yêu cầu cũng nhƣ sự mong chờ của khách hàng.
Ví dụ đôi khi một phần mềm xuất sắc vƣợt qua các phép kiểm thử về chức năng thực hiện bởi nhóm thực hiện dự án, nhƣng khách hàng khi kiểm thử sau cùng vẫn thất vọng vì bố cục màn hình nghèo nàn, thao tác không tự nhiên, không theo tập quán sử dụng của khách hàng v. Gắn liền với giai đoạn kiểm thử chấp nhận sản phẩm thƣờng là một nhóm những dịch vụ và tài liệu đi kèm, phổ biến nhƣ hƣớng dẫn cài đặt, sử dụng v. Tất cả tài liệu đi kèm phải đƣợc cập nhật và kiểm thử chặt chẽ. Kiểm thử hồi quy-Regression Testing Kiểm thử hồi quy là kiểm thử kiểm tra lại các phần mềm đã đƣợc kiểm tra trƣớc đó.
Kiểm tra để phát hiện các hoạt động của phần mềm không bị thay dổi trừ khi có các yêu cầu thay đổi. Khoa Công Nghệ Thông Tin Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội (LUAN.05 Học viên: Nguyễn Thị Ngọc Hƣơng TIEU LUAN MOI download : skknchat@gmail.05 Luận văn Thạc sĩ 2011 18 Kỹ thuật kiểm thử trên các ứng dụng Web 1. Các phƣơng pháp kiểm thử 1. Kiểm thử tĩnh - Static testing Quy về việc kiểm tra một số thứ mà nó không phải đang chạy, đang kiểm tra, đang xem lại.
Đây là phƣơng pháp kiểm thử phần mềm cần phải duyệt lại các yêu cầu và các đặc tả bằng tay bằng cách sử dụng giấy, bút để kiểm tra logic, các chi tiết mà không cần chạy chƣơng trình. Cũng có thể tự động hóa kiểm thử tĩnh bằng cách thực hiện kiểm tra toàn bộ các chƣơng trình đƣợc phân tích bằng cách sử dụng một trình thông dịch hoặc biên dịch để xác nhận tính hợp lệ của chƣơng trình. Kiểm thử động – Dynamic testing[12] Là quá trình kiểm thử, chạy và sử dụng phần mềm. Dùng máy để kiểm tra và chạy chƣơng trình để kiểm tra lỗi của chƣơng trình.
Kiểm tra các hoạt động của câu lệnh.Chúng ta tiến hành biên dịch và chạy chƣơng trình sau đó nhập các giá trị đầu vào và kiểm tra xem dữ liệu đầu ra có đúng không. Có bốn phƣơng pháp kiểm thử động đó là kiểm thử đơn vị – Unit Tests, Kiểm thử tích hợp – Intergration Tests, Kiểm thử hệ thống – System Tests, và Kiểm thử chấp nhận sản phẩm – Acceptance Tests. Các chiến lƣợc kiểm thử Các kỹ thuật kiểm thử phần mềm có thể đƣợc chia thành 3 loại: Kỹ thuật kiểm thử hộp đen (black-box testing), kỹ thuật kiểm thử hộp trắng (White-box testing), kỹ thuật kiểm thử hộp xám (Gray-box testing). Kiểm thử hộp đen (Black-Box Testing) Kỹ thuật kiểm thử hộp đen (black-box testing): Là kỹ thuật kiểm thử giao diện, nó kiểm thử dựa trên giao diện của phần mềm đã có hay còn đƣợc gọi là kiểm thử mù (Blind testing) [1] IN PUT OUT PUT BLACK BOX Hình 1.3: Kiểm thử hộp đen 1.
Kiểm thử hộp trắng- White box testing Kiểm thử hộp trắng là một kĩ thuật kiểm thử mà các kĩ sƣ phần mềm sử dụng để kiểm tra các đoạn mã làm việc theo đúng mong đợi.