6. Autotest to help
MORE
FASTER
FREQUENT EXECUTION
IS POSSIBLE
MORE
COST-EFFECTIVE
Repeated
Rarely change
Difficult: check image size,
validate text
7. Current Demand
15 ~3000 ~20
~3 1~2 ~2W
Manual Projects Testcase
/1 Projects
Test Devices
/ Release
Excute test times
/1 version
Release time
/ 1 month
Build
Environment
Xin chào các bạn!
Tôi thực sự rất vui vì ngày hôm nay có mặt ở đây và được chia sẻ với các bạn về những kinh nghiệm đã tích lũy được trong quá trình triển khai dự án.
Ngày hôm nay tôi xin được chia sẻ với các bạn về chủ đề “Nhu cầu AutoTest và các công nghệ” mà chúng tôi đã nghiên cứu và áp dung các dự án của LineVN.
Trong chủ đề này, tôi xin chia sẻ một số nội dung sau:
Các khó khăn/thách thức mà Manual Testing phải đối mặt
Tình hình thực tế ở công ty LineVN
Hệ thống Automation Testing mà chúng tôi đang triển khai
Và cuối cùng là Demo một ứng dụng mà chúng tôi đã áp dụng Automation Testing.
Trước tiên là nội dung “Những Khó khăn/Thách thức với Manual Testing” mà QC thường xuyên phải đối mặt khi test các dự án CNTT.
Như các bạn đều biết:
-(Số lượng Test Case lớn): Ở những dự án lớn thường có số lượng TC cực lớn: Hàng trăm, hàng nghìn testcase phải thực hiện mỗi lần release.
-Cần thực hiện test trên rất nhiều môi trường,nhiều thiết bị
+ Môi trường: Dev, Test, Staging, Product
+ Thiết bị: Android, iPhone, iPad, các loại version khác nhau, các loại browser khác nhau, hệ điều hành khác nhau
-Data test khác nhau: multiple languages.
-Công việc lặp đi lặp lại ở mỗi round/ bản buil, đánh giá pass/false cho mỗi testcase
-Phải thường xuyên Check hoat đông dịch vụ realtime
=> rất nhiều công việc cần phải làm và lặp đi lặp lại hàng ngày., hàng tuần.
Điều đó thực sự gây nhàm chán, ức chế & mệt mỏi, thậm chí phát khùng cho các QC.
Vậy làm thế nào để cải thiện : … (các thông tin như trên hình)
Làm sao chúng ta có thể tăng được tính sản phẩm?
Làm sao có thể nâng cao chất lượng?
Đồng thời tăng hiệu suất công việc?
Đảm bảo tiến độ dự án.
Mà không nhàm chán, không mệt mỏi?
AutoTest có thể trợ giúp
- Nhanh hơn
- Tiết kiệm nguồn nhân lực,
Nâng cao năng suất
Có thể thực hiện bất cứ lúc nào mà không kêu ca phàn nàn, hay không mệt mỏi
Sau 1 thời gian tự tìm hiểu , nghiên cứu về Automation Testing,
chúng tôi quyết định triển khai auto test vào dự án nội bộ chúng tôi đang phát triển để tối ưu hoá nguồn nhân lực và thời gian.
THể hiện ví dụ: lên slide
Hiện tại ở LineVN( clear rõ hơn ý trên, đưa ra con số cụ thể) có:
15 dự án manual song song
Trung bình khoảng 3.000 testcase / 1 dự án
1-2 lần release / 1 tháng
Mỗi 1 version release : mất khoảng 1-2W để test manual
Môi trường test : khoảng 20 mội trường hoặc device cần test cho 1 lần release
Môi trường build : ~ 3 ( beta, staging, live)
Nhận thấy có rất nhiều công việc và giai đoạn test lặp đi lặp lại nhiều lần, các bạn Tester phải join test rất nhiều công sức.
Chúng tôi đã áp dụng AutoTest và thu được hiệu quả cao.
Trong quá trình triển khai, chúng tôi đo đạc đánh giá để ngày càng nâng cao hiệu quả áp dụng.
Sau một giai đoạn triển khai thì chúng tôi thấy hiệu suất công việc đã tăng lên rất nhiều.
Và chúng tôi đã hoàn toàn làm chủ được công nghệ Automation Testing mới nhất
Chúng tôi đã xây dựng framework có thể chạy được cho mọi thể loại dự án.
Có thể đáp ứng được cho các loại sản phẩm, hay chức năng loại
Browser/Service : Test web, service
Native App / API: Mobile , API
Real Devices: Trên thiết bị thật
End-to-End: Test sau release, trên product
**** Với những dự án lớn, số lượng testcase nhiều như LineChat thì cần phải có Autotest hỗ trợ cho manual
Tiếp theo là tôi xin được giới thiệu về các dự án ở LineVN đã thực hiện Autotest.
Có rất nhiều dự án hiện nay đang được triển khai AutoTest.
Tôi muốn chia sẻ về 2 dự án điển hình của LineVN là LINE NEWS và Weather Bot.
Trước tiên là dự án LINE NEWS
Đây là một APP tin tức triển khai trên Mobile ( Android, iOS): tương tự như app 24h hay vnexpress
Thị trường Nhật Bản.
https://youtu.be/nonmSO3fGJA
Bổ sung:
MAU: số luong ng dùng
Tổng số TC khoảng: ~2.000
Ở khung bên trái là phần thực hiện Manual Testing khi chưa áp dụng Autotest
Và khung bên phải là phần thực hiện AutoTest.
* Với Manual Test:
Tổng khối lượng cv mà đội test cần thực hiện manual :
-Devices : 23 - tổng số device phải test mỗi lần release
-OS : 9 - tổng số version phải test 1 lần release
iOs: 8,9,10, 11
android: 4.x, 5.x, 6.x, 7.x, 8.x
-Env: alpha, beta, statging, Production
* Sau khi áp dụng AutoTest thì
Thời gian chạy autotest cho một bộ testcase đầy đủ là 15p
Có thể cover được 70% chức năng chính
Monitor được 24/7
Chạy song song trên 4 thiêt bị cùng lúc
Và dự án thứ 2 áp dụng AutoTest là Weather Bot – đây là 1 Bot service
Weather Bot được tích hợp trong app LINE CHAT.
-[Giải thích Bot- là gì]: là 1 Bot thời tiết tích hợp vào Line Chat
Để check thời tiết: Ví dụ bạn nhập mã số của thành phố, rồi của quận thì sẽ ra thông tin thời tiết của vùng bạn muốn biết.
- Được triển khai ở 15 quốc gia
Với 6 ngôn ngữ
Tổng sô TC khoảng: ~5000
Ở khung bên trái là phần thực hiện Manual Testing khi chưa áp dụng Autotest
Và khung bên phải là phần thực hiện AutoTest.
* Với Manual Test:
Tổng khối lượng cv mà đội test cần thực hiện :
5000 test case
15 Bot cần thực hiện
Trên 2 devices
- Mất khoảng 3 tuần nếu test full bằng tay.
* Sau khi áp dụng AutoTest thì
Cover được 70% số testcases
Thời gian chạy 1 bộ TC là 60p
Trên 4 máy
Có thể monitor 24/7
Phần tiếp theo chúng tôi xin giới thiệu về “Hệ thống AutoTest” mà chúng tôi đã xây dựng và áp dụng cho các dự án Autotest
Đây là mô hình tổng quan về hệ thống Autotest.
Là mô hình Jenkins Master-Slave để chạy Autotest. Trong đó nhiệm vụ của mỗi thành phần Server như sau:
Jenkins Master để build project ( LINE NEWS, Weather Bot) để tạo application file ( *.apk/*.ipa)
Jenkins Slave để chạy AutoTest
Đầu tiên Jenkins Master sẽ pull code project về để build application
Sau đó send job sang Jenkins Slave
Ở Jenkins Slave sẽ nhận và thực hiện Job
Khi Job chạy sẽ pull code của Autotest về
Thực hiện Scan code với Sonarqube
Chạy autotest với Maven
Sau khi chạy xong sẽ report bug lên TestLink và tạo Issue lên Redmine ( trong trường hợp có bug)
Notify theo Line Chat và báo email cho Developer các thông tin về Autotest
Thực tế thì ở Jenkins Slave có thể chạy độc lập mà không cần get apk từ Jenkins Master
Đây là một cố các công nghệ mà chúng tôi đã sử dụng trong Autotest
Jenkins, Java, Maven,….
Hiện tại hệ thống của chúng tôi có thể chạy song song cùng lúc với 8 thiết bị kết nối với một máy Slave ( Mac OS ).
Và sau đây là phần demo với Weather Bot
Xin chân thành cảm ơn mọi người đã lắng nghe chia sẻ.
Mọi người có thể đặt Q&A.