TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TINKHOA CÔNG NGHỆ PHẦN MỀM BÁO CÁO THỰC TẬP PHÁT TRIỂN CÔNG CỤ KIỂM THỬ TỰ ĐỘNG Công ty thực tập : Công ty TNHH LogiGear Việt Nam Người phụ trách : Hoàn
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
BÁO CÁO THỰC TẬP
PHÁT TRIỂN CÔNG CỤ KIỂM THỬ TỰ
ĐỘNG
Công ty thực tập : Công ty TNHH LogiGear Việt Nam Người phụ trách : Hoàng Nguyễn Khắc Duy
Thực tập sinh : Phan Lê Quang
TP Hồ Chí Minh, tháng 01 năm 2021
Trang 2LỜI MỞ ĐẦU
Với tốc độ phát triển vượt bậc của ngành công nghệ phần mềm theo đó là nhu cầu làm phần mềm cũng như số lượng phần mềm ngày càng tăng Không những thế, chất lượng phần mềm cũng dần trở thành yếu tố thiết yếu trong một phần mềm Để đo lường cũng như rà soát được chất lượng phần mềm đó là kiểm thử Vậy vấn đề đặt ra là liệu kiểm thử thủ công có thật
sự đạt hiệu quả tối ưu ? Có cách nào để tăng tốc độ kiểm thử, tiết kiệm nguồn nhân lực và tối ưu chi phí ? Thật vậy, đáp án chính là “Kiểm thử tự động” Trong phạm vi của môn “Thực tập doanh nghiệp” , em xin giới thiệu về “Kiểm thự tự động “ nói chung và quá trình làm việc của
em tại Công ty TNHH LogiGear Việt Nam
Sau bốn năm học tập trên trường, do muốn học hỏi them nhiều kiến thức thực tế cũng như muốn trải nghiệm trong môi trường doanh nghiệp Vì vậy, em quyết định chọn LogiGear - một môi trường lý tưởng, hiện đại, chuyên nghiệp - là nơi sẽ giúp em thực hiện được dự định này
Trang 3LỜI CẢM ƠN
Đầu tiên, em trân trọng gửi lời cảm ơn tới công ty LogiGear Việt Nam đã tạo điều kiện cho em có cơ hội thực tập tại công ty
Chỉ trong vòng thời gian ngắn chưa đầy 4 tháng mà các Anh/Chị mentor ở công ty đã tận tình chỉ dạy cho em nhiều kiến thức bổ ích , không những kiến thức chuyên môn về kiểm thử tự động, kỹ năng lập trình, công nghệ, mà em còn được đào tạo các kỹ năng mềm: kỹ năng thuyết trình, kỹ năng làm việc nhóm và quan trọng nhất là kỹ năng nghiên cứu cũng như giải quyết vấn
đề
Đặc biệt, em chân thành cảm ơn sự dẫn dắt nhiệt tình của anh Phạm Đỗ Huy Hoàng (Technical Lead của nhóm em), em đã học hỏi rất nhiều từ kỹ năng giải quyết vấn đề cũng như
kỹ năng nghiên cứu và sử dụng công nghệ mới từ Anh Bên cạnh đó, em cũng không quên cảm
ơn sự giúp đỡ của Anh Phạm Nguyên Trình (Product Owner), Anh Hoàng Nguyễn Khắc Duy (Scrum Master), Anh Ngô Hoàng Minh (Giám Đốc) đã chỉ dạy em rất nhiều điều về tư duy làm sản phẩm, kỹ năng ước lượng công việc và phân tích vấn đề Em may mắn được dự nhiều buổi họp của các Anh được xem các Anh phân tích vấn đề, lập kế hoạch, giải quyết vấn đề, cải thiện sản phẩm và đặc biệt là tư duy Agile để làm sản phẩm và chuyển giao nhanh nhất có thể Cũng xin cảm ơn thầy cô trong khoa Công nghệ phần mềm đã nhiệt tình hỗ trợ, tạo điều kiện em làm bài báo cáo này
Cũng xin cảm ơn thầy cô trong khoa Công nghệ phần mềm đã nhiệt tình hỗ trợ, tạo điều kiện em làm bài báo cáo này
Phan Lê Quang
TpHCM, ngày 06 tháng 01 năm 2021
Trang 4NHẬN XÉT CỦA KHOA
Trang 5
MỤC LỤC
Contents
Chương 1: Giới thiệu công ty thực tập 6
1 Giới thiệu công ty LogiGear 6
2 Sản phẩm của công ty 6
Chương 2: Nội dung thực tập 7
1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty 7
2 Tìm hiểu quy trình và cách thức làm việc 7
3 Nghiên cứu kỹ thuật 10
3.1 Các công cụ làm việc 10
3.2 Tìm hiểu về project sắp tham gia 11
3.3 Tìm hiểu về các công nghệ & kỹ thuật liên quan 11
4 Thực hiện dự án 14
5 Lịch làm việc 14
Chương 3: Chi tiết về dự án 15
1 Giới thiệu về dự án 15
1.1 Chi tiết tính năng 16
2 Thực hiện 16
3 Kế hoạch 17
TÀI LIỆU THAM KHẢO 18
TỔNG KẾT 19
Trang 6Chương 1: Giới thiệu công ty thực tập
1 Giới thiệu công ty LogiGear
LogiGear được thành lập tại Thung lũng Silicon vào năm 1994 bởi các nhà lãnh đạo hàng đầu trong ngành kiểm thử phần mềm Trụ sở chính đặt tại Thung lũng Silicon Bên cạnh đó phần lớn nhân viên kiểm thử phần mềm l tại Thành phố Hồ Chí Minh
và Đà Nẵng, Việt Nam
Được vinh danh trong top những công ty đang phát triển nhanh nhất năm 2009 (2009’s Fastest Growing Companies) bởi Inc 500|5000, Silicon Valley Business Journal and the San Francisco Business Times
2 Sản phẩm của công ty
• Test Architect
Là một nền tảng tích hợp kiểm thử tự động tập trung vào việc mở rộng phạm vi kiểm thử và năng suất Vì là tool kiểm thử “ít code”, nên Test Architect sẽ giúp cho các tester ở tất cả các cấp độ dễ tiếp thu và sử dụng để kiểm thử tự động
• Gondola Studio
Trang 7Gondola Studio là một nền tảng tích hợp kiểm thử tự động cho các ứng dụng hiện đại chạy trên Android & iOS, trình duyệt trên thiết bị di động và trình duyệt trên máy tính với các điểm nổi bật sau :
Chương 2: Nội dung thực tập
Đợt thực tập với chủ đề “Phát triển công cụ Kiểm thử tự động” nhằm mục đích giúp sinh viên thực tập được đào tạo toàn diện về lập trình ứng dụng kiểm thử cùng các kỹ năng kiểm thử liên quan Tại công ty, sinh viên có cơ hội được học tập, khám phá và làm việc trong một môi trường kiểm thử chuyên nghiệp
1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty
Thời gian : 1 ngày
Nội dung :
• Giới thiệu về công ty, quá trình thành lập và phát triển, quy trình làm việc từ cao xuống thấp, cách thức tổ chức của công ty
• Giới thiệu về cách thức làm việc trong công ty như thời gian đi làm, các quy định cần phải tuân thủ, cách sử dụng email trong công việc…
• Giới thiệu về team và sản phẩm sẽ thực hiện Đồng thời bàn giao công việc, set up máy và môi trường để làm việc
Kết quả :
• Hiểu thêm về công ty LogiGear, quá trình thành lập và phát triển Có thêm các kỹ năng về việc sử dụng email trong công việc, tác phong làm việc có kế hoạch, có
kỷ luật, có trách nhiệm
• Biết cách đọc document để cài đặt máy và môi trường sao cho phù hợp với yêu cầu công việc
2 Tìm hiểu quy trình và cách thức làm việc
Thời gian : 1 tuần
Nội dung :
• Được đào tạo về Agile:
Trang 8o Định nghĩa:
là phương thức phát triển phần mềm linh hoạt, được ứng dụng trong quy trình phát triển phần mềm với mục tiêu là đưa sản phẩm đến tay người dùng càng nhanh càng tốt
o Tôn chỉ Agile :
▪ Cá nhân và sự tương hỗ quan trọng hơn quy trình và công cụ: Trọ
ng tâm đặt lên con người, xây dựng tương tác và hỗ trợ giữa các t hành viên trong nhóm Những thành viên có năng lực, chịu tương trợ nhau trong công việc sẽ mang đến thành công cho dự án
▪ Sản phẩm dùng được tốt hơn tài liệu đầy đủ: Tập trung thời gian đ
ể làm ra phần mềm hoàn chỉnh đáp ứng hoàn hảo yêu cầu khách h àng
▪ Cộng tác với khách hàng quan trọng hơn đàm phán hợp đồng: Hiể
u được khách hàng cần gì để tư vấn và điều chỉnh sản phẩm thay
vì chỉ dựa vào các điều khoản trong hợp đồng
▪ Phản hồi thay đổi hơn là bám sát kế hoạch:
Agile khuyến khích thích nghi với sự thay đổi, đó có thể là thay đ
ổi về công nghệ, nhân sự, deadline,
o Đặc trưng của Agile :
▪ Đáp ứng toàn diện nhu cầu khách hàng thông qua việc giao hàng sớm và sản phẩm có giá trị
▪ Thay đổi yêu cầu được chào đón, thậm chí là rất muộn trong quá t rình phát triển
▪ Giao phần mềm chạy được cho khách hàng một cách thường xuyê
n
▪ Nhà kinh doanh và các kỹ sư phần mềm cần làm việc cùng nhau t rong suốt dự án
▪ Xây dựng dự án xung quanh các cá nhân có động lực
Cung cấp sự hỗ trợ cần thiết, môi trường làm việc và niềm tin để hoàn thành công việc
▪ Trao đổi trực tiếp là cách truyền đạt thông tin hiệu quả nhất
▪ Thước đo chính của tiến độ là phần mềm chạy tốt
▪ Phát triển liên tục và bền vững
▪ Cải tiến sự linh hoạt bằng cách quan tâm đến kỹ thuật và thiết kế
▪ Nghệ thuật tối đa hóa lượng công việc chưa xong
Sự đơn giản là cần thiết
▪ Nhóm tự tổ chức
▪ Thích ứng thường xuyên với những thay đổi
Trang 9Kết quả :
▪ Hiểu được lý do tại sao công ty áp dụng Agile
▪ Điểm khác biệt giữa Agile và các quy trình phát phần mềm cũ như waterfall
Nó tách vòng đời phát triển dự án thành chạy nước
rút
Quá trình phát triển phần mềm được chia thành các giai đoạn riêng biệt
Nó theo một cách tiếp cận gia tăng Phương pháp thác nước là một quá
trình thiết kế tuần tự
Phương pháp nhanh được biết đến với tính linh
hoạt của nó
Thác là một phương pháp phát triển phần mềm có cấu trúc nên hầu hết thời gian nó có thể khá cứng nhắc
Agile có thể được coi là một bộ sưu tập của nhiều
dự án khác nhau
Phát triển phần mềm sẽ được hoàn thành như một dự án duy nhất
Agile là một phương pháp khá linh hoạt cho phép
thay đổi được thực hiện trong các yêu cầu phát
triển dự án ngay cả khi kế hoạch ban đầu đã được
hoàn thành
Không có phạm vi thay đổi các yêu cầu khi phát triển dự án bắt đầu
Phương pháp nhanh , theo một cách tiếp cận phát
triển lặp lại vì quy hoạch, phát triển, tạo mẫu và các
giai đoạn phát triển phần mềm khác có thể xuất
hiện nhiều lần
Tất cả các giai đoạn phát triển dự án như thiết kế, phát triển, thử nghiệm, vv được hoàn thành một lần trong mô hình Thác
Kế hoạch kiểm tra được xem xét sau mỗi lần chạy
nước rút
Kế hoạch kiểm tra hiếm khi được thảo luận trong giai đoạn thử nghiệm
Phát triển nhanh là một quá trình trong đó các yêu
cầu được dự kiến sẽ thay đổi và phát triển
Phương pháp này là lý tưởng cho các
dự án có yêu cầu nhất định và thay đổi không được mong đợi
Trong phương pháp Agile, thử nghiệm được thực
hiện đồng thời với phát triển phần mềm
Trong phương pháp này, giai đoạn
"Thử nghiệm" xuất hiện sau giai đoạn
Trang 10Agile Waterfall
"Xây dựng"
Agile giới thiệu tư duy sản phẩm, nơi sản phẩm
phần mềm đáp ứng nhu cầu của khách hàng cuối
cùng và thay đổi chính nó theo nhu cầu của khách
hàng
Mô hình này cho thấy một tư duy dự
án và đặt trọng tâm của nó hoàn toàn vào việc hoàn thành dự án
Agat methdology hoạt động đặc biệt tốt với Time
& Materials hoặc tài trợ không cố định Nó có thể
làm tăng căng thẳng trong các kịch bản giá cố
định
Giảm rủi ro trong các hợp đồng giá cố định của công ty bằng cách nhận được thỏa thuận rủi ro vào đầu quá trình
Thích các nhóm nhỏ nhưng chuyên dụng với mức
độ phối hợp và đồng bộ hóa cao
Phối hợp / đồng bộ hóa nhóm rất hạn chế
Chủ sở hữu sản phẩm với nhóm chuẩn bị các yêu
cầu chỉ là về mỗi ngày trong một dự án
Phân tích kinh doanh chuẩn bị các yêu cầu trước khi bắt đầu dự án
Đội kiểm tra có thể tham gia vào các yêu cầu thay
đổi mà không có vấn đề gì
Thật khó để thử nghiệm bắt đầu bất kỳ thay đổi nào về yêu cầu
Mô tả chi tiết dự án có thể được thay đổi bất cứ lúc
nào trong quá trình SDLC
Mô tả chi tiết cần thực hiện phương pháp tiếp cận phát triển phần mềm thác nước
Các thành viên của Nhóm Agile có thể hoán đổi
cho nhau, do đó, chúng hoạt động nhanh hơn
Cũng không cần thiết cho các nhà quản lý dự án vì
các dự án được quản lý bởi toàn bộ nhóm
Trong phương pháp thác nước, quy trình luôn đơn giản như vậy, người quản lý dự án đóng một vai trò thiết yếu trong mọi giai đoạn của SDLC
▪ Nắm được tư tưởng của Agile
3 Nghiên cứu kỹ thuật
3.1 Các công cụ làm việc
Thời gian : 1 tuần
Trang 11Nội dung : Tìm hiểu về các công cụ sẽ được sử dụng trong quá trình làm việc
Trong thời gian này, trainer đã hướng dẫn thực tập sinh tìm hiểu về các công cụ sẽ giúp ích cho trong công việc sau này Một số phần mềm trong số đó như :
• GIT: công cụ quản lý mã nguồn
• Visual Studio Code : công cụ lập trình
• Công cụ giao tiếp Rocket.Chat và các công cụ nội bộ của công ty
Thực hiện : Thực hành sử dụng các phần mềm đã nêu trên
Kết quả : Lập trình sử dụng các công cụ miễn phí, giúp dễ dàng kết hợp các công cụ
với nhau, so với việc dùng các IDE nặng nề
3.2 Tìm hiểu về project sắp tham gia
Thời gian 2 tuần
Nội dung :
• Được giới thiệu về sản phẩm Gondola Studio là công cụ kiểm thử tự động giúp bạn viết testscript thông qua giao diện đơn giản không cần nhiều kiến thức lập trình, với các điểm nổi bật sau :
▪ Giao diện thân thiện
▪ Hỗ trợ đa nền tảng
▪ Dễ dàng tùy chỉnh
▪ Dễ dàng tích hợp vào các dịch vụ đám mây hiện đại
Thực hiện :
- Tham gia đầy đủ các buổi training của công ty
- Làm các bài thực hành, kiểm tra về kiến thức đã học
Kết quả :
- Bước đầu hiểu biết về Gondola Studio
- Được sử dụng qua các chức năng của Gondola Studio
- Được tiếp xúc với các công nghệ DevOps hiện đại
3.3 Tìm hiểu về các công nghệ & kỹ thuật liên quan
Nội dung:
- Ngôn ngữ lập trình Javascript/Typescript
o TypeScript là một dự án mã nguồn mở được phát triển bởi Microsoft, nó có thể được coi là một phiên bản nâng cao của Javascript bởi việc bổ sung tùy chọn kiểu tĩnh và lớp hướng đối
Trang 12tượng mà điều này không có ở Javascript TypeScript có thể sử dụng để phát triển các ứng dụng chạy ở client-side (Angular2) và server-side (NodeJS)
o Ngoài được học các khái niệm cơ bản của Typecript còn được học các kỹ thuật lập trình sao cho code dễ bảo trì/sửa chữa Bên cạnh
đó còn được học các kỹ thuật nâng cao : Design pattern, Dependency Injection, cơ bản về xây dựng kiến trúc phần mềm,…
- ReactJS
o Định nghĩa : ReactJS được hiểu nôm na là một thư viện trong đó
có chứa nhiều JavaScript mã nguồn mở và cha đẻ của ReactJS đó chính là một ông lớn với cái tên ai cũng biết đó chính là Facebook Mục đích của việc tạo ra ReactJS là để tạo ra những ứng dụng website hấp dẫn với tốc độ nhanh và hiệu quả cao với những mã hóa tối thiểu Và mục đích chủ chốt của ReactJS đó chính là mỗi website khi đã sử dụng ReactJS thì phải chạy thật mượt thật nhanh và có khả năng mở rộng cao và đơn giản thực hiện
o Được tìm hiểu và thực hành về các khái niệm liên quan ReactJS
▪ JSX
▪ Render element
▪ Component
▪ State và Props
▪ Life cycle
▪ Form
▪ Handle event
▪ Error handler
▪ React hook
Trang 13▪ Cách viết React với Typescript
Thực hiện :
- Tham gia đầy đủ các buổi trainning
- Làm các bài tập thực hành
- Tìm kiếm tài liệu trên mạng để tìm hiểu thêm
- Thử fix một vài bug cơ bản của sản phẩm
Kết quả :
- Hiểu được những khái niệm cơ bản trong ReactJS
- Cách làm sản phẩm với ReactJS và những điểm cần lưu ý
- Redux
- Định nghĩa : Redux js là một thư viện Javascript giúp tạo ra thành một lớp quản lý
trạng thái của ứng dụng Redux được xây dựng dựa trên nền tảng tư tưởng của ngôn ngữ Elm và kiến trúc Flux do Facebook giới thiệu
- Được tìm hiểu và thực hành về kiến trúc của Redux
Giống như kiến trúc Flux, chúng ta có một component view (của React) gửi một Action Action tương tự cũng có thể được gửi từ phần khác của hệ thống Action này được gửi không phải đến trung tâm mà trực tiếp đến một Store Đây chính là điểm khác biệt lớn nhất giữa Redux và Flux Logic quyết định dữ liệu được thay đổi trực tiếp như thế nào trong các hàm được gọi là Reducers Khi Store nhận được một Action nó sẽ yêu cầu Reducers thông tin mới nhất của State được cập nhập bằng cách gửi state hiện tại và
Trang 14thông tin Action Sau đó Reducers cần trả về State mới với định dạng là Immutable Sau
đó Store sẽ tiếp tục và thực hiện cập nhập State nội bộ của nó Và bước cuối cùng, React Component sẽ thực hiện render lại
Thực hiện :
- Tham gia đầy đủ các buổi trainning
- Làm các bài tập thực hành
Kết quả :
- Hiểu được những khái niệm cơ bản trong Redux
- Sử dụng được Redux
4 Thực hiện dự án
Sau một tháng được training về ReactJS, Typescript,… thì trainer cho phép em bắt đầu tham gia vào dự án từ những bước cơ bản nhất, cụ thể ở phần lịch làm việc
Thời gian : ~ 9 tuần
5 Lịch làm việc
Mức
độ hoàn thành
Nhận xét của người hướng dẫn
1
- Tìm hiểu về phần mềm quản lý source code của công ty
- Làm quen với các công cụ làm việc trong công ty
- Học cách trao đổi, làm việc qua email
Nguyễn Khắc Duy
2
- Tìm hiểu sâu hơn về Typescript để áp dụng vào sự án
- Tìm hiểu về Visual Studio Code cũng như cách xây dựng một extension cho
Anh Phạm Đỗ Huy Hoàng