1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Phương pháp và công cụ kiểm thử tự động cho các ứng dụng web

16 122 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 16
Dung lượng 684,8 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Sau đó, phương pháp này sử dụng thuật toán sinh các đường dẫn kiểm thử test path một cách tự động dựa trên mô hình của Website sao cho các đường dẫn kiểm thử này bao phủ mọi trường hợp c

Trang 1

Tóm tắt nội dung Kiểm thử tự động giao diện cho các ứng dụng Web đang nhận được sự quan tâm lớn từ cộng đồng nghiên cứu và công nghiệp Hiện nay, đã có một số công cụ được đề xuất để giải quyết bài toán trên nhưng chưa có giải pháp thỏa đáng Nghiên cứu này đề xuất phương pháp và xây dựng công cụ cho việc kiểm thử tự động các ứng dụng Web dựa vào tương tác hành vi người dùng Ý tưởng chính của phương pháp đề xuất là đặc tả tương tác người dùng của từng trang Web bằng máy hữu hạn trạng thái Mô hình đặc tả hành vi của cả Website sẽ được xây dựng bằng cách ghép nối các mô hình của các trang Web Sau đó, phương pháp này sử dụng thuật toán sinh các đường dẫn kiểm thử (test path) một cách

tự động dựa trên mô hình của Website sao cho các đường dẫn kiểm thử này bao phủ mọi trường hợp của hệ thống Một công cụ hỗ trợ phương pháp đề xuất cũng đã được phát triển và áp dụng thử nghiệm trên một số hệ thống đơn giản Kết quả thực nghiệm cho thấy tiềm năng ứng dụng của công cụ này trong việc kiểm thử tự động giao diện các ứng dụng Web

Trang 2

1 Giới thiệu

Trong kiểm thử dựa trên mô hình, các ca kiểm thử thường được sinh tự động từ các mô hình đặc tả các hành vi dự định thực hiện kiểm thử [1, 2, 3] Thực tế cho thấy việc áp dụng kiểm thử dựa trên mô hình sẽ mang lại thành công cho hoạt động kiểm thử phần mềm Cụ thể, kiểm thử mô hình giúp giảm bớt công sức thực hiện, tăng độ tin cậy, giảm

sự nhàm chán trong việc tạo và thực hiện các ca kiểm thử Đặc biệt, với số lượng ca kiểm thử lớn, việc kiểm thử thủ công có thể dẫn đến những thiếu sót gây ra những thiệt hại khó lường khi triển khai dự án Trong trường hợp này, kiểm thử dựa trên mô hình đang được xem là một trong những giải pháp tiềm năng để giải quyết vấn đề trên

Kiểm thử dựa trên mô hình ngày càng được áp dụng rộng rãi trong việc kiểm thử các sản phẩm phần mềm cũng như các ứng dụng Web Hiện nay, có rất nhiều hướng nghiên cứu về kiểm thử tự động dựa trên mô hình cho ứng dụng Web như với khả năng chịu tải, tính bảo mật Tuy nhiên, việc kiểm thử chức năng (tương tác giao diện người dùng) vẫn chưa có giải pháp thỏa đáng Yêu cầu của đặt ra là làm sao để chứng minh ứng dụng Web được phát triển đúng với đặc tả trong thiết kế Một vài nghiên cứu trước đây được đề xuất thực hiện việc kiểm thử chức năng Website [4, 5] nhưng mới chỉ thực hiện kiểm thử

tự động cho từng trang Web hay cho Website tĩnh Mặt khác, việc chuẩn bị đầu vào cho các công cụ kiểm thử mô hình là một bài toán khó đối với các công ty vì đầu vào của các công cụ này là các đặc tả hình thức

Nghiên cứu này đưa ra phương pháp nhằm xây dựng một công cụ kiểm thử tự động giao diện ứng dụng Web dựa trên tương tác hành vi của người dùng Công cụ nhận đầu vào là địa chỉ trang Web bắt đầu kiểm thử của Website và tập các tệp tin đặc tả cho máy hữu hạn trạng thái của từng trang Web được tạo tự động từ một tiện ích mở rộng của công cụ Sau khi nhận các giá trị đầu vào, công cụ tiến hành ghép nối các máy trạng thái tương ứng của các trang Web thành một máy hữu hạn trạng thái lớn hơn cho cả Website Tiếp theo, phương pháp sử dụng thuật toán duyệt đồ thị sẽ duyệt máy hữu hạn trạng thái của Website và đưa ra tất cả các đường dẫn kiểm thử (test path), công cụ sau đó sẽ tiến hành kiểm thử tự động Website dựa vào những đường dẫn kiểm thử

