Đặt vấn đề Công nghệ thông tin là một trong những thuật ngữ đƣợc nhắc đến nhiều nhất hiện nay, nó xuất hiện trên các mặt báo, các phƣơng tiện truyền thông, trên mạng Internet cho tới những tài liệu cũng nhƣ báo cáo chuyên ngành. Điều này cũng dễ hiểu vì công nghệ thông tin đƣợc coi là một cuộc cách mạng cho sự phát triển của xã hội loài ngƣời. Kể từ năm 1981 khi chiếc máy vi tính đầu tiên của IBM đƣợc giới thiệu trên thị trƣờng đánh dấu một mốc quan trọng cho sự tiến bộ của khoa học kỹ thuật. Cho tới thời điểm hiện tại, trải qua một khoảng thời gian rất ngắn so với chiều dài lịch sử của xã hội loài ngƣời, tuy nhiên công nghệ thông tin đã phát triển rất nhanh (còn đƣợc diễn tả bằng cụm từ: “bùng nổ”).
Công nghệ thông tin đã đƣợc ứng dụng trong hầu hết các lĩnh vực của xã hội, và thực tế đã chứng minh đƣợc tầm quan trọng của nó. Trong hai thập kỷ qua phần mềm đã trở thành một thành phần của hầu hết các doanh nghiệp. Hầu nhƣ tất cả các doanh nghiệp hoạt động trong mọi lĩnh vực tại Việt Nam cũng nhƣ trên toàn Thế Giới đều sử dụng phần mềm. Phần mềm đƣợc áp dụng trong việc hỗ trợ phát triển, sản xuất, tiếp thị, và hỗ trợ cho các sản phẩm - dịch vụ của doanh nghiệp.
Thúc đẩy sự phát triển của công nghệ thông tin luôn là chính sách đƣợc ƣu tiên hàng đầu của các quốc gia nhằm làm tiền đề cho sự phát triển của khoa học kỹ thuật và kinh tế - xã hội. Công nghệ thông tin là ngành ứng dụng công nghệ vào quản lý và xử lý thông tin, đặc biệt trong các cơ quan, doanh nghiệp. Ở Việt Nam thì khái niệm công nghệ thông tin đƣợc hiểu theo nghĩa sau: “Công nghệ thông tin là tập hợp các phƣơng pháp khoa học, các phƣơng tiện và công cụ kỹ thuật hiện đại - chủ yếu là kỹ thuật máy tính và viễn thông - nhằm tổ chức khai thác và sử dụng có hiệu quả các nguồn tài nguyên thông tin rất phong phú và tiềm năng trong mọi lĩnh vực hoạt động của con ngƣời và xã hội”. Công nghệ thông tin là sự kết hợp của hạ tầng phần cứng và nền tảng phần mềm.
Hạ tầng phần cứng sẽ ngày càng mạnh mẽ là tiền đề cho phép phần mềm cũng ngày z 11 càng lớn và phức tạp hơn. Chính vì lý do này mà Công nghệ phần mềm (quy trình phát triển phần mềm) đã đƣợc chú tâm bàn thảo từ rất sớm nhằm tìm ra những phƣơng pháp để phát triển phần mềm thuận tiện có chất lƣợng cao đáp ứng tốt nhu cầu ngày càng đa dạng và phức tạp. Hầu hết các quy trình phát triển phần mềm đều trải qua các bƣớc từ xác định yêu cầu, phân tích, xây dựng, kiểm thử, cho tới triển khai và bảo trì. Trong đó kiểm thử phần mềm là một công việc khá phức tạp, tốn nhiều công sức và cũng là điều kiện tiên quyết cho một sản phẩm phần mềm có chất lƣợng tốt.
Bất kỳ sản phẩm phần mềm nào cho dù đã áp dụng kỹ thuật kiểm thử tiên tiến nhất hiện nay đều có phát sinh lỗi. Một số lỗi đã đƣợc phát hiện và chỉnh sửa trong thời gian lập trình. Một số khác đƣợc tìm ra và chỉnh sửa trong các hình thức kiểm thử (vd: kiểm thử module). Các doanh nghiệp phần mềm đều nhận ra một thực tế là có nhiều lỗi phần mềm vẫn chƣa đƣợc phát hiện và một số sẽ đƣợc sửa sau đó thông qua những bản vá lỗi hoặc nâng cấp.
Kiểm thử là điều kiện tiên quyết cho một phần mềm hoàn thiện, tuy nhiên với kỹ thuật kiểm thử hiện nay việc đảm bảo cho một phần mềm hoàn hảo (không có lỗi) là một việc rất khó khăn, tốn thời gian, và tƣởng chừng nhƣ không thể. Theo thống kê của Tassey năm 2002, thì lỗi trong những phần mềm đóng gói gây thiệt hại cho nền kinh tế Mỹ khoảng 59,5 tỷ USD [9]. Kiểm thử chiếm khoảng 25% tới 50% tổng chi phí phát triển một phần mềm. Bộ phận kiểm thử thƣờng gồm các kỹ sƣ với vai trò là kiểm thử viên, ngƣời sử dụng công cụ, và những ngƣời phát triển công cụ kiểm thử.
Ngân sách và con ngƣời đều đóng vai trò quan trọng vì một sản phẩm trong quá trình xây dựng phải đƣợc kiểm thử một cách tốt nhất và hiệu quả nhất. Vào năm 2008, tổng doanh thu của phần mềm Việt Nam đạt trên 500 triệu USD (tổng doanh thu trên toàn thế giới vào khoảng 519 tỷ USD - theo: http://softwaremag. Số lƣợng các kỹ sƣ và lập trình viên tại Việt Nam năm 2008 vào khoảng 13. Những con số trên dựa trên tổng kết của Hiệp hội Doanh nghiệp phần mềm Việt Nam (vinasa: http://www.
Giảm chi phí phát triển phần mềm và nâng cao chất lƣợng phần mềm là mục tiêu quan trọng của các ngành công nghiệp phần mềm Việt Nam. Một nghiên cứu tƣơng tự cũng cho biết rằng z 12 các ngành công nghiệp phần mềm bị thiệt hại về kinh tế, vì không có đủ cơ sở hạ tầng cho việc kiểm thử phần mềm. Hiện nay có khá nhiều công cụ kiểm thử đƣợc giới thiệu trên thị trƣờng. Tuy nhiên, vẫn còn phải xem xét về khả năng đáp ứng đƣợc nhu cầu về đảm bảo chất lƣợng phần mềm xét trên nhiều khía cạnh khác nhau.
Các công cụ kiểm thử có thể kiểm thử phần mềm với một số cấp độ tự động, qua đó những kiểm thử viên có thể giành thời gian để xem xét và giải quyết những vấn đề thuộc phạm vi có nhiều rủi ro hơn, tuy nhiên, tính tự động của các công cụ mới chỉ dừng ở các kỹ thuật đơn giản và những kịch bản kiểm thử bao gồm chuỗi sự kiện nhấn chuột hoặc bàn phím. Kiểm thử viên mong đợi các công cụ kiểm thử hiệu quả và linh hoạt hơn với các tính năng tự động cao để có thể theo kịp sự phát triển rất nhanh trong công nghệ phần mềm hiện nay. Mục tiêu của Luận văn là nghiên cứu kỹ thuật phát triển một công cụ kiểm thử tự động, có thể kiểm thử một sản phẩm phần mềm phức tạp một cách hiệu quả với yêu cầu tác động của con ngƣời là ít nhất. Nội dung của đề tài Xuất phát từ việc phân tích và mục tiêu nêu trên, nội dung của đề tài luận văn sẽ bao gồm những vấn đề chính sau: - Nghiên cứu, tìm hiểu các vấn đề tổng quan về kiểm thử phần mềm.
- Nghiên cứu kiến trúc và các thể loại kiểm thử phần mềm. - Nghiên cứu xây dựng công cụ kiểm thử phần mềm tự động trên môi trƣờng Dot Net và thử nghiệm. Cấu trúc luận văn Luận văn sẽ đƣợc chia thành 3 chƣơng chính dựa vào nội dung nêu trên: - Chƣơng 1: Khái quát về kiểm thử phần mềm. - Chƣơng 2: Phƣơng pháp và các thể loại kiểm thử phần mềm.
- Chƣơng 3: Nghiên cứu xây dựng công cụ kiểm thử phần mềm tự động trên môi trƣờng. z 13 CHƢƠNG 1: KHÁI QUÁT VỀ KIỂM THỬ PHẦN MỀM 1.1 Tổng quan Kiểm thử phần mềm là một trong những khâu quan trọng của quy trình phát triển phần mềm nhằm kiểm tra xem phần mềm làm ra có những lỗi gì cần khắc phục. Kiểm thử không thể chứng minh đƣợc phần mềm là hết lỗi mà nó chỉ giúp cho ngƣời viết mã nguồn tìm ra và có biện pháp khắc phục càng nhiều lỗi càng tốt. Bản chất của kiểm thử phần mềm là các cách thức làm việc với máy tính và chƣơng trình, tuy nhiên với những phần mềm lớn, việc kiểm thử cũng yêu cầu có sự phối hợp của nhiều nhóm chuyên môn phụ trách các thành phần riêng biệt, cho nên kiểm thử cũng cần các kĩ năng của con ngƣời.
Để thực hiện tốt công việc kiểm thử, ngoài nắm vững các kĩ thuật kiểm thử điển hình, kiểm thử viên cũng cần xây dựng kế hoạch kiểm thử, chuẩn bị dữ liệu kiểm thử, tiến hành kiểm thử, viết báo cáo về kết quả kiểm thử, và cần biết quản lí toàn bộ công việc kiểm thử. Kiểm thử cần đƣợc nhìn theo nhiều góc độ khác nhau liên quan tới phần mềm: kiểm thử chức năng, kiểm thử hiệu năng, cấu hình, an ninh. và liên quan tới qui trình kiểm thử: kiểm thử đơn vị, kiểm thử tích hợp, kiểm thử hệ thống, kiểm thử chấp nhận; đồng thời phải thực hiện quản lí toàn bộ quá trình kiểm thử: ghi lại hoàn cảnh lỗi, việc sửa chữa, kiểm thử rà lại.2 Vai trò của kiểm thử phần mềm Các lỗi trong phần mềm không chỉ làm phiền phức và bực mình cho ngƣời dùng mà chúng còn gây tổn thất rất lớn cho nền kinh tế. Đơn cử hàng năm nền kinh tế Mỹ thiệt hại khoảng 59,5 tỷ USD do lỗi phần mềm gây ra (thông số đƣợc công bố bởi Viện Công nghệ và Tiêu chuẩn quốc gia (NIST) thuộc Bộ Thƣơng mại Mỹ).
Theo Giám đốc Arden Bement của NIST, hiện nay mọi ngành ở Mỹ gần nhƣ đều phụ thuộc vào phần mềm để phát triển, từ khâu sản xuất đến khâu phân phối và hỗ trợ khách hàng. Bởi thế, các lỗi kỹ thuật phần mềm là vô cùng nguy hiểm. z 14 Những ngƣời sử dụng phần mềm chịu thiệt hại một nửa và nửa còn lại dành cho các nhà phát triển và kinh doanh phần mềm. Nghiên cứu cũng cho thấy, việc kiểm thử để phát hiện và loại bỏ những khiếm khuyết ngay từ ban đầu có thể giảm mức thiệt hại khoảng 22,2 tỷ USD cho Mỹ trong vòng 1 năm.
Hiện nay, có hơn một nửa số lỗi không đƣợc phát hiện cho đến khi phần mềm đã đƣợc tung ra thị trƣờng. Chính vì lý do này mà Viện Hàn lâm Khoa học Mỹ đã đề nghị các nhà lập pháp thông qua điều luật yêu cầu những hãng sản xuất phần mềm phải có trách nhiệm về vấn đề bảo mật và lỗi phần mềm. Theo các số liệu của tạp chí SoftwareMag (softwaremag.com) năm 2007 tổng doanh thu của CNPM trên toàn Thế Giới là 451.8 tỷ USD và tăng 14,7% so với năm 2006. Bên cạnh sự phát triển mạnh mẽ của nghành công nghiệp phần mềm thì những lỗi – khiếm khuyết của phần mềm cũng xảy ra ngày càng thƣờng xuyên, dẫn tới những tổn thất do nó gây ra cũng ngày càng nặng nề hơn.
Dƣới đây là một vài ví dụ điển hình về sự tổn thất đó. Một trong những lỗi phần mềm điển hình về mức độ thiệt hại là vào tháng 4 năm 1999, một lỗi phần mềm đã gây ra lỗi hệ thống phóng tên lửa Quân sự của Mỹ làm thiệt hại 1. Đây có lẽ là một lỗi phần mềm gây thiệt hại kinh tế lớn nhất trong lịch sử công nghiệp phần mềm.