Kiểm thử phần mềm,Tìm hiểu về quá trình kiểm thử negative và interoperability,Kiểm thử phần mềm là một quá trình kiểm tra để phát hiện ra lỗi của những phần mềm, ứng dụng nhằm cung cấp cho khách hàng, lập trình viên… thông tin về chất lượng của phần mềm được kiểm thử. Mục đích cuối cùng của công việc này là để đảm bảo sản phẩm (phần mềm, ứng dụng) được tạo ra theo đúng mong muốn khách hàng và hoạt động hiệu quả. Với các công ty phát triển phần mềm thì Tester (chuyên viên kiểm thử phần mềm) có vai trò cốt yếu để đảm bảo uy tín của công ty, tránh những trường hợp sản phẩm lỗi bị khách hàng trả về nơi sản xuất.
Trang 2MỤC LỤC
CHƯƠNG 1: KHÁI NIỆM KIỂM THỬ PHẦN MỀM 4
1.1 Khái niệm 4
1.2 Lợi ích của kiểm thử 4
1.3 Các giai đoạn của quá trình kiểm thử phần mềm 5
1.3.1 Phân tích yêu cầu về sản phẩm (requirement analysis) 5
1.3.2 Lập kế hoạch kiểm thử phần mềm (test planning) 6
1.3.3 Thiết kế kịch bản kiểm thử phần mềm (test case development) 7
1.3.4 Sắp đặt môi trường kiểm thử phần mềm (test environment set up) 7
1.3.5 Thực thi quá trình kiểm thử phần mềm (test execution) 7
1.3.6 Kết thúc chu trình kiểm thử phần mềm (test cycle closure) 8
1.4 Kiểm thử hộp đen 8
1.4.1 Khái niệm 8
1.4.2 Ưu điểm 9
1.4.3 Nhược điểm 9
1.5 Kiểm thử hộp trắng 10
1.5.1 Khái niệm 10
1.5.2 Ưu điểm 10
1.5.3 Nhược điểm 11
CHƯƠNG 2: QUÁ TRÌNH KIỂM THỬ NEGATIVE VÀ INTEROPERABILITY 12
2.1 Kiểm thử negative 12
2.1.1 Khái niệm 12
2.1.2 Quy trình thực hiện Kiểm tra bị động(Negative Testing) 14
2.1.3 Ưu điểm 15
2.1.4 Nhược điểm 15
2.2 Kiểm thử Interoperability (kiểm thử liên tác) 16
2.2.1 Khái niệm 16
Trang 32.2.2 Quy trình thực hiện Kiểm tra liên tác 17
2.2.3 Ưu điểm 19
2.2.4 Nhược điểm 20
CHƯƠNG 3: ỨNG DỤNG KIỂM THỬ 21
3.1 Lập kế hoạch 21
3.2 Công cụ 21
3.3 Kịch bản kiểm thử 21
3.4 Thực hiện kiểm thử 21
3.5 Cài đặt các công cụ 25
KẾT LUẬN 28
TÀI LIỆU THAM KHẢO 29
Trang 4LỜI MỞ ĐẦU
Công nghệ thông tin là một ngành rất phát triển trong xã hội ngày nay Nóđược ứng dụng trong rất nhiều ngành, lĩnh vực và đạt được hiệu quả cao Đặcbiệt là trong công tác quản lý, tin học làm giảm nhẹ được sức của con ngườiquản lý, tiết kiệm thời gian và gọn nhẹ hơn nhiều so với cách quản lý bằng giấy
tờ như trước kia Ứng dụng tin học vào công tác quản lý còn giúp thu hẹp khônggian lưu trữ dữ liệu, tránh thất lạc dữ liệu một cách an toàn Hơn nữa nó còngiúp tìm kiếm, tra cứu thông tin một cách nhanh chóng, chính xác và đầy đủ.Nhóm em xin gửi lời tri ân sâu sắc đến thầy ThS Hoàng Quang Huy.Trong quá trình tìm hiểu và học tập bộ môn Kiểm thử phần mềm, nhóm đã nhậnđược sự hướng dẫn và những chia sẻ rất tận tình, tâm huyết của thầy Từ nhữnghướng dẫn tận tình của thầy cùng với kiến thức mà nhóm đã học tập, tìm hiểu,chúng em đã hoàn thành báo cáo đề tài “Nghiên cứu kỹ thuật kiểm negative vàinteroperbility”
Với tất cả sự cố gắng, nỗ lực của mình, nhóm em đã hoàn thành tốt nhất bàibáo cáo này Nhưng chúng em vẫn rất mong nhận được sự góp ý của thầy cô vàcác bạn để bài báo cáo của chúng em được hoàn thiện hơn
Kính chúc thầy cô thật nhiều sức khoẻ, hạnh phúc và thành công trong cuộcsống
Nhóm em xin chân thành cảm ơn!
Trang 5CHƯƠNG 1:KHÁI NIỆM KIỂM THỬ PHẦN MỀM 1.1 Khái niệm
Kiểm thử phần mềm là một quá trình kiểm tra để phát hiện ra lỗi của nhữngphần mềm, ứng dụng nhằm cung cấp cho khách hàng, lập trình viên… thông tin
về chất lượng của phần mềm được kiểm thử Mục đích cuối cùng của công việcnày là để đảm bảo sản phẩm (phần mềm, ứng dụng) được tạo ra theo đúng mongmuốn khách hàng và hoạt động hiệu quả Với các công ty phát triển phần mềmthì Tester (chuyên viên kiểm thử phần mềm) có vai trò cốt yếu để đảm bảo uytín của công ty, tránh những trường hợp sản phẩm lỗi bị khách hàng trả về nơisản xuất
Kiểm thử phần mềm là phương pháp kiểm tra xem sản phẩm phần mềm đótrên thực tế có phù hợp với các yêu cầu đã đặt ra hay không, và đảm bảo rằngkhông có lỗi hay khiếm khuyết Nó bao gồm việc kiểm tra, phân tích, quan sát
và đánh giá các khía cạnh khác nhau của sản phẩm Người kiểm thử phần mềm(Tester) sử dụng kết hợp các công cụ thủ công và tự động Sau khi tiến hànhkiểm thử, Tester báo cáo kết quả cho team phát triển Mục đích là xác định cáclỗi, khiếm khuyết hoặc các yêu cầu còn thiếu so với yêu cầu thực tế
1.2 Lợi ích của kiểm thử
Hiệu quả về chi phí: Đây là một trong những lợi ích quan trọng của kiểm
thử phần mềm Thực tế cho thấy rằng các lỗi thiết kế khó có thể được loại trừhoàn toàn đối với bất kỳ hệ thống nào Đó không phải là lỗi bất cẩn củaDeveloper mà đôi khi do sự phức tạp của hệ thống Nếu các vấn đề về thiết kếkhông được phát hiện, thì việc tìm ra và sửa các lỗi/khiếm khuyết sẽ trở nên khókhăn và tốn kém hơn Kiểm thử bất kỳ dự án IT nào cũng sẽ giúp công ty tiếtkiệm, việc xác định lỗi trong giai đoạn đầu sẽ giúp quá trình sửa chữa tốn ít chiphí hơn
Trang 6Bảo mật: Đây là điểm nhạy cảm và dễ bị tấn công nhất của kiểm thử phần
mềm Kiểm thử giúp loại bỏ các rủi ro và vấn đề trong sản phẩm Cùng với đó,tất cả khách hàng đều đang tìm kiếm những sản phẩm đáng tin cậy
Chất lượng sản phẩm: Đây là yêu cầu thiết yếu của bất kỳ sản phẩm phần
mềm nào Kiểm thử phần mềm giống như việc củng cố danh tiếng công ty bằngcách cung cấp các sản phẩm chất lượng cho khách hàng
Sự hài lòng của khách hàng: Trong bất kỳ hoạt động kinh doanh sản
phẩm nào, mục tiêu cuối cùng đều là mang đến cho khách hàng trải nghiệm tốtnhất Sự hài lòng của khách hàng rất quan trọng trong quá trình hợp tác lâu dài
1.3 Các giai đoạn của quá trình kiểm thử phần mềm
Không có một quy trình nào đúng trong mọi trường hợp, nhưng 6 bướcdưới đây mang tính khái quát và phù hợp nhất cho hầu hết quá trình kiểm thửphần mềm:
Thiết kế kiểm
thử
Thực thi
Kết thúc
Trang 71.3.1 Phân tích yêu cầu về sản phẩm (requirement analysis)
Bước đầu tiên của việc kiểm thử phần mềm là gì? Không liên quan đếnviệc kiểm tra thử nghiệm gì đâu nhé Các thành viên trong nhóm kiểm thử sẽ lậpthành một QA team để thực hiện nghiên cứu, phân tích chi tiết các tài liệu vềthiết kế hệ thống, những yêu cầu của khách hàng về tiêu chí, chất lượng của sảnphẩm, các bản mẫu (prototype) mà khách hàng cung cấp,
Nhờ đó, team này sẽ nắm bắt được các yêu cầu của dự án Bên cạnh đó,nếu có thắc mắc về mong muốn của khách hàng hay muốn đưa ra các đề xuấtmới, QA team sẽ đưa ra câu hỏi cho các bên như BA( Business Analysis),trưởng nhóm kiểm thử hay khách hàng để hiểu rõ hơn về yêu cầu trong các tàiliệu trên Hơn nữa, vì không phải khách hàng nào cũng hiểu biết về công nghệnên khá khó khăn để đặt câu hỏi mang tính chuyên môn cho họ Chính vì vậy,những người trong QA team sẽ phải hỗ trợ và cung cấp các đề xuất một cách dễhiểu nhất cho khách hàng lựa chọn
1.3.2 Lập kế hoạch kiểm thử phần mềm (test planning)
Sau khi đã nhận được các tài liệu phân tích, báo cáo… từ QA team ở bướctrên, các leader sẽ tiến hành lập kế hoạch kiểm thử cho cả nhóm thực hiện.Người lập kế hoạch sẽ phải thực hiện các hoạt động như:
- Xác định phạm vi của dự án: các vấn đề liên quan đến thời gian thực hiện,lịch trình, công việc cụ thể cho từng giai đoạn…
- Xác định phương pháp tiếp cận: dựa vào thời gian, yêu cầu của kháchhàng, công nghệ, kỹ thuật… leader kiểm thử phần mềm sẽ đưa ra cách thứckiểm thử phù hợp, hiệu quả nhất
- Xác định nguồn lực cho quá trình kiểm thử: cần bao nhiêu người thamgia, ai làm công việc gì, cần những thiết bị hỗ trợ nào, số lượng ra sao…
- Lập kế hoạch thiết kế công việc kiểm thử: đưa ra các chức năng cần kiểmthử những công việc gì cần thực hiện, thời gian bao lâu, xác định những điều
Trang 8kiện tối thiểu để bắt đầu cũng như khi nào thì kết thúc hoạt động kiểm thử vớitừng chức năng…
1.3.3 Thiết kế kịch bản kiểm thử phần mềm (test case development)
Dựa vào kế hoạch của leader đã đưa ra cũng như các tài liệu đầu vào khác,các chuyên viên kiểm thử phần mềm (Tester) sẽ xem xét lại và bắt đầu viết testcase chi tiết Bên cạnh viết kịch bản chi tiết thì các chuyên viên kiểm thử cũngphải chuẩn bị trước các dữ liệu như test data, test script cho các trường hợp cầnthiết Sau khi đã hoàn thành test case/checklist, các thành viên cũng như teamleader cần kiểm tra lại xem cần bổ sung, sửa chữa vấn đề gì không để tránhnhững rủi ro về sau
1.3.4 Sắp đặt môi trường kiểm thử phần mềm (test environment set up)
Đầu vào của quá trình này là các kịch bản kiểm thử, test data, kế hoạchkiểm thử đã lập ra ở các bước trên… Việc thiết lập môi trường (testenvironment) kiểm thử phần mềm cũng khá quan trọng trong quy trình test phầnmềm vì nếu môi trường không phù hợp với sản phẩm hay mong muốn kháchhàng thì kết quả kiểm thử sẽ không chính xác Môi trường kiểm thử sẽ đượcthiết lập dựa trên những đề nghị của khách hàng, hay các đặc điểm của sản phẩmnhư server, network, client,
Ngoài ra, chuyên viên kiểm thử cũng cần chuẩn bị một vài test case để xemmôi trường kiểm thử đã sẵn sàng cho bước thực thi tiếp theo hay chưa Kết thúcgiai đoạn này, tester đã có được sẵn môi trường phù hợp cho việc test phần mềmtrong thực tế
1.3.5 Thực thi quá trình kiểm thử phần mềm (test execution)
Nhiệm vụ chính của chuyên viên kiểm thử phần mềm là gì? Dựa vào tất cảnhững tài liệu, kế hoạch từ các bước trên, các tester sẽ tiến hành các test casetrên môi trường kiểm thử đã được thiết lập Họ sẽ so sánh kết quả kiểm thử vớikết quả mong đợi để phát hiện ra các lỗi sai và tiến hành theo dõi các lỗi đó đến
Trang 9khi chúng được fix hoàn toàn Bên cạnh đó, kiểm thử viên cũng cần theo dõi tiến
độ của dự án và điều chỉnh sao cho phù hợp với kế hoạch đề ra
Công việc của người kiểm thử không phải chỉ là test phần mềm, họ cònphải hỗ trợ, đưa ra các đề xuất hay giải pháp hợp lý cho các lập trình viên(developer) để hoàn thành sản phẩm như mong muốn Trong quá trình này,chuyên viên kiểm thử phải thường xuyên báo cáo về tình hình test (phần nào đãđược kiểm tra, phần nào chưa, báo cáo các tình huống phát sinh bất ngờ…) chocác bên liên quan như team leader, người quản lý dự án, khách hàng…
1.3.6 Kết thúc chu trình kiểm thử phần mềm (test cycle closure)
Đây là giai đoạn cuối cùng của quy trình kiểm thử phần mềm Tất cả cácchuyên viên thực hiện test phần mềm sẽ tổng hợp và viết báo cáo kết quả cuốicùng của việc kiểm thử (test report final) Trong đó phải chỉ ra được bao nhiêutest case đạt/ không đạt yêu cầu, bao nhiêu case được sửa, bao nhiêu lỗi đượcphát hiện, lỗi tồn tại nhiều ở chức năng nào, chức năng nào đã được/ chưa đượckiểm thử hay trễ tiến độ… Bên cạnh đó, team test phần mềm cũng cần xem lạiquá trình thực hiện để nhìn ra những điểm tốt, chưa tốt của team, cũng như rútkinh nghiệm cho những lần kiểm thử sau này
1.4 Kiểm thử hộp đen
1.4.1 Khái niệm
Kiểm thử hộp đen: là một phương pháp kiểm thử phần mềm được thực hiện
mà không biết được cấu tạo bên trong của phần mềm, là cách mà các tester kiểmtra xem hệ thống như một chiếc hộp đen, không có cách nào nhìn thấy bên trongcủa cái hộp
Nó còn được gọi là kiểm thử hướng dữ liệu hay là kiểm thử hướng in/out.Người kiểm thử nên xây dựng các nhóm giá trị đầu vào mà sẽ thực thi đầy
đủ tất cả các yêu cầu chức năng của chương trình
Trang 10Cách tiếp cận của các tester đối với hệ thống là không dùng bất kỳ một kiếnthức về cấu trúc lập trình bên trong hệ thống, xem hệ thống là một cấu trúc hoànchỉnh, không thể can thiệp vào bên trong.
ở nơi mà các DEV không tìm thấy
Tester có thể không phải IT chuyên nghiệp, không cần phải biết ngôn ngữlập trình hoặc làm thế nào các phần mềm đã được thực hiện
Các tester có thể được thực hiện bởi một cơ quan độc lập từ các developer,cho phép một cái nhìn khách quan và tránh sự phát triển thiên vị
Hệ thống thật sự với toàn bộ yêu cầu của nó được kiểm thử chính xác.Thiết kế kịch bản kiểm thử khá nhanh, ngay khi mà các yêu cầu chức năngđược xác định
1.4.3 Nhược điểm
Dữ liệu đầu vào yêu cầu một khối lượng mẫu (sample) khá lớn
Nhiều dự án không có thông số rõ ràng thì việc thiết kế test case rất khó và
do đó khó viết kịch bản kiểm thử do cần xác định tất cả các yếu tố đầu vào, vàthiếu cả thời gian cho việc tập hợp này
Khả năng để bản thân kỹ sư lạc lối trong khi kiểm thử là khá cao
Chỉ có một số nhỏ các đầu vào có thể được kiểm tra và nhiều đường dẫnchương trình sẽ được để lại chưa được kiểm tra
Trang 11Kiểm thử black box được xem như "là bước đi trong mê cung tối đen màkhông mang đèn pin” bởi vì tester không biết phần mềm đang test đã được xâydựng như thế nào Có nhiều trường hợp khi một tester viết rất nhiều trường hợptest để kiểm tra một số thứ có thể chỉ được test bằng một trường hợp testvà/hoặc một vài phần cuối cùng không được test hết.
1.5 Kiểm thử hộp trắng
1.5.1 Khái niệm
Kiểm thử Hộp Trắng là một kỹ thuật xác minh giúp các kỹ sư phần mềm cóthể sử dụng để kiểm tra mã code của họ hoạt động như dự kiến
Đối tượng được kiểm thử là 1 thành phần phần mềm (TPPM).TPPM có thể
là 1 hàm chức năng, 1 module chức năng, 1 phân hệ chức năng…
Phương pháp Kiểm tra Hộp trắng áp dụng cho các mức độ kiểm tra phầnmềm sau đây:
• Unit Testing(Kiểm thử đơn vị): Để kiểm tra đường dẫn trong một đơn vị
• Integration Testing(Test tích hợp): Để kiểm tra đường dẫn giữa các đơnvị
• System Testing(Test hệ thống): Để kiểm tra các đường dẫn giữa các hệthống con
Tuy nhiên, nó là chủ yếu áp dụng cho các kiểm thử đơn vị
Trang 121.5.2 Ưu điểm
-Test có thể bắt đầu ở giai đoạn sớm hơn, không cần phải chờ đợi cho GUI
để có thể test
-Test kỹ càng hơn, có thể bao phủ hầu hết các đường dẫn
-Thích hợp trong việc tìm kiếm lỗi và các vấn đề trong mã lệnh
-Cho phép tìm kiếm các lỗi ẩn bên trong
-Các lập trình viên có thể tự kiểm tra
-Giúp tối ưu việc mã hoá
-Do yêu cầu kiến thức cấu trúc bên trong của phần mềm, nên việc kiểmsoát lỗi tối đa nhất
Trang 13CHƯƠNG 2:QUÁ TRÌNH KIỂM THỬ NEGATIVE VÀ
INTEROPERABILITY 2.1 Kiểm thử negative
2.1.1 Khái niệm
Negative testing (kiểm thử bị động) là một loại kiểm thử phần mềm được
sử dụng để kiểm tra ứng dụng phần mềm về các dữ liệu và điều kiện đầu vàokhông mong muốn Dữ liệu hoặc điều kiện không mong muốn có thể là bất cứđiều gì, từ kiểu dữ liệu sai cho đến tấn công hack mạnh Mục đích của kiểm tra
bị động là để ngăn chặn ứng dụng phần mềm bị treo do các đầu vào tiêu cực vàcải thiện chất lượng và độ ổn định
Tất cả những trường hợp này sẽ được negative testing Điều quan trọng củađiều này là chúng tôi không thể đảm bảo rằng tất cả những điều đã đề cập ở trên
sẽ không xảy ra, vì vậy chúng tôi cần chúng được chứa đựng
Xem xét trường hợp kiểm tra tình trạng thừa cân và khi thực hiện, thangmáy hoạt động không bình thường khi có tình trạng thừa cân Điều này có thểgây ảnh hưởng đến độ tin cậy của hệ thống và thậm chí có thể gây nguy hiểmđến tính mạng Điều này giải thích negative testing là gì và tầm quan trọng củanó
Trường hợp tương tự cũng được áp dụng trong phần mềm Đối với negativetesting, chúng tôi đã đi chệch khỏi quy trình hoạt động bình thường Hãy đi quamột số ví dụ
Hãy xem xét một biểu mẫu đăng ký chẳng hạn
Trang 14Negative Testing Positive Testing
Cố gắng nhập một id email không
hợp lệ vào trường email
Chỉ những id email hợp lệ mới đượcnhập vào trường email
Cố gắng nhập số điện thoại không
hợp lệ vào trường số điện thoại (ký
XML, SQL, v.v trong trường tải lên
hình ảnh
Chỉ tải lên các định dạng hình ảnhhợp lệ như jpg.png, v.v
Như chúng tôi đã nói trước đó, chúng tôi phải đảm bảo trong tất cả cáctrường hợp tiêu cực này, hệ thống của chúng tôi sẽ hoạt động bình thường Hãyxem xét trường hợp nếu ai đó cố gắng nhập một ký tự vào trường số và hệ thốngkhông thể xử lý dữ liệu không mong muốn vì nó đang mong đợi một số và cuốicùng, hệ thống bị treo Hoặc điều gì sẽ xảy ra nếu ai đó cố gắng thực hiệnchèn SQL và xóa tất cả dữ liệu của chúng tôi khỏi cơ sở dữ liệu Chúng tôikhông thể chịu được những tổn thất tiềm tàng như vậy Vì vậy việc kiểm tra âmtính là quan trọng
Tổ chức có trách nhiệm cung cấp sản phẩm chất lượng tốt cho khách hàngcủa mình Để đạt được điều này, người ta phải làm Negative Testing
Là một phần của xác nhận chống lại sự thất bại, một tổ chức phải thực hiệnNegative Testing
Có thể chúng ta không thể xây dựng một hệ thống 100% không có lỗi,nhưng chúng ta phải đảm bảo rằng chúng ta đã làm mọi thứ để ngăn chặn lỗi, đểđạt được điều đó, chúng ta nên thực hiện Negative Testing
Trang 15Tác động là một yếu tố mà chúng tôi phải xem xét Hãy xem xét chúng tôi
đã thực hiện thử nghiệm tích cực trên một trang thương mại điện tử và đảm bảorằng mọi thứ đều ổn Nhưng điều gì sẽ xảy ra nếu có một lỗ hổng trong hệ thốngcủa chúng tôi mà ai đó có thể thực hiện việc chèn SQL và xóa tất cả dữ liệu củachúng tôi Đó sẽ là một vi phạm an ninh lớn Để tránh loại trường hợp này,người ta cũng phải làm
Đối với các ứng dụng mở cho công chúng, chủ yếu là các trang web, chúngtôi phải luôn nhớ rằng chúng tôi không có nhiều quyền kiểm soát quy trình sửdụng của ứng dụng, vì vậy chúng tôi phải thực hiện Negative Testing để đảmbảo rằng tất cả các trường hợp đó đều được bảo vệ và ngăn chặn
Một điều nữa mà chúng ta cần quan tâm là có rất nhiều hacker đen ngoàikia đang tìm cơ hội để phá hoại hệ thống Lấy cắp dữ liệu là một trường hợpquan trọng được đề cập trong negative testing
Khách hàng luôn mong đợi các sản phẩm không có lỗ hổng bảo mật, đểđảm bảo rằng negative testing là điều bắt buộc
Nếu đó là một sản phẩm nhạy cảm như thương mại điện tử, chứng khoántrực tuyến, v.v thì bảo mật và negetive testing là điều bắt buộc
Mối quan tâm duy nhất đối với khách hàng liên quan đến Negative Testing
là chi phí Nhưng một khi tác động được phân tích, khách hàng sẽ quyết định cóthực hiện hay không negative testing
2.1.2 Quy trình thực hiện Kiểm tra bị động(Negative Testing)
Để thực hiện Negative Testing, chúng tôi phải xem xét tất cả các trườnghợp có thể xảy ra Đó là nếu có thể, chúng ta phải xem xét nó trong trường hợpthử nghiệm cho dù đó có phải là cách sử dụng không đúng hay không Ví dụ:nếu chúng ta thấy một trường email, hãy nghĩ về tất cả các đầu vào có thể có,chúng ta có thể đặt ở đó ngoài định dạng email chính xác Tương tự như vậy khi