Phần còn lại của báo cáo này được trình bày theo cấu trúc sau Phương pháp đặc tả Website được trình bày tại phần 2 Ở phần 3, báo cáo này trình bày phương pháp kiểm thử tự động ứng dụng Web với các thuật toán được sử dụng để sinh tự động các đường dẫn kiểm thử Quá trình thực nghiệm sẽ được trình bày trong phần 4 Tiếp đến, phần 5 trình bày kết quả thực nghiệm và nêu đánh giá ưu nhược điểm của phương pháp Phần 6 trình bày tổng kết báo cáo

Để tiến hành kiểm thử tự động Website, việc đầu tiên là xây dựng mô hình đặc tả hành

vi hệ thống Tùy vào yêu cầu bài toán, chúng ta có thể xây dựng được mô hình đặc tả các hành vi của Website đó, có nhiều hành vi có thể được sử dụng để đặc tả nhưng trong bài báo này, chúng tôi quan tâm đến hành vi tương tác của người dùng với hệ thống Website thông qua sự thay đổi trạng thái của Website đó hay chính là thay đổi giao diện Website Với một Website, phương pháp tiến hành đặc tả từng trang Web, sau đó thực hiện việc ghép nối các trang Web tương ứng để tạo thành một bản đặc tả hoàn chỉnh cho Website

Trang 3

2.1 Đặc tả trang Web

Trang Web là thành phần cơ bản cấu tạo nên Website, do đó việc đặc tả một trang Web

là bước căn bản để có thể đặc tả chính xác một Website Thông thường, mỗi trang Web

sẽ thực hiện các chức năng, nhiệm vụ khác nhau Các trang Web có thể được liên kết với nhau bằng việc chuyển trang với thao tác nhấp chuột vào đường dẫn (link) hoặc các nút (button) Trong phần này, báo cáo trình bày một số khái niệm căn bản giúp trang Web hoạt động

Phần tử Web (Web Element) Phần tử Web là các thành phần cơ bản cấu tạo nên một trang Web, mỗi phần tử Web có nhiều thành phần nhưng có 4 thành phần cơ bản, bao gồm:

• Thẻ mở (Opening Tag): Là phần mở đầu của một phần tử Web để thông báo việc phần tử Web nào đó được sử dụng Ví dụ: Để khai báo việc sử dụng một đoạn văn bản, ta sử dụng thẻ mở <p>

• Các thuộc tính (Attributes): Mô tả thêm thông tin về phần tử Web, mỗi phần tử Web có số lượng thuộc tính khác nhau, nhưng tất cả các phần tử Web đều có 4 thuộc tính cơ bản sau:

– id: Đặc tả định danh duy nhất của phần tử Web

– class: Đặc tả một hay nhiều lớp của phần tử Web

– style: Đặc tả CSS style cho phần tử Web

– title: Đặc tả thông tin mở rộng về phần tử Web

• Nội dung (Element Content): Nằm giữa thẻ mở và thẻ đóng, được dùng để hiển thị nội dung của phần tử Web

• Thẻ đóng (Closing Tag): Nằm ở vị trí cuối cùng trong cấu trúc một phần tử Web dùng để thông báo việc kết thúc nội dung của một phần tử Web Ví dụ: Để thông báo kết thúc một đoạn văn bản, ta sử dụng thẻ đóng </p>

Bảng 1: Một thuộc tính cơ bản của phần tử Web

<a id="lnk" href="default.html"> id, href Đây là một đường dẫn </a>

Bảng 1 đưa ra một số ví dụ minh họa vị trí và chức năng của các thành phần trong một phần tử Web

Sự kiện Sự kiện bao gồm các hoạt động (action) tác động lên các phần tử Web tại một thời điểm làm thay đổi trạng thái của trang Web đó Có nhiều sự kiện tương tác người dùng trên giao diện Web, trong nghiên cứu này sử dụng 4 sự kiện chính để đặc tả hành

vi Web như sau:

Trạng thái trang Web Trạng thái trang Web là giao diện của trang Web tại một thời điểm, mỗi trạng thái Web là một tập hợp các trạng thái của từng phần tử trong một trang Web

