Sự khác biệt là đối với kiểm thửhồi quy, các trường hợp kiểm thử có thể đúng ở lần cuối cùng chúng được thực thi.Mục đích của kiểm thử hồi quy để xác minh rằng các sửa đổi trong phần mềm
PHẦN MỞ ĐẦU
Ngày nay, thời đại công nghệ 4.0 đang bùng nổ Ngành công nghệ thông tin ngày càng phát triển mạnh mẽ Chúng ta đã và đang chứng kiến sự tăng trưởng đáng kinh ngạc của ngành công nghiệp phần mềm trong vài thập kỷ qua Và con người ngày càng phụ thuộc chặt chẽ vào các sản phẩm phần mềm và do vậy đòi hỏi về chất lượng của các sản phẩm phần mềm ngày càng cao, tức là các phần mềm phải được sản xuất với giá thành hạ, dễ dùng, an toàn và tin cậy.
Kiểm thử có phương pháp là một hoạt động không thể thiếu trong quy trình sản xuất phần mềm để đảm bảo các yếu tố chất lượng nêu trên của các sản phẩm phần mềm
Selenium là công cụ kiểm thử được phát triển dựa trên mã nguồn mở, hoàn toànmiễn phí Với công cụ này cùng với một số công cụ hỗ trợ khác như Cucumber, TestLink, Jenkins, Maven, Ant, kiểm thử viên có thể phát triển thành các framework hỗ trợ cho viết các kịch bản kiểm thử và chạy các kịch bản này một cách tự động, giảm nguồn lực, tăng độ tin cậy và nhàm chán của công việc kiểm thử Selenium có lẽ là một trong những công cụ tốt nhất trên thị trường cho các ứng dụng Web, chính vì vậy nhóm e với mong muốn giúp nhiều người hiểu rõ hơn nữa về kiểm thử ứng dụng Web, cũng như cách sử dụng công cụ Selenium vào công việc này.
Giảm bớt công sức và thời gian thực hiện quá trình kiểm thử, bên cạnh đó tăng sự tin cậy Giúp kiểm thử viên giảm sự nhàm chán Cuối cùng giảm thiểu chi phí của quá trình kiểm thử
Hệ thống trang website trường Đại học Kiến Trúc Hà Nội
4 Phạm vi nghiên cứu Đề tài nghiên cứu sẽ tập trung vào các khía cạnh: tìm hiểu về Selenium IDE, thiết kế và triển khai các kịch bản kiểm thử tự động, đánh giá hiệu quả và nhược điểm của Selenium, ứng dụng Selenium trong kiểm thử thực tế tại trang website trường Đại học Kiến Trúc Hà Nội.
Kết hợp các phương pháp nghiên cứu: Phương pháp điều tra; Phương pháp phân tích tổng kết kinh nghiệm; Phương pháp chuyên gia
6 Địa chỉ áp dụng Đại học Kiến Trúc Hà Nội
PHẦN NỘI DUNG
Khai phá dữ liệu là một khái niệm ra đời vào những năm cuối của thập kỷ 80 Nó bao hàm một loạt các kỹ thuật nhằm phát hiện ra các thông tin có giá trị tiềm ẩn trong các tập dữ liệu lớn (các kho dữ liệu) Về bản chất, khai phá dữ liệu liên quan đến việc phân tích các dữ liệu và sử dụng các kỹ thuật để tìm ra các mẫu hình có tính chính quy trong tập dữ liệu.
Năm 1989, Fayyad, Piatestsky-Shapiro và Smyth đã dùng khái niệm Phát hiện tri thức trong CSDL, đề chỉ toàn bộ quá trình phát hiện các tri thức có ích từ các tập dữ liệu lớn; trong đó khai phá dữ liệu là một bước đặc biệt trong toàn bộ quá trinh, sử dụng các giải thuật đặc biệt để chiết xuất ra các mẫu hay các mô hình từ dữ liệu. Ở một mức độ trừu tượng nhất định có thể định nghĩa về khai phá dữ liệu: Data Mining là một quá trình tìm kiếm, phát hiện các tri thức mới, tiềm ẩn, hữu dụng trong CSDL lớn.
Khám phá tri thức (KDD) là mục tiêu chính của khai phá dữ liệu, do vậy hai khái niệm đó được xem như hai lĩnh vực tương đương nhau Nhưng, nếu phân chia một cách tách bạch thì khai phá dữ liệu là một bước chính trong quá trình KDD.
Khai phá dữ liệu là một bước của quá trình khai thác tri thức (KnowledgeDiscovery Process), bao gồm:
Xác định vấn đề và không gian dữ liệu để giải quyết vấn đề (Problemunderstanding and data understanding).
Chuẩn bị dữ liệu (Data preparation), bao gồm các quá trình làm sạch dữliệu (data cleaning), tích hợp dữ liệu (data integration), chọn dữ liệu (dataselection), biến đổi dữ liệu (data transformation).
Khai thác dữ liệu (Data mining): xác định nhiệm vụ khai thác dữ liệu vàlựa chọn kỹ thuật khai thác dữ liệu Kết quả cho ta một nguồn tri thức thô.
Đánh giá (Evaluation): dựa trên một số tiêu chí tiến hành kiểm tra và lọcnguồn tri thức thu được.
Quá trình khai thác tri thức không chỉ là một quá trình tuần tự từ bước đầu tiên đến bước cuối cùng mà là một quá trình lặp và có quay trở lại các bước đã qua
1.1.2 Quy trình khai phá dữ liệu
Một phần mềm chất lượng được đánh giá từ chất lượng quy trình đến chất lượng phần mềm nội bộ Cụ thể chúng được đánh giá như sau:
- Nghiên cứu lĩnh vực: Ta cần nghiên cứu lĩnh vực cần sử dụng Data mining để xác định đượcnhững tri thức ta cần chất lọc, từ đó định hướng để tránh tốn thời gian cho những tri thức không cần thiết.
-Tạo tập tin dữ liệu đầu vào: Ta xây dựng tập tin để lưu trữ các dữ liệu đầu vào để máy tính có thể lưu trữvà xử lý.
- Tiền xử lý, làm sạch, mã hóa: Ở bước này ta tiến hành bỏ bớt những dữ liệu rườm rà, không cần thiết, tinhchỉnh lại cấu trúc của dữ liệu và mã hóa chúng để tiện cho quá trình xử lý
- Rút gọn chiều: Thông thường một tập dữ liệu có chiều khá lớn sẽ sinh ra một lượng dự liệu khổng lồ, ví dụ với n chiều ta sẽ có 2^n nguyên tổ hợp Do đó , đây là một bước quan trọng giúp giảm đáng kể hao tổn hề tài nguyên trong quá trình xử lý tri thức.Thông thường ta sẽ dùng Rough set để giảm số chiều.
- Chọn tác vụ khai phá dữ liệu
- Khai phá dữ liệu tìm kiếm tri thức: au khi tiến hành các bước trên thì đây là bước chính của cả quá trình, ta sẽ tiến hành khai thác và tìm kiếm tri thức.
- Đánh giá mẫu tìm được: Ta cần đánh giá lại trong các tri thức tìm được, ta sẽ sử dụng được những tri thức nào, những tri thức nào dư thừa, không cần biết.
- Biểu diễn tri thức: Ta biểu diễn tri thức vừa thu nhập được dưới dạng ngôn ngữ tự nhiên và hình thức sao cho người dùng có thể hiểu được những tri thức đó.
- Sử dụng tri thức vừa khám phá
Ta có thể tham khảo tiến trình KDD( Knowledge Discovery in Databases) để hiểu rõ hơn về khai phá dữ liệu:
H椃nh 1: Knowledge Discovery in Databases (KDD)
Chuẩn bị dữ liệu (data preparation), bao gồm các quá trình làm sạch dữ liệu (data cleaning), tích hợp dữu liệu (data integration), chọn dữ liệu (data selection), biến đổi dữ liệu (data transformation).
Khai thác dữu liệu (data mining): xác định nhiệm vụ khai thác dữ liệu và lựa chọn kỹ thuật khai thác dữu liệu Kết quả cho ta một nguồn tri thức thô. Đánh giá (evaluation): dựa trên một tiêu chí tiến hành kiểm tra và lọc nguồn tri thức thu được.
Quá trình khai thác tri thức không chỉ là một quá trình tuần tự từ bước đầutiên đên bước cuối cùng mà là một quá trình lặp và có quay trở lại các bước đã qua.
1.1.3 Ứng dụng của khai phá dữ liệu
CƠ SỞ LÝ THUYẾT
Tìm hiểu về kiểm thử phần mềm
1.2.1 Khái niệm kiểm thử phần mềm Kiểm thử phần mềm (software testing) thực chất là một quy trình hơn là một hoạt động đơn lẻ Software testing hoạt động nhằm tìm kiếm và phát hiện ra các lỗi của phần mềm, đảm bảo phần mềm chính xác, đúng và đầy đủ theo yêu cầu của khách hàng, yêu cầu của sản phẩm đã đặt ra Quá trình này bắt đầu từ việc lập kế hoạch kiểm thử, sau đó là thiết kế các trường hợp kiểm thử, chuẩn bị cho việc thực thi và đánh giá kết quả thực thi cho đến khi kết thúc hoạt động kiểm thử.
Mục tiêu của kiểm thử:
Kiểm thử phần mềm đóng vai trò quan trọng trong quá trình phát triển sản phẩm, giúp phát hiện và khắc phục lỗi sản phẩm, ngăn ngừa rủi ro tiềm ẩn, đảm bảo chất lượng sản phẩm cung cấp cho khách hàng Bằng cách thực hiện kiểm thử, doanh nghiệp có thể giảm thiểu chi phí cho các giai đoạn sau, chẳng hạn như chi phí sửa lỗi hoặc chi phí bảo dưỡng.
Phân loại kiểm thử phần mềm
Trong kiểm thử Test Type được chia thành 4 loại:
- Testing of function (Functional testing)
Kiểm thử chức năng là kiểm tra xem hệ thống có hoạt động theo đúng theo các yêu cầu nghiệp vụ không? Kiểm thử chức năng được thực hiện ở tất cả các mức kiểm thử.
Kiểm thử chức năng có thể thực hiện theo 2 quan điểm: requirements-based và business - process - based
Requirements - based: Sử dụng các đặc tả yêu cầu của hệ thống làm cơ sở để design test Một cách tốt để bắt đầu là sử dụng bảng nội dung của đặc tả yêu cầu như một danh sách các mục kiểm thử và không kiểm thử Chúng ta nên xét độ ưu tiên của yêu cầu dựa trên các tiêu chí rủi ro và sử dụng độ ưu tiên để kiểm thử Điều này sẽ đảm bảo những phần quan trọng nhất sẽ được kiểm thử.
Business - process - based: sử dụng các kiến thức về quy trình nghiệp vụ Quy trình nghiệp vụ mô tả các kịch bản liên quan đến nghiệp vụ hằng ngày của hệ thống.
-Testing of software product characteristics (Non-Functional testing)
Kiểm thử phi chức năng là các đặc tính chất lượng của hệ thống sẽ được kiểm tra.
Kiểm thử phi chức năng quan tâm đến việc mọi thứ hoạt động tốt không? Hay nhanh như thế nào? Kiểm thử phi chức năng sẽ kiểm tra những thứ cần phải đo như thời gian phản hồi, hay bao nhiêu người có thể đăng nhập cùng một lúc? Kiểm thử phi chức năng cũng giống như kiểm thử chức năng được thực hiện ở tất cả các cấp độ kiểm thử.
Các đặc điểm và các đặc điểm phụ tương ứng:
Chức năng (Functionality) gồm 5 đặc điểm phụ: sự phù hợp, chính xác, bảo mật, khả năng tương tác và tuân thủ.
Độ tin cậy (Reliability) gồm 4 đặc điểm phụ: độ bền, khả năng chịu lỗi, khả năng phục hồi và tuân thủ.
Khả năng sử dụng (Usability) gồm 5 đặc điểm phụ: dễ hiểu, khả năng học hỏi, khả năng hoạt động, sự thu hút và tính tuân thủ.
Tính hiệu quả (Efficiency) gồm 3 đặc điểm phụ: thời gia (hiệu suất), sử dụng tài nguyên và tuân thủ.
Khả năng bảo trì (Maintainability) gồm 5 đặc điểm phụ: khả năng phân tích, khả năng thay đổi, tính ổn định, khả năng kiểm tra và tuân thủ.
Tính tương thích (Portability) gồm 5 đặc điểm phụ: khả năng thích ứng, khả năng cài đặt, cùng tồn tại, khả thăng thay thế và tuân thủ.
-Testing of software structure/architecture (Structural testing)
Kiểm thử cấu trúc thường được gọi là "hộp trắng" hoặc "hộp thủy tinh" vì chúng quan tâm đến những gì đang xảy ra bên trong hộp.
Kiểm thử cấu trúc thường được sử dụng như một cách đo lường của kiểm thử thông qua độ bao phủ của một tập hợp các yếu tố cấu trúc hoặc các mục bao phủ.
Nó có thể xảy ra ở bất kỳ mức độ kiểm thử nào chủ yếu ở kiểm thử thành phần, tích hợp. Ở cấp độ thành phần, và mức thấp hơn trong kiểm thử tích hợp thành phần có hỗ trợ công cụ tốt để đo mức độ bao phủ của mã Các công cụ đo lường độ bao phủ đánh giá tỉ lệ phần trăm thực thi đã được thực hiện bởi một bộ kiểm thử Nếu độ bao phủ không phải là 100% thì các kiểm thử bổ sung có thể cần phải được viết và chạy để bao phủ những phần chưa được thực hiện.
Các kỹ thuật được sử dụng để kiểm tra cấu trúc là kỹ thuật kiểm thử hộp trắng, các mô hình luồng điều khiển thường sử dụng để hỗ trợ kiểm thử cấu trúc.
- Testing related to changes (Confirmation and regression testing)
Confirmation testing (Kiểm thử xác nhận)
Khi kiểm thử bị lỗi, và chúng ta xác định nguyên nhân lỗi là do lỗi phần mềm, lỗi được báo cáo, khi một phiên bản mới của phần mềm đã sửa lỗi Trong trường hợp này chúng ta cần thực hiện kiểm tra một lần nữa để xác định rằng lỗi thực sự đã được sửa.
Khi thực hiện kiểm tra xác nhận điều quan trọng là phải đảm bảo rằng thử nghiệm được thực hiện chính xác giống như lần đầu tiên, sử dụng cùng một đầu vào,dữ liệu và môi trường Nếu bây giờ đúng có nghĩa là phần mềm chính xác Chúng ta biết rằng ít nhất một phần của phần mềm là chính xác, nhưng điều đó là không đủ Sửa lỗi có thể gây ra một lỗi khác trong phần mềm Cách phát hiện các bất lợi ngoài ý muốn của việc sửa lỗi là thực hiện kiểm thử hồi quy.
Regression testing (Kiểm thử hồi quy)
Giống như kiểm thử xác nhận kiểm thử hồi quy liên quan đến việc thực hiện các trường hợp kiểm thử đã được thực hiện trước đó Sự khác biệt là đối với kiểm thử hồi quy, các trường hợp kiểm thử có thể đúng ở lần cuối cùng chúng được thực thi.
Mục đích của kiểm thử hồi quy để xác minh rằng các sửa đổi trong phần mềm hoặc môi trường không gây ra bất lợi ngoài ý muốn và hệ thống vẫn đáp ứng các yêu cầu của nó.
Bộ kiểm thử hồi quy hoặc gói kiểm tra hồi quy là một tập hợp các trường hợp kiểm thử được sử dụng đặc biệt để kiểm tra hồi quy Chúng được thiết kế để thực hiện hầu hết các chức năng trong một hệ thống nhưng không chi tiết bất kỳ chức năng nào.
Các trường hợp kiểm thử hồi quy được thực thi mỗi khi có phiên bản phần mềm mới, vì vậy chúng rất hữu ích cho tự động hóa.
Kiểm thử tự động
- Kiểm thử tự động là quá trình thực hiện một cách tự động các bước trong một kịch bản kiểm thử
- Kiểm thử tự động là một kỹ thuật tự động trong đó người kiểm thử tự viết các tập lệnh và sử dụng phần mềm phù hợp để kiểm thử phần mềm Nó về cơ bản là một quá trình tự động hóa của một quy trình kiểm thử thủ công Giống như kiểm thử quy hồi, kiểm thử tự động cũng được sử dụng để kiểm thử ứng dụng theo quan điểm tải, hiệu năng và ứng suất.
- Kiểm thử tự động giúp giảm chi phí kiểm thử bằng cách hỗ trợ quá trình kiểm thử thông quan các công cụ phần mềm.
- Kiểm thử tự động giúp các kỹ sư kiểm thử (tester) không phải lặp đi lặp lại các bước nhàm chán
1.3.2 Quy trình kiểm thử tự động
- Quy trình kiểm thử tự động bao gồm: tester sử dụng các kịch bản tự động (automation scripts) và thực thi các script để chạy ứng dụng với sự giúp sức của các automation tool Một khi script đã sẵn sàng thì việc thực thi kiểm thử có thể diễn ra nhanh chóng và hiệu quả.
- Các hoạt động của kiểm thử tự động:
Phân tích yêu cầu/ Xác định môi trường/ công cụ
Xác định tiêu chí đầu ra
Lên kế hoạch và kiểm soát
Thiết lập môi trường kiểm thử
Triển khai thiết kế kiểm thử
1.3.3 Ưu, nhược điểm kiểm thử tự động a) Ưu điểm
Độ tin cậy: Công cụ kiểm thử tự động mang lại tính ổn định cao hơn so với con người Đặc biệt, trong những trường hợp nhiều test case nên độ tin cậy của kiểm thử sẽ đạt mức tối ưu hơn so với kiểm thử thủ công.
Khả năng lặp lại: Với những công cụ kiểm thử tự động sẽ ra đời nhiều các tester không phải trải qua quá trình lặp lại nhiều thao tác giảm được sự nhàm chán cũng như độ tin cậy cao và ổn định.
Khả năng tái sử dụng: Đây chính là một bộ kiểm thử tự động được nhiều người sử dụng với nhiều những phiên bản khác nhau và được gọi là tái sử dụng.
Tốc độ cao: với tốc độ kiểm thử nhanh hơn so với tốc độ của con người Những thực thi của một test case một cách thủ công có thể hoàn thành hay thực thi trong thời gian ngắn nhất một cách tự động.
Chi phí thấp: chi phí sử dụng kiểm thử tự động khá hấp dẫn và phù hợp có thể tiết kiệm được nhiều chi phí cũng như thời gian nhân lực Do quá trình kiểm thử nhanh hơn thử thủ công nên nhân lực sẽ được thực thi và bảo trì không nhiều. b) Nhược điểm
Khó bảo trì và mở rộng: Trong một dự án để có thể mở rộng được phạm vi kiểm thử tự động sẽ khá khó so với những kiểm thử thủ công vì quá trình cập nhật và chỉnh sửa theo những yêu cầu của Debug, thay đổi dữ liệu, cập nhật code mới.
Khả năng bao phủ kém: Do mở rộng nên sự đòi hỏi kỹ năng lập trình là rất cần thiết và khá cầu kỳ để phủ sóng được những kiểm thử tự động thấp xét trên nhiều góc nhìn toàn diện.
Hiện nay có nhiều công cụ hỗ trợ kiểm thử tự động khá tốt như QTP, Selenium, Test Complete, Visual Studio, nhưng nhìn chung vẫn hoạt động với nhiều hạn chế và nguồn nhân lực đáp ứng đủ nhu cầu cũng chưa nhiều.
1.3.4 Các công cụ hỗ trợ kiểm thử tự động Một số công cụ kiểm thử tự động phổ biến hiện nay:
Selenium: là một công cụ kiểm tra phần mềm được sử dụng để kiểm tra hồi quy (Regression Testing) Đây là một công cụ kiểm tra mã nguồn mở cung cấp chức năng phát lại và thu âm để kiểm tra hồi quy Các Selenium IDE chỉ hỗ trợ trình duyệt web Mozilla Firefox Selenium cung cấp các điều khoản để xuất khẩu ghi lại kịch bản trong các ngôn ngữ khác như Java, Ruby, Rspec, Python, C#, Junit và TestNG.
Nó có thể thực hiện nhiều bộ kiểm thử cùng một lúc, xác định phần tử sử dụng id, tên, đường dẫn, lưu trữ các bộ kiểm thử như Ruby Script, HTML và bất kỳ định dạng nào khác.
QTP (HP UFT): QTP được sử dụng rộng rãi để kiểm tra chức năng
(Functional Testing) và hồi quy (Regression Testing), giải quyết các ứng dụng phần mềm và môi trường Để đơn giản hóa việc tạo và bảo trì thử nghiệm, nó sử dụng khái niệm kiểm tra từ khóa QTP được sử dụng dễ dàng hơn dành cho người kiểm thử viên không theo ngành kỹ thuật để thích ứng và tạo ra các trường hợp thử nghiệm làm việc QTP sửa lỗi nhanh hơn bằng cách ghi lại và sao chép các lỗi cho nhà phát triển, thu gọn tài liệu thử nghiệm tại một trang web QTP hỗ trợ môi trường phát triển NET, có cơ chế xác định đối tượng kiểm thử tốt.
Rational Function Tester: là một công cụ kiểm tra tự động hướng đối tượng có khả năng tự động kiểm tra dữ liệu, kiểm tra giao diện, và kiểm thử hồi quy (Regression Testing) Phần mềm hỗ trợ một loạt các giao thức và ứng dụng như Java, HTML, NET, Windows, SAP, Visual Basic Có thể ghi lại và phát lại các hành động theo yêu cầu Tích hợp tốt với công cụ quản lý kiểm soát nguồn như Rational Clear Case và tích hợp Rational Team Concert Cho phép các nhà phát triển tạo ra các kịch bản liên quan đến từ khóa để có thể được tái sử dụng Bộ biên tập Công cụ Java Developer Toolkit của Eclipse tạo điều kiện cho nhóm tạo mã thử nghiệm các đoạn mã trong Java với Eclipse.
WATIR: Là một phần mềm kiểm tra mã nguồn mở để kiểm thử hồi quy( Regression Testing) Watir chỉ hỗ trợ khám phá Internet trên các cửa sổ trong khi Watir webdriver hỗ trợ Chrome, Firefox, IE, Opera Hỗ trợ nhiều trình duyệt trên các nền tảng khác nhau, sử dụng một ngôn ngữ kịch bản hiện đại có đầy đủ tính năng, hỗ trợ ứng dụng web được viết bởi bất kỳ ngôn ngữ nào, cho phép bạn viết các test case dễ đọc và bảo trì.
1.3.5 Các nguyên tắc trong kiểm thử tự động
Kết Luận
Chương 1 đã trình bày những khái niệm để có cái nhìn tổng quát về những vấn đề cơ bản xoay quanh phần mềm và kiểm thử phần mềm Các vấn đề cụ thể bao gồm:
- Các định nghĩa về phần mềm, kiểm thử phần mềm.
- Vai trò của kiểm thử phần mềm trong quá trinh phát triển dự án phần mềm.
- Quy trình kiểm thử phần mềm.
- Các thuật ngữ sử dụng trong kiểm thử phần mềm.
- Các mức trong kiểm thử phần mềm.
- Các công cụ hỗ trợ kiểm thử tự động - Các nguyên tắc trong kiểm thử - Một số kỹ thuật xác định ca kiểm thử
Như vậy, hầu hết các loại kiểm thử đều tốn nhiều thời gian do thực hiện các thử nghiệm liên tục Các kiểm tra không thành công sẽ chạy liên tục cho đến khi khắc phục được tất cả các sự cố Nhóm kiểm thử phần mềm yêu cầu nhiều thành viên dẫn đến tăng chi phí của phần mềm và ngân sách Nếu nâng cao phạm vi và tăng thời lượng vòng đời phát triển của phần mềm thì cần tốn nhiều chi phí và thời gian hơn nữa Do đó một trong các mục tiêu của kiểm thử là tự động hóa kiểm thử, nhờ đó mà giảm thiểu chi phí rất nhiều, tối thiểu hóa các lỗi do người gây ra, đặc biệt giúp việc kiểm thử hồi qui dễ dàng và nhanh chóng hơn.
KIỂM THỬ ỨNG DỤNG TRÊN NỀN WEB
Kiểm thử ứng dụng trên nền Web là một lĩnh vực phổ biến trong ngành kiểm thử phần mềm Chương 2 của đồ án sẽ đi sâu vào tìm hiểu khái niệm, các công việc cụ thể khi kiểm thử ứng dụng trên nền Web Đồng thời, trong chương này cũng sẽ giới thiệu một số công cụ hỗ trợ kiểm thử ứng dụng Web.
2.1 Khái quát về kiểm thử ứng dụng trên nền Web
Khi mạng Internet ngày càng phát triển, môi trường mạng đem đến nhiều cơ hội kinh doanh, tiếp cận khách hàng thì hiểu nhiên việc thiết kế website và các ứng dụng chạy trên nền Web là cần thiết để chiếm lĩnh thị trường Các ứng dụng Web phát triển và đóng vai trò to lớn trong việc kết nối, trao đổi thông tin của nhiều doanh nghiệp.
Muốn có được sự thành công trên, trước hết các ứng dụng chạy trên nền Web phải có chất lượng tốt, hiệu năng cao, chưa kể tới các yếu tố về giao diện, trải nghiệm người dùng,…Ngoài ra, chúng ta đều biết ứng dụng trên nền Web có những đặc thù khác biệt hoàn toàn so với ứng dụng di động, ứng dụng desktop,…Ứng dụng trên nền Web không giới hạn chỉ ở điện thoại thông minh, máy tính hay máy tính bảng, mà được thiết kế để chạy trên nhiều nền tảng khác nhau Mỗi nền tảng lại có những yêu cầu riêng về cấu hình, độ phân giải, đặc thù thao tác,…Đó chính là những vấn đề lớn đặt ra cho các nhà phát triển phần mềm trong việc đảm bảo chất lượng cho các ứng dụng trên nền Web khi phải chạy trên đa nền tảng Vì thế cần phải đưa ra một chiến lược hiệu quả cho kiểm thử, tránh những rủi ro, nâng cao chất lượng cho ứng dụng Web.
2.1.2 Các loại ứng dụng Web
Ứng dụng Web tĩnh là loại ứng dụng Web có nội dung không thay đổi, được xây dựng bằng HTML, CSS và Javascript Do không có cơ sở dữ liệu và công cụ điều khiển nội dung gián tiếp, người quản trị buộc phải có kiến thức về HTML, CSS để chỉnh sửa Ứng dụng Web tĩnh dễ xây dựng, nội dung đơn giản nhưng khó cập nhật thông tin, tốn kém nếu thay đổi nhiều lần Ví dụ về Web tĩnh: trang giới thiệu công ty, sản phẩm, khóa học ít cần cập nhật thông tin.
Ứng dụng Web động: So với nhiều web tĩnh thì web động phức tạp hơn về mặt kỹ thuật khi xây dựng Web động sử dụng cơ sở dữ liệu để hiển thị nội dung cũng như cho phép người dùng tương tác được với nội dung đó Web động được chia làm 2 phần là back-end (dành cho người quản trị Web thay đổi, cập nhật nội dung) và front-end (dành cho người dùng truy cập) Hiện nay có rất nhiều ngôn ngữ lập trình để xây dựng Web động như Java, PHP, ASP.NET, VB.NET, Ruby, …Đối với Web động, việc cập nhật nội dung là rất đơn giản, dễ dàng.
Không những thế, một số hệ thống lớn hiện nay còn cho phép người quản trị có thể thay đổi giao diện Web trên trang quản trị mà không cần phải can thiệp trực tiếp vào mã nguồn Đó là những lý do khiến cho Web động được sử dụng phổ biến hơn Web tĩnh.
2.1.3 Chất lượng của một ứng dụng trên nền Web
Trước đây, kiểm thử phần mềm là lĩnh vực độc quyền của các ứng dụng desktop.
Nền tảng ứng dụng bao gồm nhiều loại hình thức khác nhau, từ máy tính để bàn đến thiết bị di động và ứng dụng web Sự khác biệt giữa các loại ứng dụng ảnh hưởng đến cách kiểm thử Kiểm thử ứng dụng trên điện thoại thông minh khác với kiểm thử ứng dụng web, đòi hỏi các chuyên gia có kiến thức chuyên môn cụ thể.
Ứng dụng trên nền Web sử dụng trên nhiều tr椃nh duyệt, không biết trước môi trường duyệt Web của người dùng: Một ứng dụng Web chạy tốt trên trình duyệtGoogle Chrome nhưng trên Mozilla Firefox hay Safari thì có thể không như mong muốn Đó là do mỗi trình duyệt được xây dựng trên kiến trúc khác nhau Ngay cả khi hiện tại các trình duyệt đều đang cố gắng đưa ra chuẩn chung để dễ dàng hơn cho người lập trình, nhưng sự khác biệt khi khởi chạy ứng dụng trên nhiều trình duyệt khác nhau vẫn gây ra nhiều lo lắng cho lập trình viên và người làm kiểm thử Đó là lý do chúng ta không khó bắt gặp những ứng dụng chạy trên nền Web ghi chú thích
“Website chạy (chương trình) tốt nhất trên trình duyệt X, ” Tuy nhiên, cách làm này không thực sự hiệu quả khi người dùng muốn sử dụng Web của chúng ta lại phải cài đặt trình duyệt được khuyến nghị Để tránh cho sự bất tiện này đòi hỏi người kiểm thử phải triển khai ca kiểm thử trên nhiều trình duyệt khác nhau, kiểm tra độ tương thích và tìm ra những lỗi để lập trình viên đưa ra sự thay đổi cho phù hợp với mọi trình duyệt.
Ứng dụng trên nền Web thường có lượng truy cập lớn, nhiều người sử dụng trên cùng một thời điểm: Với những ứng dụng Web có lượng người truy cập trung bình hoặc ít thì điều này không xảy ra vấn đề gì nghiêm trọng Nhưng với những ứng dụng chạy trên nền Web có lượng người truy cập lớn, thực hiện nhiều thao tác dữ liệu cùng lúc có thể sẽ dẫn tới việc server bị quá tải Kiểm thử hộp trắng phát huy hiệu quả rất cao trong trường hợp này Việc kiểm thử mã nguồn chương trình sẽ giúp loại bỏ được những dòng lệnh không hợp lý, gây tiêu tốn tài nguyên hệ thống và giúp cho ứng dụng Web có thể đáp ứng lượng truy cập lớn cùng lúc Công việc này cũng chính là kiểm thử hiệu năng, độ chịu lỗi của chương trình phần mềm.
Hầu hết các ứng dụng web đều phụ thuộc vào tốc độ và sự ổn định của đường truyền Internet để tải dữ liệu và hiển thị trên trình duyệt Trong trường hợp đường truyền ổn định, việc duyệt web sẽ diễn ra trơn tru và không gặp khó khăn gì.
Tuy nhiên trên thực tế, tốc độ cũng như sự ổn định về đường truyền của người dùng là rất khó đoán, mỗi khu vực lại có sự khác nhau về đường truyền gây ảnh hưởng tới sự vận hành của ứng dụng Web Chưa kể đến việc mạng có thể kết nối đột ngột khi đang thực hiện thao tác truy vấn sẽ dẫn tới những hậu quả rất khó lường nếu kiểm thử không tốt ở những trường hợp này, điển hình như các ứng dụng cho ngân hàng, hệ thống ERP, phần mềm phục vụ kế toán, …
Sự cần thiết của SEO Web: Đối với rất nhiều ứng dụng trên nển Web việc tối ưuSEO là một yêu cầu bắt buộc Người sở hữu các website đều muốn website được tăng thứ hạng cao trên các máy tìm kiếm như Google, Bing, …giúp ứng dụng Web của mình được nhiều người biết đến Đây là một điểm mạnh giúp quảng báứng dụng trên nền Web dễ dàng hơn so với ứng dụng di động hay ứng dụng desktop Trong thực tế,ngoài kiểm thử chức năng, hiệu năng, giao diện ứng dụng Web, kiểm thử viên phải chú trọng đến kiểm tra tối ưu SEO cho ứng dụng Tuy nhiên việc tối ưu SEO lại không hề dễ dàng khi các máy tìm kiếm thường xuyên thay đổi thuật toán Ngoài ra, nó còn liên quan đến chất lượng nội dung của ứng dụng Web để được máy tìm kiếm chú ý đến.
2.2 Các loại kiểm thử thực hiện trên nền Web 2.2.1 Kiểm thử chức năng
Kiểm thử chức năng yêu cầu kiểm thử viên thực hiện kiểm thử tất cả các link trong trang Web, định dạng được sử dụng trong các trang Web để gửi và nhận thông tin cần thiết từ người dùng Ngoài ra còn có thể kết nối cơ sở dữ liệu, kiểm tra cookie và xác minh HTML/ CSS, …
Trước khi lập trình, có bản thiết kế UI quy định giao diện web (thành phần, bố cục cụ thể) Bản thiết kế UI thường kèm file PSD (bản vẽ giao diện bằng photoshop), giúp lập trình viên xây dựng dễ dàng và khách hàng biết trước giao diện ứng dụng Đây là tài liệu quan trọng cho kiểm thử viên đối chiếu giữa thiết kế và nội dung thực tế trên trình duyệt.
KIỂM THỬ ỨNG DỤNG TRÊN NỀN WEB BẰNG CÔNG CỤ SELENIUM
Chương cuối của đề tài nghiên cứu tập trung nghiêm cứu về bộ công cụ hỗ trợ kiểm thử Selenium và một số công cụ liên quan khác phục vụ đắc lực cho công việc kiểm thử tự động ứng dụng trên nển Web Cụ thể sẽ đi sâu vào tìm hiểu hướng dẫn cài đặt, thao tác sử dụng cơ bản kèm theo một số lệnh thông dụng của công cụ Selenium IDE trên trình duyệt Firefox Ngoài ra chương này cũng đề cập tới việc phối hợp sử dụng Selenium IDE với một số công cụ khác như Monosnap, Firebug, Mantis trong nhưng ca kiểm thử thực tế.
3.1 Giới thiệu công cụ kiểm thử tự động Selenium
Selenium là một phần mềm mã nguồn mở - một công cụ kiểm thử phần mềm tự động để kiểm thử các ứng dụng trên nền Web Năm 2004, Selenium được phát triển bởi ThoughtWorks với cái tên ban đầu JavaScriptTestRunner Đến năm 2007, tác giả Jason Huggins rời ThoughtWorks gia nhập Selenium Team (thuộc Google), từ đó tiếp tục phát triển Selenium như hiện nay.
Selenium không chỉ là một công cụ duy nhất mà là một bộ các công cụ giúp kiểm thử tự động các ứng dụng trên nền Web hiệu quả hơn, bao gồm 4 phần: Selenium IDE, Selenium RC, Selenium Grid, Selenium WebDriver.
Selenium IDE là một công cụ tự động hóa thử nghiệm web cho phép ghi lại các thao tác tương tác với trình duyệt và tạo ra kịch bản thử nghiệm từ những thao tác đó Được thiết kế như một tiện ích mở rộng cho trình duyệt Mozilla Firefox, Selenium IDE có giao diện trực quan và dễ sử dụng ngay cả với những người không có kiến thức về lập trình.
Với Selenium IDE, chúng ta chỉ có thể ghi lại kịch bản (Record) trên trình duyệt Mozilla Firefox nhưng có thể tái sử dụng kịch bản này trên nhiều trình duyệt khác như Internet Explorer, Google Chrome, …
Selenium RC cho phép các nhà phát triển tự động hóa quá trình kiểm thử bằng cách sử dụng bất kỳ ngôn ngữ lập trình nào, phát huy tối đa thế mạnh của Selenium trong kiểm thử đơn vị Để dễ dàng hơn cho việc kiểm thử, Selenium RC cung cấp cácAPI và thư viện cho mỗi ngôn ngữ được hỗ trợ: HTML, Java Perl, PHP, Ruby, Python,C#.
Selenium WebDriver là phiên bản kế nhiệm của Selenium RC Cũng giống như
Sử dụng Selenium RC, Selenium WebDriver, kiểm thử viên có thể tạo kịch bản kiểm thử bằng các ngôn ngữ lập trình đa dạng như Java, NET, PHP, Python, Perl, Ruby Những công cụ này cho phép sử dụng các điều kiện phân nhánh if, else và vòng lặp để tăng độ chính xác cho kịch bản kiểm thử.
Selenium WebDriver có kiến trúc khá đơn giản, điều khiển trình duyệt trực tiếp từ hệ điều hành.
Selenium Grid là một hệ thống hỗ trợ kiểm thử viên thực thi kịch bản kiểm thử trên nhiều máy, nhiều trình duyệt một cách song song mà không cần chỉnh sửa kịch bản kiểm thử Ban đầu, Selenium Grid chỉ hỗ trợ cho Selenium RC nhưng sau này đã xuất hiện trên cả Selenium WebDriver Selenium Grid cho phép kiểm thử viên thực thi ca kiểm thử trên nhiều máy khác nhau với nhiều trình duyệt khác nhau Đặc biệt hơn, Selenium Grid còn cung cấp khả năng kiểm thử với chế độ phân tán.
Do thời gian nghiên cứu hạn chế nên đồ án chỉ trình bày về Selenium IDE Đây cũng là công cụ được sử dụng phổ biến hiện nay trong việc kiểm thử các dự án phát triển ứng dụng Web bởi giao diện trực quan, dễ sử dụng và khả năng ghi/phát lại các ca kiểm thử một cách linh động.
Selenium IDE là tiện ích kiểm thử tự động chạy trên trình duyệt Firefox, được phát triển bằng JavaScript nên tương tác được với DOM (Mô hình đối tượng tài liệu) và sử dụng được nhiều hàm gọi JavaScript.
Selenium IDE cho phép ghi lại những hành động, sự kiện xảy ra trong quá trình kiểm thử bằng chức năng Record (ghi hành động) và Playback (phát lại).
Một số ưu điểm của Selenium IDE:
Dễ dàng cài đặt và sử dụng.
Không yêu cầu kinh nghiệm lập trình Có thể debug, thiết lập breakpoint (điểm dừng), thêm comment vào kịch bản kiểm thử.
Bên cạnh đó Selenium IDE cũng tồn tại một số nhược điểm:
H椃nh 3.3: Truy cập trang Download tiện ích Selenium
Chỉ hỗ trợ chạy trên Mozilla Firefox (Cấu hình để chạy được trên Chrome, Internet Explore).
Cần cài đặt thêm để đọc dữ liệu từ file csv, xml.
Không hỗ trợ database, kiểm thử di động (Mobile Testing).
Khó khăn khi xử lý những quy trình phức tạp.
3.2.2 Hướng dẫn cài đặt Selenium IDE Đầu tiên người dùng nên kiểm tra trình duyệt Mozilla Firefox đã được cài đặt Selenium IDE hay chưa bằng cách mở trình duyệt này lên, chọn menu Tools Nếu trong danh sách menu con không chứa Selenium IDE thì cần thực hiện những bước sau để tiến hành cài đặt.
Bước 1: Tiến hành truy cập vào địa chỉ http://docs.selenium.org/ Sau đó chọn menu
Bước 2: Tìm tới mục Selenium IDE và chọn phiên bản mới nhất (Latest Released) hoặc những bản cũ hơn tùy theo nhu cầu sử dụng.
H椃nh 3.4: Tiến hành chọn phiên bản Selenium IDE để cài đặt
H椃nh 3.5: Thêm tiện ích Selenium IDE vào Firefox
H椃nh 3.6: Xác nhận cài đặt tiện ích Selenium IDE vào tr椃nh duyệt
H椃nh 3.7: Khởi động lại tr椃nh duyệt Firefox để hoàn tất quá tr椃nh cài đặt
Bước 3: Tại website mới được mở ra, chọn “Add to Firefox” để thêm tiện ích
Bước 4: Tiếp tục chọn “Add” để xác nhận thao tác thêm tiện ích Selenium IDE vào trình duyệt.
Bước 5: Khởi động lại trình duyệt để quá trình cài đặt hoàn tất.
3.2.3 Hướng dẫn sử dụng công cụ Selenium IDE Bước 1: Tạo project
Bật add-on Selenium IDE trên trình duyệt, chọn Create new project
Nhập tên project và nhấn OK
H椃nh 3.8: Tạo 1 project mới và đặt tên cho project đó
Bước 2: Record một test case
Tại cửa sổ project, Bấm nút REC ở góc phải và nhập tên miền sẽ test và ấn nút START RECORD để tiến hành ghi lại Test case
H椃nh 3.9: Chọn chế độ Record một test case trên Selenium
H椃nh 3.10: Chèn link URL cần test
Cửa số mới hiện ra với tên miền đã chọn, bạn tiến hành các thao tác, SeleniumIDE sẽ ghi lại các thao tác click, nhập, thành các command
Sau khi thực hiện xong, đóng cửa sổ test, quay lại cửa số Selenium IDE và ấn nút có icon Stop.
H椃nh 3.11: Dừng chế độ Record trên Selenium
Nhập tên Test case, chú ý tên phải rõ ràng hoặc là mã Test Case Nhấn OK
Chọn test case và ấn vào icon Run all test, Selenium IDE sẽ thực hiện lại các thao tác theo những comnand đã record.
H椃nh 3.12: Chạy các thao tác vừa ghi lại trên Selenium
Nhấn vào icon Save project trên góc phải Nhập tên và lưu.
Sau khi cài đặt, Selenium có giao diện như phía dưới:
H椃nh 3.14: Giao diện của Selenium
Base URL :Đây là nơi lưu trữ đường link của các trang web mà người dùng từng truy cập Khi người sử dụng chỉ đưa ra lệnh “Open” chung, Base URL Bar sẽ thực hiện chức năng điều hướng tới trang web đã được lưu sẵn trước đó.
Toolbar cho phép chúng ta thực hiện các lệnh ghi đối với test case như: bắt đầu,tạm dừng, bỏ qua, kết hợp,…
Test case pane là hộp thoại phía bên trái khi người sử dụng mở công cụ kiểm thử tự động mã nguồn mở selenium Trạng thái thực hiện test case thành công sẽ được liệt kê và thông báo qua các màu sắc xanh hoặc đỏ phù hợp tại đây.
+Textbox Command: Lưu trữ các hành động trong ca kiểm thử.
+Textbox Target: Đích đến của thao tác +Textbox Value: Giá trị đầu vào cho các thao tác trong ca kiểm thử
3.2.4 Các câu lệnh trong Selenium IDE – Selenese
Các câu lệnh trong Selenium IDE thường được gọi là Selenese Selenium IDE cung cấp cho kiểm thử viên một tập lệnh phong phú để kiểm thử ứng dụng trên nền Web.
Trong Selenium IDE, kiểm thử viên có thể kiểm tra các yếu tố giao diện người dùng, nội dung, liên kết bị hỏng, dữ liệu đầu vào Ngoài ra, Selenium IDE còn hỗ trợ kiểm tra kích thước cửa sổ, vị trí chuột, cảnh báo (alert), cửa sổ popup, xử lý sự kiện và nhiều tính năng khác cho ứng dụng Web.
Một lệnh của Selenium IDE thường có 3 thành phần: Actions, Accessors và Assertions.