HCM, các chuyên gia đã nhận định: “Với đà tăng trưởng mạnh mẽ của ngành gia công phần mềm, trong vài năm tới, Việt Nam thiếu khoảng 10.000 kiểm thử viên.” Bên cạnh đó, xu hướng áp dụng
Trang 1
Đại học Công nghệ Tp.HCM TRƯỜNG DAI HOC CÔNG NGHỆ TP HCM
BAO CÁO ĐÔ ÁN
KIEM THU VA DAM BAO CHAT LUQNG PHAN MEM
Dé Tai: Espresso Tén Website: https://hasaki.vn/
Giảng viên hướng dan :Th.S Trịnh Công Nhựt
Sinh viên thực hiện :Nguyễn Nhựt Á Tiên
Lê Nguyễn Trung Nam
TP Hồ Chí Minh, 2022
Trang 2Mục lục U89 10000 3
051019) 6805)3.951000010577 4
II on 4 J9 0 ti o7 sa 6 6 (gŒgHAH,.HĂH 4
"môn 4
”n ho n 5
3 Lợi ÍCh CỦa €SDTSSO Ăn HH TH HH vn TH 5 3.1 Quy trình làm việc espresso rất đơn giản dé sử dụng .-. -7 cc2+ 6 3.2 Phản hồi nhanh chóng và đáng tin cậy cho các nhà phát triển - 6 3.3 Kiểm tra ít đi động hơn Flakiness, -2- 2 2£ 5s+2k+2EE22E22EE22222212212222222 c2, 6 3.4 Phát triển tự động hóa kiêm tra Espresso không khó . - 2-52 szz2z52z 6
"`." 6
NI so ong 0.000 in 0 S.HTH,.HỈÃH.H, 7 4.2 Thiết lập Espresso và AndroidJUnitRunner -.2 22©22©-s+2222zs+2zz2zszcse2 7 4.3 Viết test đầu tiên của bạn trong ESpres§O - 2-22 ©2222222222222E22222222zxecze2 7
Trang 3LỜI NÓI ĐẦU
Ngày nay, công nghệ thông tin nói chung và công nghệ phần mềm nói riêng đang chiếm một vị trí quan trọng trong tiến trình công nghiệp hoá, hiện đại hoá đất nước Song song với việc phát triên công nghệ phần mềm luôn tiềm ấn những thách thức cho dành các doanh nghiệp, nhà phát triển phần mềm trong việc kiểm soát lỗi, chất lượng đầu ra của sán phâm Tuy nhiên ở Việt Nam, sô lượng các kiểm thử viên vẫn chưa đáp ứng được với nhu cầu của thị trường Tại Hội nghị Quốc tế về kiểm thử phần mềm tự động (12/2011,
TP HCM), các chuyên gia đã nhận định: “Với đà tăng trưởng mạnh mẽ của ngành gia công phần mềm, trong vài năm tới, Việt Nam thiếu khoảng 10.000 kiểm thử viên.”
Bên cạnh đó, xu hướng áp dụng tự động hoá đang được triển khai rộng rãi ở nhiều lĩnh vực, trong đó có kiểm thử phần mềm Đặc biệt, khi kiếm thử phần mềm là công đoạn chiếm phân lớn thời gian trong quá trình phát triển dự án phần mềm thì sự ra đời của các công cụ kiểm thử tự động càng có ý nghĩa hơn bao giờ hết, giúp tiết kiệm thời gian, công
sức và tiền bạc Selenium là một công cụ hỗ trợ kiểm thử tự động dành cho các ứng dụng
Web, hoạt động trên hầu hết các trình duyệt phô biến hiện nay như Firefox, Chrome, Internet Explorer, Safri, v.v cũng như hỗ trợ số lượng lớn các ngôn ngữ lập trình Web phô biến Công cụ Selenium hiện được đánh giá là một trong những công cụ tốt nhất cho kiểm thử tự động các ứng dụng Web
Trong quá trình làm đồ án, do còn hạn chê về thời gian và kinh nghiệm thực tế, em mong nhận được những góp ý chân thành từ thầy cô và các bạn
Trang 4CHUONG I: ESPRESSO
£m
1 Khai niém espresso
espresso
Espresso là một khung thử nghiệm giao diện người dùng Android (UI mã nguồn
mở do Google phát triên Espresso là một khuôn khô thử nghiệm đơn giản, hiệu quả
và linh hoạt Nó hướng dẫn những điều cơ bản về khung Espresso, cách thiết lập khung Espresso trong một dự án, quy trình làm việc của khung và tìm kiếm, tự động hóa và khẳng định các thành phần giao diện người dùng trong môi trường thử nghiệm với ứng dụng Android đơn giản
2 Uu va nhược điểm Espresso
2.1 Ưu điểm
- Độ ồn định và tốc độ: Nhìn chung, Espresso ồn định để kiểm tra giao diện người dùng Android tự động Thêm vào đó, việc thực hiện các tập lệnh kiểm tra nhanh hơn nhiều Tất cá là nhờ Espresso tự động đồng bộ hóa các phần
tử giao điện người dùng và các hành động kiểm tra: khung phát hiện khi nào một phân tử có sẵn để kiêm tra và chạy các lệnh kiểm tra cho phù hợp
- _ Quy trình làm việc đơn giản và phản hồi nhanh chóng: Espresso cho phép biên dịch các bài kiểm tra giao diện người dùng Android tự động thành một APK riêng biệt Điều nảy có nghĩa là bộ thử nghiệm sẽ chạy bên cạnh ứng
dụng trên thiết bị, rất thuận tiện Trên hết, vì Espresso không yêu cầu giao tiệp với máy chủ, nó cung cap phan hoi nhanh
Trang 5thành phan: viewMatchers, viewActions va viewAssertations API của Espresso gitp các bài kiểm tra giao điện người dùng Android đễ báo trì và thay đổi Ngoài ra, nó có thể tùy chỉnh
- _ Dễ đàng thiết lập và tích hợp với Android Studio: Quá trình thiết lập cho Espresso đơn giản Hơn nữa, Espresso được tích hợp với môi trường phát triển Android gốc Android Studio Điều này làm cho Espresso đễ sử dụng nếu bạn đã quen thuộc với thiết bị đo đạc Android
- _ Mọi người đều có thể sử dụng nó: Espresso là công cụ kiêm tra tự động giao diện người dùng được các nhà phát triển Android lựa chọn Nó được tích hợp với Android Studio IDE và hỗ trợ các ngôn ngữ dành riêng cho nền tang
2.2 Nhược điểm
- _ Giới hạn trong ngôn ngữ và ngăn xếp công nghệ: Espresso chỉ hỗ trợ các ngôn ngữ lập trình Java và JUnit, điều này làm cho nó trở thành một công cụ hoàn hảo cho các nhà phát triên Android, những người đã quen với việc tạo các ứng dụng sốc Đồng thời, đó là một nhược điểm vì nó có nghĩa là bạn bị giới hạn trong ngăn xếp của mình
- Ban địa để kiểm tra giao điện người dùng Android: Đây là một bất lợi vì kiêm tra giao diện người dùng Android tự động Nhưng ngày nay, hầu hết mọợi nhóm di động trên khắp thế giới đều phát triển và cần thử nghiệm cả ứng dụng Android va iOS Chon Espresso chac chắn có nghĩa là bạn cần tìm mộtcông cụ / khung tương tự dé tự động hóa thử nghiệm giao diện người
dùng iOS Điều đó tăng gấp đôi công việc tạo và duy trì các tập lệnh thử nghiệm
3 Lợi ích của espresso
Trang 63.1 Quy trình làm việc espresso rất đơn giản đề sử dụng
Cách thức hoạt động của Espresso là cho phép các nhà phát triên xây dựng một bộ thử nghiệm dưới dạng APK độc lập có thê được cài đặt trên các thiết bị mục tiêu cùng với ứng dụng đang được thử nghiệm và được thực thi rất nhanh
3.2 Phản hồi nhanh chóng và đáng tin cậy cho các nhà phát triển
Khi các nhà phát trién đang có gắng đây nhanh quá trình trién khai, Espresso cung cấp cho họ phán hôi nhanh chóng về những thay đổi mã của họ đề họ có thể chuyền sang tính năng tiếp theo hoặc sửa lỗi; Có một khung kiểm tra mạnh mẽ và nhanh chóng đóng một vai trò quan trọng
Espresso không yêu cầu bat kỳ máy chủ nào đê giao tiếp; Thay vào đó, nó chạy song song với ứng dụng và cung cấp kết quả kiêm tra rất nhanh (phút) cho nhà phát triển 3.3 Kiểm tra ít di động hơn Flakiness
Bởi vì Espresso cung cấp một phương pháp thực hiện đồng bộ, độ ôn định của chu kỳ thử nghiệm là rất cao Có một cơ chế tích hợp trong Espresso, trước khi chuyền sang các bước tiếp theo trong thử nghiệm, xác thực rằng Phân tử hoặc Đối tượng thực sự được hiền thị trên màn hình Điều này giúp loại bỏ việc thực thi kiêm tra khỏi bị phá vỡ khi đối mặt với "các đối tượng không được phát hiện" và
các lỗi khác
3.4 Phát triển tự động hóa kiếm tra Espresso không khó
Phát triển tự động hóa kiểm tra Espresso khá đễ đàng Nó dựa trên Java và Junit, là bộ kỹ năng cốt lõi cho bat ky nha phat triển ứng dụng Android nào Bởi vì
Espresso hoạt động liền mạch trong Android Studio IDE, không có thiết lập hoặc tăng cường
Ngoài những điều trên, tất nhiên, có một cộng đồng lớn được cung cấp bởi Google đã thúc đây khung tự động hóa thử nghiệm Espresso và cho phép tăng tộc
dễ đàng và nhanh chóng cho những người mới đến
Cai dat
Điều kiện cần có:
e Hiéu biét co ban vé core API Android va Kotlin
Trang 7e Android Studio phiên bản 3.1.3 trở lên
e Plugin Kotlin phién ban 1.2.51 trở lên
4.1 Tạo một dự án Android Studio
Khởi động Android Studio 3 va tao mét dy 4n mdi cé activity rong goi la
MainActivity Hãy chắc rằng có hỗ trợ Kotlin
a Create Android Project
4.2 Thiết lap Espresso va Android JUnitRunner
Sau khi tạo dự án mới, hay dam bao thém cdc dependency (phan phy thudéc) sau day tir Android Testing Support Library trong build.gradle.Trong huéng dan nay, chúng tôi đang sử dụng thư viện Espresso phiên bản 3.0.2 mới nhất (thời điểm viết
bài).
Trang 8Viéc dong bộ hóa Espresso, khéng biết làm sao để đợi một animation kết thúc, nó
có thê khiến vài test that bại - nếu ban cho phép animation dién ra trén thiét bi test
Dé tat animation trên thiết bị test của ban, hay di tdi Settings > Developer Options
và tắt tất cả các tùy chon sau trong myc "Drawing":
e Quy mô animation của cửa số
e Quy mô animation của chuyền tiếp
e Quy m6 thời lượng animation
4.3 Viết test đầu tiên của bạn trong Espresso
Test màn hình Login Dưới đây là cách quy trình đăng nhập bắt đầu: người dùng khởi chạy ứng dụng và màn hình đầu tiên được hiên thị chứa duy nhất một nút Login Nhân nút Login sẽ mở ra màn hình LoginActivity Màn hình này chỉ chứa hai EditTexts (username va password) va nut Submit
Dưới đây là bé cue MainActivity:
Trang 9
Dưới đây là bố cục LoginActivity
Trang 10Bây giờ hãy viết một test cho class MainActivity Di dén class MainActivity của ban, di chuyén con trỏ đến tên MainActivity va nhan Shift-Control-T Chon Create New Test trong menu popup
Nhắn nút OK và một hộp thoại khác xuất hiện Chọn thư mục androidTest và nhấp
vào nút OK một lân nữa
import android support.test.nunner.AndroidJUnit4
import org.junit.runner.RunWith
@RunWith(AndroidjJUnit4: : class)
class MainActivityTest {
Test cac activity
Chúng ta can phai thong bao cho Espresso biét Activity nào cần mở hoặc khởi động trước khi thực hiện và loại bỏ sau khi thực hiện bat kỳ phương thức test nào
Trang 11import android support.test.unner.Andoid3Unit4
Tim mét View qua onView()
Trong file bố cục MainAetivity của chúng tôi, chúng tôi chỉ có một tiện ích con — nút Login Hãy test một kịch bản mà người dùng sẽ tìm thấy nút đó và nhấp vào nút đó
OnView(withId(R.id.btn_login)) sé tra về ViewlInteraction cho View có ID là R.id.btn_login
Trang 12
Thực hiện các thao tác trên một View
Trên đối tượng ViewInteraction được trả về bằng cách gọi onView(Q), chúng ta có thể mô phỏng các hành động mà người dùng có thê thực hiện trên một widget Ví
dụ, chúng ta có thê mô phỏng một hành động click chỉ bằng cách gọi phương thức static click() trong class View Actions Hành động này sẽ trả về một đối tượng
ViewAction
@Test
fun clickLoginButton_opensLoginUi() {
onView(withId(R.id.btn_login) ).perform(click())
Phương thức này thực hiện hành động đã cho trên View được chọn bởi view
matcher hiện tại
Xác thực với View Assertion
Trang 13Hãy hoàn thành phần test của chúng ta, để xác nhận rằng màn hình LoginActivity được hiền thị bất cứ khi nào nút Login được nhấp vào Mặc dù chúng ta đã thấy cách sử dụng check(Q trên Viewlnteraction, nhưng hãy sử dụng nó một lần nữa,
truyền cho nó một ViewAssertion khác
@Test
fun clickLoginButton_opensLoginUi() {
onView(withId(R.id.tv_login) ).check(matches(isDisplayed()))
Bên trong file bố cục LoginAectivity, ngoài EditTexts và một Button, chúng ta
cũng có một TextView với ID là R.id.tv_login
Các test của bạn sẽ thành công nếu bạn làm theo tất cả các bước thật chính xác
13
Trang 141
- CHƯƠNG II: TEST CASE
Giới thiéu ve Selenium IDE
“thu” các thao tác của mình trên đối tượng cần kiểm tra thành 1 tập các câu lệnh
“Selenese” (ngôn ngữ kịch bản được phát triển cho Selenium IDE và Selenium Core có dạng bản HTML) Sau đó chạy lại các câu lệnh này để kiêm tra Chức năng này rất hữu dụng, cho phép tiết kiệm thời gian viết kịch bản kiểm tra Selenium IDE cho phép lưu kịch bản đã thu dưới nhiều loại ngôn ngữ lập trình
12 Cài đặt
- Truy cập địa chi: http://www.seleniumhq.org/download bằng trình duyệt Firefox
- _ Tìm đến mục Selenium IDE và click vào version mới nhất đề tải
- _ Tiến hành cài đặt, khởi động lại trình duyệt (Lúc này ở phần Tools của
EireFox có hiện thêm Selenium IDE
- Giao diện Selenium IDE:
Trang 15Base URL _https://uat-warehouse.specom.io/ v
Fast Slow &- `)
Tost Case 2-3 Table 8
selenlum-eho Command Target Value
type id=raw_package_ width javascript(Math.floor(
type id=raw_package_hei javascript(Math.floor(
7 type id=raw_package_mer Amazon
“lệnh” sao cho phù hợp Trong trường hợp bạn chạy nhiều test cases, khi gặp lỗi Selenium sẽ bỏ qua test case đó và chạy những test cases tiếp theo Thông tin lỗi
sẽ được ghi nhận lại và được đánh dấu đỏ:
Trang 16type id-=username thuyhienit
type id=password hehehehe
| [info] eeesting: |clickAndWait | id= Xe all
[error] Element id=play_all not found
| [info] Test case failed
[info] Executing: ie | id=play_all | |
Trang 17
riretox II Edit Actions Options Window’ Help
New Test Case %N
Open %O '_ Save Test Case 3S -ˆ
Save Test Case As
Recent Test Cases >
Add Test Case #D Properties
New Test Suite Open Test Suite
oi Save Test Suite
Save Test Suite As
Export Test Suite As >
: Recent Test Suites Đn
Test case co ban
Buoc 1: Truy cập vào Website:
https://hasaki.vn/
Bước 2: CHiek chuột vào linkText Đăng nhập Bước 3: Nhập tại khoản
và mật khâu sai
Bước 4: CHiek chuột vào button dang nhap Bước 5: Truy cập vào Website:
https://hasaki.vn/
Buéc 6: Click chudt vao linkText Dang nhap Bước 7: Nhập tài khoản
Ruby / RSpec / Remote Control
Ruby / Test::Unit / Remote Control Python 2 / unittest / WebDriver Python 2 / unittest / Remote Control Java / JUnit 4 / WebDriver Java / JUnit 4 / WebDriver Backed Java / JUnit 4 / Remote Control Java / JUnit 3 / Remote Control Java / TestNG / Remote Control C# / NUnit / WebDriver
C# / NUnit / Remote Control
1 Dang nhap Pass không thành
công Cách kiểm tra còn xuất hiện button đăng nhập
2 Đã đăng nhập thành công vào trang chủ Cách kiêm tra có xuất hiện tên username