Hành vi tương tác giao diện của một trang Web được đặc tả bằng máy hữu hạn trạng thái (Finite State Machine - FSM) M = hS, s0, Σ, δ, F i, trong đó:

Trang 4

Bảng 2: Một số sự kiện cơ bản

Sự kiện Ý nghĩa

addtext Nhập một đoạn text vào ô textbox

deltext Xóa đoạn text ở ô textbox

click Nhấp chuột vào một nút (button) hoặc một đường dẫn

select Chọn một hoặc nhiều, được sử dụng cho các phần tử combobox,

check-box, listbox

• S là tập hữu hạn khác rỗng các trạng thái của trang Web,

• s0 ∈ S là trạng thái đầu tiên được tải lên của trang Web,

• Σ ứng với tập sự kiện có dạng [điều kiện]sự kiện,

• δ là hàm chuyển trạng thái: δ : S × Σ → S, và

• F ⊆ S là tập các trạng thái kết thúc, tương ứng các giao diện xuất hiện cuối cùng sau một chuỗi các sự kiện liên tiếp

Chú ý 1 Máy trạng trạng thái rỗng, ký hiệu là M = Π là máy hữu hạn trạng thái có tập các trạng thái S = λ

2.2 Xây dựng mô hình cho Website

Trang Web mốc Một trang Web Mi = hSi, s0i, Σi, δi, Fii được gọi là trang Web mốc nếu trang Web được dùng làm mốc để các trang Web khác ghép nối vào hay nó là trang Web khởi đầu của Website M = hS, s0, Σ, δ, F i sau khi ghép nối với s0 = s0i

Mô hình Website được xây dựng bằng cách ghép nối mô hình của tất cả các trang Web bằng phép toán ghép nối được định nghĩa như sau: Giả sử M1 = hS1, s01, Σ1, δ1, F1i và M2

= hS2, s02, Σ2, δ2, F2i lần lượt là các máy hữu hạn trạng thái của 2 trang Web Phép ghép nối của M1 và M2, kí hiệu là M1kM2 với M1 là trang Web mốc được định nghĩa như sau

M = M1kM2 = hS, s0, Σ, δ, F i với S = S1∪ S2, Σ = Σ1∪ Σ2, δ = δ1∪ δ2 và F = F1∪ F2

• Nếu s01∈ F/ 2 và s0j ∈ F/ j thì M = Π

• Nếu s01∈ F2 và s01∈ F/ 1 thì M2 được đặt làm trang Web mốc và s0= s02

• Các trường hợp còn lại thì s0= s02

Tính kết hợp của phép toán ghép nối Giả sử một Website được xây dựng từ ba trang Web có máy hữu hạn trạng thái FSM là Mi= hSi, s0i, Σi, δ, Fii (với i = 1, 2, 3), thỏa mãn các điều kiện s02∈ F1 và s03∈ F2 và M1 là trang Web mốc Phép toán ghép nối có tính kết hợp nếu (M1kM2)kM3 = M1k(M2kM3) được chứng minh như sau:

• Đặt M12 = M1kM2 = hS12, s120 , Σ12, δ12, F12i với S12 = S1 ∪ S2, s120 = s01, Σ12 =

Σ1∪ Σ2, δ12= δ1∪ δ2 và F12= F1∪ F2

Khi đó M1 = M12kM3 = hS1, s10, Σ1, δ, F1i với S1 = S12∪ S3 = S1∪ S2∪ S3, s10 =

s01, Σ1= Σ12∪ Σ3= Σ1∪ Σ2∪ Σ3 , δ1 = δ12∪ δ3 = δ1∪ δ2∪ δ3 và F1= F12∪ F3 =

F1∪ F2∪ F3

Trang 5

• Đặt M23 = M2kM3 = hS23, s230 , Σ23, δ, F23i với M2 là trang Web mốc tạm thời, ta

có S23= S2∪ S3, s230 = s02, Σ23= Σ2∪ Σ3, δ23= δ2∪ δ3 và F23= F2∪ F3

Khi đó M2 = M23kM1 = hS2, s20, Σ2, δ, F2i với S2 = S23∪ S1 = S1∪ S2∪ S3, s20 =

