MỞ ĐẦU Trong thởi đại công nghệ số hiện nay, ta có thể bắt gặp các sản phẩm công nghệ ở tất cả các lĩnh vực: quân sự, y khoa, văn hóa nghệ thuật, đời sống xã hội,… Sự bùng nổ của công nghệ thông tin và sự ra đời của Internet tác động to lớn tới bộ mặt xã hội. Nhu cầu trao đổi thông tin ngày càng tăng, việc sử dụng máy tính không đơn thuần là ngƣời dùng thực thi chức năng chuyên biệt nào đó trong một lĩnh vực cụ thể, mà có thể sử dụng trong tất cả các lĩnh vực, các ngành nghề, với những mục đích khác nhau: làm việc, nghiên cứu, học tập, giải trí, trao đổi thông tin,. Và ngƣời dùng cũng không đơn thuần là một nhóm chuyên gia với trình độ nhất định, mà họ có thể là bất kỳ ai với bất kỳ công việc, bất cứ trình độ, ở bất kỳ lứa tuổi nào. Để có thể đáp ứng thị trƣờng rộng lớn, cực kỳ đa dạng đó, sản phẩm công nghệ thông tin nói chung cũng nhƣ công nghệ phần mềm nói riêng, phải đảm bảo chất lƣợng tốt đồng thời cả chức năng hệ thống lẫn giao diện ngƣời dùng.
Giao tiếp và chức năng là hai mặt tƣơng hỗ và bổ sung cho nhau. Phần mềm có chức năng tốt đến đâu, mà giao diện tồi cũng sẽ gây khó khăn cho ngƣời dùng, làm giảm hiệu quả chức năng hệ thống. Ngƣợc lại, với giao tiếp đƣợc thiết kế tốt, ngƣời dùng có thể dễ dàng sử dụng phần mềm và phát huy tối đa hiệu quả chức năng hệ thống. Kiểm thử là một trong những giai đoạn của quá trình phát triển phần mềm.
Trƣớc khi sản phẩm đƣợc phát hành tất cả các chức năng cũng nhƣ giao diện của phần mềm đều cần qua kiểm thử. Giao diện tuy đƣợc thiết kế tốt nhƣng cũng không thể tránh khỏi các sai sót. Kiểm thử giao diện hiệu quả sẽ phát hiện ra đƣợc các sai sót này, tránh các lỗi về giao diện khi phát hành sản phẩm. Kiểm thử giao diện đứng dƣới vai trò của ngƣời sử dụng, sẽ giúp phần mềm có sự thích ứng phù hợp hơn với thị hiếu và nhu cầu của ngƣời dùng.
Chính vì lẽ đó, kiểm thử giao diện phần mềm là việc hết sức cần thiết, cần nghiên cứu về kiểm thử giao diện để tìm ra phƣơng pháp kiểm thử hiệu quả phù hợp với ứng dụng phần mềm. Luận văn trình bày lý thuyết về giao diện phần mềm, lý thuyết kiểm thử phần mềm, đi sâu vào kiểm thử giao diện phần mềm với phƣơng pháp nghiên cứu theo hƣớng từ khái quát tới chi tiết, lần lƣợt tìm hiểu các khái niệm, các phƣơng pháp, các công cụ kiểm thử giao diện,. Trên cơ sở đó, sẽ có đánh giá khách quan về việc lựa chọn phƣơng pháp hay công cụ kiểm thử giao diện phù hợp đối với ứng dụng đƣợc nghiên cứu. Kết quả nghiên cứu có thể làm tài liệu tham khảo về kiểm thử phần mềm, đồng thời hỗ trợ kiểm thử viên cũng nhƣ các nhà phát triển phần mềm có cơ sở để lựa chọn phƣơng pháp hay công cụ kiểm thử giao diện phù hợp để kiểm thử ứng dụng đƣợc xây dựng.
LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 11 Luận văn bao gồm năm chƣơng. Chƣơng 1 trình bày các lý thuyết tổng quan về kiểm thử phần mềm: các khái niệm cơ bản, tiến trình kiểm thử phần mềm, các phƣơng pháp, kỹ thuật kiểm thử phần mềm. Chƣơng 2 trình bày các kiến thức về giao diện và các vấn đề cần lƣu ý khi thiết kế và kiểm thử giao diện phần mềm. Chƣơng 3 tập trung vào kiểm thử giao diện phần mềm, nêu các hƣớng giải quyết và các vấn đề cần kiểm thử giao diện.
Chƣơng 4 cũng nói về kiểm thử giao diện nhƣng đi sâu vào từng loại ứng dụng phần mềm. Chƣơng 5 đƣa ra ví dụ áp dụng các kiến thức đã đƣợc nêu trong bốn chƣơng đầu để kiểm thử giao diện phần mềm “Quản lý bán hàng”. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 12 CHƢƠNG I – TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM 1. Các khái niệm cơ bản 1.
Lỗi phần mềm Khái niệm Có rất nhiều định nghĩa khác nhau về lỗi phần mềm (bug), nhƣng nhìn chung, có thể phát biểu một cách tổng quát: “Lỗi phần mềm là sự không đồng nhất giữa chương trình với đặc tả của nó”. Cụ thể là: Phần mềm không thực hiện đúng những gì đã nêu trong đặc tả. Phần mềm thực hiện những hành vi mà đặc tả đã nêu không đƣợc thực hiện. Phần mềm thực hiện những hành vi không đƣợc nêu trong đặc tả.
Phần mềm không thực hiện các yêu cầu không đƣợc nêu trong đặc tả, nhƣng nên thực hiện nó. Phần mềm khó hiểu, khó sử dụng,. Các dạng lỗi phần mềm Sai sót (Error): Error là một trạng thái của hệ thống, là một sự nhầm lẫn hay sự hiểu sai trong quá trình phát triển phần mềm của ngƣời phát triển. Error có thể gây nên hỏng hóc hệ thống nếu không có các hành động khắc phục.
Lỗi (Fault / Defect): xuất hiện trong phần mềm nhƣ là kết quả của error gây ra. Hỏng hóc (Failure): Failure đƣợc coi là xảy ra khi các hành vi bên ngoài hệ thống không thực hiện đúng nhƣ đặc tả hệ thống đã đƣợc quy định trƣớc. Nó là kết quả của một lỗi xuất hiện làm cho hệ thống không thể hoạt động hoặc hoạt động nhƣng cho kết quả không nhƣ mong đợi. Chi phí cho việc sửa lỗi Vòng đời phát triển phần mềm (chu trình phát triển phần mềm) đƣợc chia làm nhiều giai đoạn.
Bao gồm: Lập kế hoạch Thiết kế Mã hóa và viết tài liệu Kiểm thử và sửa lỗi LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 13 Phát hành và bảo trì Theo thống kê bảo trì là phần chi phí chính của phần mềm và kiểm thử là hoạt động chi phí đắt thứ hai, ƣớc tính khoảng 40% (15/33) chi phí trong quá trình phát triển ban đầu của sản phẩm phần mềm [6]. Kiểm thử cũng là phần chi phí chính của giai đoạn bảo trì do phải tiến hành kiểm thử lại những thay đổi trong quá trình sửa lỗi và đáp ứng yêu cầu ngƣời dùng. Kiểm thử và sửa lỗi có thể đƣợc thực hiện tại bất kỳ giai đoạn nào của vòng đời phần mềm. Tuy nhiên chi phí cho việc tìm và sửa lỗi tăng một cách đáng kể trong quá trình phát triển.
Trong tài liệu “Software Engineering” của Boehm (1976), có trích dẫn kết quả nghiên cứu của IBM, GTE và TRW, tổng kết rằng lỗi đƣợc phát hiện càng muộn thì chi phí cho việc sữa lỗi càng lớn [6]. Chi phí tăng theo hàm mũ nhƣ Hình 1.1 - Chi phí sửa lỗi theo thời gian Nhƣ vậy, có thể thể thấy kiểm thử là một khâu rất quan trọng trong quá trình phát triển phần mềm, kiểm thử càng sớm, càng chặt chẽ thì sẽ càng giảm đƣợc những chi phí phát sinh không đáng có cho việc sửa lỗi. Kiểm thử phần mềm Kiểm thử phần mềm là quá trình thực thi hệ thống phần mềm để xác định xem phần mềm có thực hiện đúng với đặc tả hay không và thực hiện trong môi trƣờng mong đợi hay không. Xác minh: Chỉ ra sản phẩm có đáp ứng đƣợc các đặc tả yêu cầu hay không.
Đƣợc thực hiện mỗi khi kết thúc một pha trong quy trình sản xuất, nó giúp quyết định xem sản phẩm có đáp ứng các yêu cầu tại thời điểm kiểm tra, trƣớc khi bắt đầu pha kế tiếp. Thẩm định: Chỉ ra sản phẩm có đáp ứng đƣợc yêu cầu ngƣời sử dụng hay không. Thực hiện khi kết thúc quá trình sản xuất, nhằm đảm bảo sản phẩm đã đƣợc sản xuất là đúng nhƣ mong đợi. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.
Tiến trình kiểm thử phần mềm Kiểm thử đƣợc thực thi ở các mức khác nhau bao gồm cả hệ thống hoàn chỉnh hay các phần của hệ thống trong suốt chu trình phát triển phần mềm. Một hệ thống phần mềm phải trải qua bốn giai đoạn kiểm thử trƣớc khi nó đƣợc triển khai. Bốn giai đoạn đó đƣợc biết nhƣ là bốn mức kiểm thử: unit, integration, system và acceptance. Các giai đoạn kiểm thử tƣơng ứng với các giai đoạn khác nhau trong tiến trình phát triển phần mềm và đƣợc khái quát hóa qua mô hình chữ V – Hình 1.2 – Các giai đoạn phát triển và kiểm thử trong mô hình chữ V Trong đó: Các yêu cầu: đƣa ra các yêu cầu về sản phẩm Đặc tả chức năng: xây dựng phần mềm để đáp ứng với đề nghị.
Thiết kế mức cao: kiến trúc hệ thống ở mức tổng thể. Thiết kế mức thấp (mức chi tiết): chi tiết các đặc tả của các mô-đun trong kiến trúc. Lập trình: mã hóa các mô-đun. Kiểm thử đơn vị Kiểm thử đơn vị là mức thấp nhất của kiểm thử trong mô hình chữ V.
Giai đoạn này đƣợc thực hiện bởi các lập trình viên. Họ chia nhỏ và kiểm thử từng đơn vị chƣơng trình, nhƣ các thủ tục, các hàm, các phƣơng thức, hay các lớp. Mục đích của LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 15 kiểm thử đơn vị là bảo đảm thông tin đƣợc xử lý và xuất là chính xác, trong mối tƣơng quan với dữ liệu nhập và chức năng của đơn vị đó. Điều này thƣờng đòi hỏi tất cả các nhánh bên trong đơn vị, từng mô-đun đều phải đƣợc kiểm tra để phát hiện nhánh phát sinh lỗi.
Một nhánh thƣờng là một chuỗi các lệnh đƣợc thực thi trong một đơn vị. Thực tiễn đã chỉ ra rằng, việc phát hiện sớm các lỗi ở mức kiểm thử đơn vị sẽ giảm đƣợc rất nhiều chi phí cho kiểm thử ở các mức sau đó. Kiểm thử tích hợp Sau khi kết thúc quá trình kiểm thử đơn vị, các mô-đun đƣợc tích hợp lại tạo thành hệ thống con có cấu trúc lớn hơn, đồng thời cần tiến hành kiểm thử tích hợp. Kiểm thử tích hợp đƣợc thực thi với sự kết hợp của cả lập trình viên và các kỹ sƣ kiểm thử tích hợp.
Kết quả khi kết thúc giai đoạn kiểm thử tích hợp là dựng nên một hệ thống ổn định, hợp lý, có thể chịu đƣợc những rung động ở mức kiểm thử hệ thống. Mục tiêu chính của kiểm thử tích hợp đó là: Phát hiện lỗi tƣơng tác giữa các đơn vị Tích hợp các đơn vị thành hệ thống con và hệ thống hoàn chỉnh để chuẩn bị cho kiểm thử ở mức hệ thống. Các kỹ thuật kiểm thử áp dụng ở mức kiểm thử tích hợp: Kiểm thử cấu trúc: kiểm thử cấu trúc mã nguồn hệ thống. Kiểm thử chức năng: kiểm thử sự đáp ứng tốt các chức năng đặc tả của hệ thống.