BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN
Môn:Kiểm Thử Phần Mềm ĐỀ TÀI: CASE tools for deverlopment and Software Quality Assurance ............................................................................
NHÓM 11 GV hướng dẫn: Nhóm thực hiện gồm các thành viên: 1. Nguyễn Phương Nam 2. Nguyễn Hữu Thông 3. Trần Văn Vinh Hà Nội, Ngày 14 Tháng 6 Năm 2016 1
Mở Đầu Hàng loạt các công cụ chuyên dụng trên máy vi tính ngày càng tăng (trên thực tế phần mềm gói) đã được cung cấp để bộ phận kỹ thuật phần mềm kể từ những thập niên 1990. Mục đích của những công cụ này là để thực hiện các công việc phát triển và duy trì đội hiệu quả hơn và hiệu quả hơn. Đặt tên công cụ CASE (máy tính hỗ trợ kỹ thuật phần mềm), họ cung cấp: ■ Tiết kiệm đáng kể nguồn tài nguyên cần thiết cho phát triển phần mềm ■ Ngắn hơn thời gian để thị trường ■ Tiết kiệm đáng kể nguồn tài nguyên cần thiết để bảo trì ■ Tái sử dụng nhiều hơn do tăng tiêu chuẩn của hệ thống phần mềm ■ Giảm thế hệ của các khiếm khuyết về cùng với gia tăng xác định "tương tác"
các khiếm khuyết trong quá trình phát triển. Rõ ràng là đặc điểm cuối cùng này là một phần lớn thu hút sự quan tâm của các nhà phân tích chất lượng phần mềm cho trường hợp các công cụ. Trong ánh sáng của các đặc điểm của họ, các công cụ CASE phục vụ như là một nguồn cho giảm bớt số lượng nỗ lực chi tiêu phát triển ngày càng phức tạp và hệ thống phần mềm lớn . các phần sau sẽ đối phó với các đối tượng: ■ Một công cụ CASE là gì? ■ Làm thế nào có thể công cụ CASE góp phần vào việc cải thiện chất lượng sản phẩm phần mềm? ■ Làm thế nào có thể công cụ CASE góp phần vào việc cải thiện chất lượng phần mềm Bảo trì? ■ Làm thế nào và đến mức độ nào có thể công cụ CASE góp phần duy trì quá trình phát triển lịch trình và phù hợp với ngân sách?
2
Mục Lục
I. 1.
Khái niệm CASE tool Định nghĩa:
CASE tool : là những công cụ phần mềm máy tính để phát triển phần mềm mà chúng hỗ trợ người phát triển thực hiện một hoặc nhiều pha trong vòng đời của phần mềm và/hoặc hỗ trợ việc bảo trì phần mềm.
Tổng quát của định nghĩa cho phép trình biên dịch, gỡ lỗi các hệ thống tương tác, hệ thống quản lý cấu hình và hệ thống kiểm tra tự động được coi là công cụ CASE CASE có các loại ICASE, Upper CASE và Lower CASE. ICASE nghĩa là "Intergrated" CASE hay là CASE tích hợp, "Upper" là công cụ ý tưởng hay chỉ là thiết kế logic, 3
"Lower" là công cụ chỉ hỗ trợ lập trình. Trong những công cụ trên, chúng ta sẽ tập trung vào các công cụ CASE hỗ trợ tối thiểu một giai đoạn phân tích và có thể hỗ trợ các giai đoạn khác; chúng được gọi chung là "CASE". Chúng ta cũng xác định những giai đoạn hiện nay đang được hỗ trợ (dĩ nhiên là các giai đoạn này có thể thay đổi khi phát hành). Môi trường CASE chuẩn bao gồm một kho chứa, các công cụ đồ hoạ, phần mềm soạn thảo văn bản, phần mềm giao diện kho chứa, phần mềm đánh giá, và giao diện người sử dụng.
Một kho chứa là một từ điển dữ liệu hỗ trợ định nghĩa về các kiểu đối tượng khác nhau và quan hệ giữa các đối tượng đó. Các công cụ đồ hoạ hỗ trợ cho việc phát triển dạng sơ đồ và đánh giá sự hoàn chỉnh của sơ đồ dựa vào các luật đã được xác định trước. Phần mềm văn bản cho phép định dạng tên, nội dung, và chi tiết các phần tử trong kho chứa. Phần mềm giao diện là bộ biên dịch xác định dạng dữ liệu được dùng (đồ hoạ hoặc văn bản). Phần mềm đánh giá là trí tuệ của CASE. Phần mềm này phân tích các đầu vào của sơ đồ hoặc kho chứa và xác định xem chúng có cú pháp hoàn chỉnh hay không (ví dụ có thoả mãn các định nghĩa của kiểu dữ liệu thành phần không), và chúng có tương thích với các đối tượng đang tồn tại khác trong ứng dụng hay không. Giao diện người dùng cung cấp các màn hình và các báo cáo để xử lý tương tác và gián tiếp. 2.
Sự hỗ trợ của các công cụ CASE cho người phát triển hệ thống được thể hiện trong bảng sau:
Kiểu công cụ CASE
Hỗ trợ 4
Sửa đổi và biểu đồ Truy vấn kho chứa Viết tài liệu tự động Hỗ trợ thiết kế
Sửa đổi mã Sinh mã
Quản lý cấu hình Kiểm thử phần mềm Kỹ nghệ ngược
Quản lý dự án và chỉ số phần mềm
II.
Sửa đổi văn bản và biểu đồ, tạo biểu đồ thiết kế dựa trên các bản ghi trong kho chứa Hiển thị các phần của văn bản thiết kế,
biểu đồ… theo dõi yêu cầu Tự động sinh ra các tài liệu được yêu cầu theo các bản ghi cập nhật trong kho chứa Việc sửa đổi thiết kế được ghi lại bởi người phân tích hệ thống và quản lý từ điển dữ liệu Biên dịch, thông dịch và gỡ lỗi tương tác mã cho ngôn ngữ lập trình cụ thể hoặc công cụ phát triển Chuyển từ các bản ghi thiết kế sang mẫu hoặc ứng dụng phần mềm thích hợp với ngôn ngữ lập trình (hoặc công cụ phát triển) Quản lý phiên bản của tài liệu thiết kế và mã phần mềm, kiểm soát sự thay đổi trong thiết kế và mã phần mềm. Kiểm thử tự động, kiểm thử tải và quản lý kiểm thử và sửa bản ghi Xây dựng kho chứa phần mềm và tài liệu thiết kế, dựa trên mã của hệ thống phần mềm thừa kế. Khi kho chứa của phần mềm đã có, nó có thể được cập nhật và sử dụng để tự động tạo ra phiên bản mới của hệ thống Hỗ trợ việc quản lý dự án bằng cách theo dõi lịch và tính toán năng suất, chỉ số lỗi
Đóng góp của công cụ CASE tới việc cải thiện chất lượng
phần mềm: Đóng góp của CASE tool cho chất lượng sản phẩm phần mềm Lợi ích của các công cụ CASE đối với chất lượng sản phẩm phần mềm đó là làm giảm một số lượng lớn các lỗi trong các pha phát triển phần mềm. 5
Để đánh giá được lợi ích này, chúng ta cùng xem xét việc cải tiến chất lượng mà các công cụ CASE thực hiện được trong 9 nguyên nhân gây ra lỗi (được liệt kê trong phần 2.3). Đánh giá của chúng ta sẽ bao gồm cả công cụ CASE cổ điển và thực. Nguyên nhân gây ra lỗi 1. Lỗi trong xác định yêu cầu
2. Việc thất bại trong giao tiếp giữa khách hàng và người phát triển
3. Sự chênh lệch có chủ ý trong yêu cầu phần mềm
4. Những lỗi trong thiết kế theo logic
Công cụ CASE cổ điển
Công cụ CASE thực yêu cầu Hầu như không đóng góp
Việc kiểm tra tính cố định của yêu cầu hay sự chính xác bằng máy tính gần như hiếm xảy ra. Hầu như không đóng góp Trong hầu hết các trường hợp, việc xác định sự thất bại trong giao tiếp bằng máy tính là không thể. Những thất bại này chỉ có thể được xác định và ngăn chặn khi có thay đổi hoặc khi những thông tin khác được tìm thấy trở nên mâu thuẫn với những thông tin đã có. Đóng góp lớn Dựa trên những thông tin đã có, những chênh lệch từ yêu cầu được xác định như những mâu thuẩn và được liệt vào lỗi. Những chênh lệch này có thể được xác định bằng các công cụ theo dõi yêu cầu đã có và công cụ truy vấn (cross- referenced query tools). Đóng góp lớn • Việc thiết kế lại (reengineering) cho phép sản
sinh tự động bản thiết kế 6
5. Lỗi trong coding
6. Không làm đúng với những chỉ dẫn về code và viết tài liệu
7. Những thiếu xót xảy ra trong quá trình test
cho những hệ thống kế thừa và những bản ghi của chúng. • Việc sử dụng nơi lưu trữ nhằm xác định những thiếu xót trong thiết kế, những thay đổi và những mâu thuẫn mới có với những bản ghi đã có (bản ghi đã được lưu trữ từ trước). Đóng góp rất lớn Áp dụng Đóng góp rất lớn Áp dụng những trình biên dịch các công cụ CASE bên (compiler, interpreters) và dưới vào nhằm tạo ra một những trình gỡ lỗi tương cách tự động những đoạn
tác (debugger) vào. code tương thích hoàn toàn với thiết kế có sẵn. Thêm vào đó, vì code được tự động nên không có lỗi nào xảy ra. Đóng góp có giới hạn Sử Đóng góp rất lớn dụng những trình biên tập Áp dụng những công cụ văn bản và kiểm định CASE bên dưới vào nhằm code để hỗ trợ chuẩn hóa tạo ra những đoạn code cấu trúc, phong cách của đảm bảo làm đúng với văn bản, code và làm việc những chỉ dẫn về code và xác định những sai lệch viết tài liệu. không đúng dễ dàng hơn. Đóng góp lớn Những Đóng góp lớn Áp dụng công cụ kiểm tra tự động những công cụ CASE bên thực hiện hồi quy và kiểm dưới, đặc biệt là những tra việc nạp một cách tự công cụ CASE được tích động. Việc quản lý test và hợp vào để ngăn chặn lỗi sửa lỗi bằng máy tính làm trong coding và giảm lỗi giảm lỗi. thiết kế. Ứng dụng của những công cụ lưu trữ tới việc sửa lỗi và thay đổi trong suốt quá trình phát
triển nhằm ngăn ngữa hầu hết các lỗi của phần mềm. 7
8. Lỗi thủ tục
Đóng góp lớn Việc điều khiển các phiên bản, xem xét lại và cài đặt phần mềm bằng các công cụ quản lý quản lý cấu hìn
9. Lỗi tài liệu
Đóng góp có giới hạn Áp dụng duy nhất trình biên tập văn bản vào
III.
1.
2.
3.
Đóng góp có giới hạn Sử dụng những bản tài liệu đầy đủ và luôn cập nhật
làm việc ngăn ngừa các lỗi bảo trì gây ra bởi những tài liệu không đầy đủ hoặc thiếu chính xác, đặc biệt nếu thiết kế đã được sửa lại nhiều lần Đóng góp lớn Sử dụng nơi lưu trữ một cách tự động nhằm sinh ra những bản tài liệu đầy đủ và luôn cập nhật trước mỗi lần sửa lỗi và thay đổi
Đóng góp của CASE tool cho chất lượng bảo trì phần mềm Các công cụ CASE có mặt trong nhiều loại của chất lượng bảo trì phần mềm theo nhiều cách khác nhau. Bảo trì sửa chữa (Corrective maintenance): Tài liệu của phần mềm được đã được cập nhật và CASE được đưa ra đầy đủ sẽ giúp tìm ra nguyên nhân gây lỗi (failure) của phần mềm một cách dễ dàng và chính xác hơn. Các câu truy vấn cross-referenced cho phép xác định trước kết quả của kế hoạch sửa chữa đang đề ra một cách tốt hơn. Sửa chữa bằng các công cụ CASE tích hợp hay bên dưới hỗ trợ coding tự động mà sẽ không có lỗi (error) lập trình nào cũng như tài liệu tự động của việc sửa chữa. Bảo trì thích nghi (Adaptive maintenance): PTIT Tài liệu phần mềm đầy đủ và được cập nhật bởi các công cụ CASE cho phép xem xét kĩ lưỡng khả năng thích nghi của gói phần mềm đối với ứng dụng mới, người dùng mới. Bảo trì cải thiện chức năng (Functional improvement maintenance):
Việc sử dụng kho chưá cho phép những người thiết kế có thể đảm bảo tính nhất quán của các ứng dụng mới, các cải tiến mới với các hệ thống phần mềm vốn có. Các câu truy vấn kho chứa cross-referenced cho phép lên kế hoạch cho việc thay đổi, thêm chức năng một cách dễ dàng hơn 8
IV.
Các thay đổi và việc thêm các chức năng thực hiện bằng các công cụ CASE tích hợp hay bên dưới cho phép coding tự động mà không có bất cứ lỗi (error) coding nào cũng như tài liệu tự động của các thay đổi và sửa chữa
Đóng góp của CASE tool cho quản lý dự án
Phương pháp sử dụng CASE nâng cao mang lại tính kinh tế cao hơn phương pháp thông thường. Chất lượng của việc quản lý cả hai dự án là giống nhau với việc ước lượng lịch biểu và tài nguyên dưới mức yêu cầu. Thông thường, việc áp dụng các công cụ CASE được mong đợi sẽ làm giảm giá thành và thời gian phát triển của dự án (“shorter time to market”). Tuy nhiên, vai trò của các công cụ CASE đối với các khía cạnh chất lượng của quản lý dự án (gồm: điều khiển chi phí và thời gian) là trọng điểm sự quan tâm của chúng ta. Hiện nay, đã có trường hợp sử dụng công cụ CASE hiện đại làm giảm độ lệch
giữa kinh phí thực thi và lịch biểu theo kế hoạch, đặc biệt bởi vì chúng ngăn ngừa lượng lỗi (error) và cho phép sửa lỗi nhanh, dễ dàng hơn khi có yêu cầu. Để việc quản lý dự án được cải thiện tốt hơn, công cụ điều khiển dự án (ở đây được xem là loại của các công cụ CASE cổ điển) và các phương pháp luận ước lượng thời gian, kinh phí được cải thiện phải được phát triển. 4. Demo case tool
Giới thiệu về selenium
1. •
Sử dụng selenium để viết test case Selenium là một công cụ mã nguồn mở. Các thử nghiệm sau đó có thể chạy trên các trình duyệt hiện đại nhất Selenium triển khai trên nền tảng Window , Linux, Mac Nó cho phép recording, editing, và debugging tests. Kiểm thủ có thể được exported ở hầu hết các ngôn ngữ như HTML, JAVA, .NET,PERL, RUBY, … Selenium có sự hỗ trợ của các nhà cung cấp trình duyệt lớn hỗ trợ.
9
test case là cả đoạn code, và dữ liệu test là các giá trị nhập vào Test1, Test2, Test3 và Đăng ký thành công Như vậy, để tận dụng tối đa lợi thế test tự động, chúng ta viết một vòng lặp for() và đọc kết quả test từ 1 danh sách nào đó - như excel rồi truyền vào các vị trí này. Sau đây la code test case sử dụng selenium về đăng kí tài khoản Gmail. package com.example.tests; import com.thoughtworks.selenium.*; import org.junit.After; import org.junit.Before; import org.junit.Test; import java.util.regex.Pattern; public class test case selenium extends SeleneseTestCase { @Before public void setUp() throws Exception { selenium = new DefaultSelenium("localhost", 4444, "*chrome", " />selenium.start(); } @Test public void testTest case selenium() throws Exception { selenium.open("/"); selenium.click("id=link-signup"); selenium.waitForPageToLoad("10000"); selenium.click("id=submitbutton"); selenium.click("id=TermsOfService"); selenium.click("id=Personalization"); selenium.click("id=submitbutton");
selenium.waitForPageToLoad("10000"); verifyTrue(selenium.isTextPresent("Bạn không được để trống trường này.")); 10
Giới thiệu về CSE HTML Validator • CSE HTML Validator là gì: CSE HTML Validator for Microsoft Windows là một công cụ kiểm tra CSS, HTML, XHTML mạnh mẽ, dễ sử dụng. Bên cạnh đó, nó còn trang bị một công cụ kiểm tra SEO, liên kết, khả năng truy cập và trình soạn thảo được tích hợp. Chỉ cần mở một tài liệu HTML, XHTMLL hoặc CSS bằng CSE HTML Validator Pro và sau đó nhấn F6, chương trình sẽ thực hiện mọi thao tác cho bạn. Những lỗi cú pháp, cảnh báo và tin nhắn khác sẽ xuất hiện bên dưới nguồn tài liệu của bạn. Đơn giản, chỉ cần nhấp chuột lên một trong những tin nhắn đó và bạn sẽ phát hiện ra vị trí mà tài liệu của mình gặp vấn đề. Sửa chữa vấn đề này với trình soạn thảo được tích hợp, kiểm tra lại tài liệu để đảm bảo vấn đề đã được khắc phục và sau đó lưu lại nó khi bạn đã hoàn tất.
Ví dụ: <html> <head> <style> .error {color: #FF0000;} </style> </head> <body> // define variables and set to empty values $nameErr = $emailErr = $genderErr = $websiteErr = ""; 11
$name = $email = $gender = $comment = $website = ""; if ($_SERVER["REQUEST_METHOD"] == "POST") { if (empty($_POST["name"])) { $nameErr = "Name is required"; } else { $name = test_input($_POST["name"]); } if (empty($_POST["email"])) { $emailErr = "Email is required"; } else { $email = test_input($_POST["email"]); // check if e-mail address is well-formed
Giới thiệu về jQuery Validation jQuery Validation là một công cụ được xây dựng giúp các lập trình viên có thể xác thực được những thông tin người dùng nhập vào Form một cách nhanh chóng và dễ dàng. Để sử dụng jQuery Validation các bạn cần phải biết qua phương thức “$ (‘#id_cua_form’).validate()” (Nếu dùng class thì các bạn hãy tự thay thế). Chúng ta sẽ có
}, dieukhoan: "required" }, messages: { ho: "Vui lòng nhập họ", ten: "Vui lòng nhập tên", diachi: { required: "Vui lòng nhập địa chỉ", minlength: "Địa chỉ quá ngắn ?" }, sodienthoai: { required: "Vui lòng nhập số điện thoại", minlength: "Số máy quý khách vừa nhập là số không có thực" }, password: { required: 'Vui lòng nhập mật khẩu', minlength: 'Vui lòng nhập ít nhất 5 kí tự' }, confirm_password: { required: 'Vui lòng nhập mật khẩu', minlength: 'Vui lòng nhập ít nhất 5 kí tự', equalTo: 'Mật khẩu không trùng' }, email: { required: "Please provide a password", minlength: "Your password must be at least 5 characters long", equalTo: "Please enter the same password as above" }, email: "Vui lòng nhập Email", agree: "Vui lòng đồng ý các điều khoản"