s01, Σ2 = Σ23∪ Σ1 = Σ1∪ Σ2∪ Σ3, δ1 = δ12∪ δ3 = δ1∪ δ2∪ δ3 và F2= F23∪ F1 =

F1∪ F2∪ F3

Dễ thấy, M1 = M2, do đó (M1kM2)kM3 = M1k(M2kM3) hay phép toán ghép nối có tính chất kết hợp

Ta có M1 = hS1, s01, Σ1, δ1, F1i, M2= hS2, s02, Σ2, δ2, F2i, , Mn= hSn, s0n, Σn, δn, Fni lần lượt là các máy hữu hạn của n trang Web với M1 là trang Web mốc Đầu tiên, M1

ghép nối với Mi (2 <= i <= n) thành M1i, thuật toán sau đó sẽ tiến hành ghép nối M1i

với Mj (2 <= j <= n và i 6= j) Thuật toán ghép nối kết thúc sau khi duyệt qua tất cả các máy hữu hạn trạng thái

Nhận xét 1 Phép ghép nối như định nghĩa trên có tính kết hợp nhưng không có tính giao hoán

2.3 Ví dụ

Để minh họa cụ thể cho phần đặc tả Website, ta xây dựng một Website đăng ký môn học

có cấu trúc như sau:

Hình 1: Mô tả một website đăng ký môn học

Theo mô tả trong hình 1 Website bao gồm các trang:

• Login: Trang thực hiện việc đăng nhập của Website Giả định có 3 loại người dùng

và với mỗi loại sẽ dẫn đến một trang Web khác nhau sau khi đăng nhập

• Admin_main, PDT_main, Normal_main: Các trang sau khi đăng nhập, 3 trang Web thể hiện cho việc 3 loại người dùng khác nhau sau khi đăng nhập sẽ có nội dung khác nhau

• Report: Giả sử, sau khi người dùng thực hiện thao tác ở trang Admin_main bị sai sót, hệ thống sẽ chuyển sang trang Report để báo cáo kết quả thao tác đó

Máy hữu hạn trạng thái M1 của trang đăng nhập (Login) được đặc tả như trong hình 2 với trạng thái khởi đầu là s01= S_index và có tập trạng thái kết thúc là: F1 = { Admin_main, N ormal_main, P DT _main}

Trang 6

Hình 2: Máy hữu hạn trạng thái M1 của trang đăng nhập.

Hình 3: Máy hữu hạn trạng thái M2 của trang Admin

Hình 3 đặc tả máy hữu hạn trạng thái M2 của trang Admin với trạng thái khởi đầu

là s02= Admin_main và trạng thái kết thúc là F2 = {Report}

Để xây dựng máy hữu hạn trạng thái của Website từ hai máy hữu hạn trạng thái con

ở trên, thuật toán thực hiện các bước sau:

• Thuật toán tiến hành kiểm tra xem s01∈ F2 hay s02∈ F1 hay không? Kết quả cho thấy, s02= Admin_main ∈ F1 = {Admin_main, N ormal_main, P DT _main}

• Máy hữu hạn trạng thái M = M1kM2của Website được xây dựng với trạng thái khởi đầu s0= s01= S_index và tập trạng thái kết thúc F = F1∪ F2 = {Admin_main,

N ormal_main, P DT _main, Report}

Hình 4: Máy hữu hạn trạng thái M của của Website sau khi thực hiện thuật toán ghép nối

Trang 7

3 Kiểm thử

Sử dụng phương pháp tiếp cận dựa trên mô hình máy hữu hạn trạng thái, công cụ xây dựng thuật toán tự động sinh các ca kiểm thử (test case) để kiểm thử ứng dụng Web dựa trên các hành vi tương tác giao diện của trang Web đó

3.1 Thuật toán kiểm thử

Transition là hàm chuyển trạng thái thông qua một sự kiện

Test path Thuật toán sinh ra các đường dẫn kiểm thử (test path), mỗi đường dẫn có dạng <trạng thái bắt đầu> * <sự kiện> = <trạng thái> * = <trạng thái kết thúc> Thuật toán sinh tự động các ca kiểm thử đảm bảo các yêu cầu sau:

• Đảm bảo tất cả các đỉnh và các cạnh của đồ thị đều phải được duyệt qua

• Kết quả trả về là nhiều test path không trùng nhau, mỗi test path có trạng thái bắt đầu chính là trạng thái bắt đầu của máy hữu hạn trạng thái, và có trạng thái kết thúc là một trong những các trạng thái kết thúc của máy hữu hạn trạng thái, xen giữa hai trạng thái là một sự kiện

Chi tiết các bước của thuật toán tìm kiếm theo chiều sâu (Depth First Search) được trình bày trong thuật toán 1 với biến đầu vào là trạng thái bắt đầu i và các đường dẫn kiểm thử được lưu trong biến P AT H Đầu tiên, biến backT rack được khởi tạo với giá trị ban đầu là true (dòng 3) Sau đó sẽ kiểm tra lần lượt từng transition (dòng 4), nếu transition chưa được duyệt (dòng 6) biến backT rack được gắn giá trị f alse (dòng 6), trạng thái bắt đầu của transition được thêm vào chuỗi arr - biến lưu các đường dẫn kiểm thử tạm thời (dòng 14) và thông báo cạnh đã được duyệt (dòng 7) Thuật toán thực hiện

đệ quy với đầu vào là trạng thái cuối của transition vừa duyệt (dòng 9) cho đến khi không thêm được transition nào vào đường dẫn kiểm thử arr, khi đó biến backT rack có giá trị true (dòng 13), arr được thêm vào P AT H (dòng 14) Cuối cùng, các trạng thái trong arr được loại bỏ để bắt đầu tạo một đường dẫn kiểm thử mới (dòng 10)

Algorithm 1 Depth_F irst_Search: int i, path PATH

1: // P AT H là biến lưu các test path

2: // arr lưu test path tạm thời

3: Bool backTrack = true;

4: for tất cả các cạnh do

5: if cạnh chưa được duyệt then

6: backTrack = false;

7: Thông báo cạnh đã duyệt qua;

8: Thêm đỉnh vào arr;

9: Depth_F irst_Search: j, P AT H;

10: Bỏ đỉnh khỏi arr

11: end if

12: end for

13: if backTrack = true then

14: Thêm arr vào P AT H;

15: end if

Thuật toán 1 là sự mở rộng của thuật toán duyệt đồ thị theo chiều sâu, sau khi duyệt

đồ thị theo chiều sâu tất cả các cạnh của đồ thị sẽ được duyệt qua Tuy nhiên, ở một số

Trang 8

đường dẫn kiểm thử, trạng thái kết thúc của đường dẫn kiểm thử đó không phải là trạng thái kết thúc của đồ thị Do đó, phương pháp sử dụng thuật toán 2 thêm các trạng thái ngay sau những đường dẫn kiểm thử sao cho trạng thái cuối cùng của mỗi đường dẫn kiểm thử là một trạng thái kết thúc của đồ thị Đầu vào của thuật toán 2 là tập các đường dẫn kiểm thử P AT H Thuật toán duyệt từng đường dẫn kiểm thử trong P AT H, giả sử đường dẫn kiểm thử i có trạng thái cuối không phải là trạng thái kết thúc của đồ thị thì thuật toán kiểm tra chừng nào điều kiện trên còn thỏa mãn (dòng 4) thì thuật toán sẽ tìm cạnh của đồ thị có đỉnh đầu giống với trạng thái cuối của đường dẫn kiểm thử đó (dòng 6) và thêm đỉnh cuối của cạnh vào test path (dòng 7)

Algorithm 2 ADD_P ath: path P AT H

1: loop

2: for duyệt các test path của P AT H do

3: if trạng thái cuối cùng của test path i không là trạng thái kết thúc then

4: while trạng thái cuối cùng của test path i không là trạng thái kết thúc do

5: for duyệt tất cả các cạnh của đồ thị do

6: if cạnh đồ thị có đỉnh bắt đầu là đỉnh cuối của P AT H then

7: Thêm đỉnh cuối của cạnh vào test path i;

10: end while

11: end if

12: end for

13: end loop

3.2 Ví dụ minh họa

Giả sử ta coi máy hữu hạn trạng thái được đặc tả như hình 5 là một đồ thị có hướng với các đỉnh là các trạng thái và các cạnh là các transition

Hình 5: Máy hữu hạn trạng thái của trang đăng nhập

Áp dụng thuật toán 1 và thuật toán 2 đã nêu ở phần trước, ta có bảng các test path sau:

• Tất cả các cạnh đều đã được duyệt qua

Trang 9

• Mọi test path đều bắt đầu bằng trạng thái khởi đầu của đồ thị.

• Trạng thái cuối cùng của mỗi test path là trạng thái nằm trong tập trạng thái kết thúc của đồ thị

Bảng 3 là kết quả của quá trình duyệt đồ thị ở trên với 2 cột, cột bên trái là số thứ

tự các đường dẫn kiểm thử và cột bên phải là chi tiết từng đường dẫn kiểm thử đó Ở cột bên phải, mỗi dòng là một đường dẫn kiểm thử của hệ thống

Bảng 3: Một số sự kiện cơ bản Test

path

Kết quả

1 S_index * t_username = username * t_password = usr+pass * del_password = username * t_submit = error * t_back = S_index

* t_submit = error

2 S_index * t_username = username * t_password = usr+pass * del_password = username * t_submit = error * t_back = S_index

* t_password = password * t_username = usr+pass * t_submit = PDT_main

3 S_index * t_username = username * t_password = usr+pass * del_password = username * t_submit = error * t_back = S_index

* t_password = password * t_username = usr+pass * t_submit = Admin_main

4 S_index * t_username = username * t_password = usr+pass * del_password = username * t_submit = error * t_back = S_index

* t_password = password * t_username = usr+pass * t_submit = Norm_main

5 S_index * t_username = username * t_password = usr+pass * del_password = username * t_submit = error * t_back = S_index

* t_password = password * t_username = usr+pass * del_username

= password * t_submit = error

3.3 Thực hiện các ca kiểm thử

Sau khi các ca kiểm thử được sinh ra, công cụ tiến hành kết nối với Website cần kiểm thử thông qua các Selenium-WebDriver API để chạy tự động các ca kiểm thử đó Một số API được sử dụng bao gồm:

• API kết nối đến một trình duyệt Web

Selenium kết nối đến một đối tượng trình duyệt Web và cung cấp những phương thức để điều khiển trình duyệt một cách tự động

WebDriver ffdriver = new FirefoxDriver();

Trong ví dụ trên, đối tượng f f driver được sử dụng để điểu khiển trình duyệt

F ireF ox Sau khi thực hiện lệnh này, trình duyệt F ireF ox sẽ được khởi động

Trang 10

• Truy cập một trang Web.

Sau khi kết nối đến một trình duyệt, Selenium sử dụng phương thức get để đi đến một trang Web

driver.get("http://www.google.com");

• Xác định vị trí các phần tử Web

Selenium-Webdriver sẽ sử dụng hàm f indElement để xác định vị trí của một phần

tử Web thông qua các thuộc tính của phần tử Web đó ví dụ như qua định danh (id), tên (name), lớp (class) hay đường dẫn (link Text)

Theo ID:

//<div id="coolestWidgetEvah"> </div>

WebElement element = driver.findElement(By.id("id_value"));

Theo Name:

// <input name="cheese" type="text"/>

WebElement cheese = driver.findElement(By.name("cheese"));

Theo Class:

// <div class="cheese"><span>Gouda</span></div>

List<WebElement> cheeses = driver.findElements(By.className("cheese")); Theo link Text:

// <a href="http://www.google.com/search?q=cheese">cheese</a»

WebElement cheese = driver.findElement(By.linkText("cheese"));

• Thao tác với các phần tử Web

Sau khi xác định được vị trí của phần tử Web, Selenium-Webdriver cung cấp một

số hàm để thực hiện các thao tác chuột và bàn phím với phần tử Web đó

// Tìm một phần tử Web nhập văn bản có giá trị name là q WebElement element = driver.findElement(By.name("q"));

// Để nhập một số ký tự element.sendKeys("Cheese!");

// Xác nhận thông tin element.submit();

Ví dụ trên mô tả quá trình nhập một đoạn văn bản vào một ô textbox Quá trình gồm 3 bước: tìm phần tử textbox, nhập giá trị và xác nhận thông tin

Với những API thông dụng như đã kể ở trên, công cụ dễ dàng kiểm thử trang Web bằng việc kết nối đến trang Web và tiến hành chạy các ca kiểm thử liên quan đến các phần tử Web trên trang Web đó

Công cụ kiểm thử Web hiện nay đang được triển khai thử nghiệm có thể thực hiện việc kiểm thử tự động một ứng dụng Web với đầu vào là thư mục chứa các tệp tin excel đặc

Ngày đăng: 10/11/2019, 13:27

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w