<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
<b>TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TINKHOA CÔNG NGHỆ PHẦN MỀM</b>
</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">
TP. Hồ Chí Minh, tháng 1 năm 2024
<b>LỜI MỞ ĐẦU</b>
Trong cuộc cách mạng công nghiệp 4.0, lĩnh vực kiểm thử phần mềm (QA Tester) trởthành một phần quan trọng trong sự phát triển của xã hội, đặc biệt là trong bối cảnhcông nghệ thông tin ngày càng chiếm ưu thế. Với hơn 1.5 tỷ trang web hiện nay, nhucầu kiểm thử chất lượng phần mềm để đảm bảo tính ổn định và hiệu suất của cácứng dụng web là không thể phủ nhận.
Kiểm thử phần mềm khơng chỉ đóng vai trị quan trọng trong việc đảm bảo tính nhấtquán và đáng tin cậy của sản phẩm mà còn ảnh hưởng đến trải nghiệm người dùng.Để một ứng dụng web thu hút và giữ chân người dùng, không chỉ cần sự linh hoạttrong thiết kế mà còn cần sự đảm bảo về chất lượng phần mềm.
Chính vì vậy, quyết định trở thành một QA Tester là sự lựa chọn hợp lý của tôi để đốimặt với thách thức không ngừng của ngành cơng nghiệp phần mềm. Thơng qua hànhtrình học tập tại đại học, tơi đã tích lũy kiến thức vững về quy trình kiểm thử, kiểmsốt chất lượng, và sử dụng các công cụ kiểm thử hiện đại.
Để chứng minh khả năng của mình trong mơi trường thực tế, tơi quyết định tham giavào Cybozu VietNam Co.Ltd – một nơi mang đến khơng chỉ sự chun nghiệp mà cịncơ hội thực tập và áp dụng kiến thức vào các dự án thực tế. Tôi tự hào trở thành mộtphần của đội ngũ kiểm thử phần mềm, hướng tới mục tiêu kiểm soát chất lượng vàmang lại trải nghiệm tốt nhất cho người sử dụng.
</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">
Em cũng chân thành cảm ơn sự hỗ trợ và sự chia sẻ của toàn bộ đội ngũ nhân viên tạiCybozu VietNam Co.Ltd. Mỗi người trong em đều cảm thấy hạnh phúc và tự hào vìđược làm việc trong một mơi trường chun nghiệp, nơi mà sự sáng tạo và cam kếtđược đánh giá cao.
Cuối cùng, em khơng qn bày tỏ lịng biết ơn đến gia đình, bạn bè và những ngườithân yêu đã ln ủng hộ và khuyến khích em trong suốt thời gian thực tập.
Em tin rằng những kinh nghiệm và học thức từ thực tập này sẽ là nền tảng vững chắccho sự phát triển tương lai của em. Một lần nữa, xin chân thành cảm ơn sâu sắc.
TP. HCM, ngày 02 tháng 01 năm2024
Võ Đặng Thiện Khải
</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">
LỜI CẢM ƠN...
MỤC LỤC...
CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP...
1.1. Giới thiệu công ty Cybozu VietNam Co.Ltd...
1.2. Sản phẩm công ty...
1.3. Lịch làm việc khi thực tập tại cơng ty...
CHƯƠNG 2: NỘI DUNG THỰC TẬP...
2.1. Tìm hiểu cơng ty và các kỹ năng cơ bản trong công ty...
2.2. Nghiên cứu kỹ thuật...
<small>2.3.1 Viết testcase cho Garoon...</small>
<small>2.3.2 Automation test cho app Đặt lịch...</small>
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">
<b>CHƯƠNG 1: GIỚI THIỆU CƠNG TY THỰC TẬP</b>
<b>1.1. Giới thiệu cơng ty Cybozu VietNam Co.Ltd</b>
Cybozu Vietnam được thành lập vào năm 2009 và hiện đang phát triển để trở thànhmột chi nhánh phát triển quan trọng của Cybozu, Inc.
Cơng ty Cybozu có một đội ngũ phát triển có kinh nghiệm sâu rộng và kiến thứcchuyên sâu trong phát triển ứng dụng dựa trên Web, luôn cập nhật với những kỹthuật ứng dụng Web mới nhất. Cùng với đội ngũ phát triển, chúng tôi có một đội ngũKiểm thử Chất lượng chuyên nghiệp, thành thạo với các thủ tục kiểm thử hiện đại.Họ có kỹ năng tốt trong các loại kiểm thử khác nhau và môi trường kiểm thử.
Về lĩnh vực phần mềm, công ty Cybozu đang phát triển một phần mềm hợp tác đểphục vụ cho cơng việc nhóm trên tồn thế giới. Chúng tôi đặt mục tiêu trở thành nhàsản xuất phần mềm hợp tác số 1 thế giới. Chúng tôi đã phát triển cả phần mềm trênnền tảng địa phương và trên nền tảng dựa trên đám mây.
● Địa chỉ công ty: Ph101, Tầng 1, Tòa nhà Centre Point, 106 Đường Nguyễn VănTrỗi, Phường 8, Quận Phú Nhuận, Thành phố Hồ Chí Minh, Việt Nam.
● Capital stock: 300.000 USD (tính từ cuối năm 2022)● Quy mô công ty: 100 -150 nhân viên
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">
<b>1.2. Sản phẩm công ty</b>
Công ty có nhiều sản phẩm liên quan đến việc phát triển các ứng dụng cooperationtrong kinh doanh và làm việc nhóm trên nền tảng web application. Một vài ứng dụngnổi tiếng của công ty:
<b>● Kintone: Nền tảng ứng dụng doanh nghiệp No-Code dành cho nhóm. Kintone</b>
cho phép người dùng doanh nghiệp nhanh chóng tạo các ứng dụng tuyệt vờivà cơ sở dữ liệu động cho nhóm của họ cũng như quy trình làm việc tùy chỉnhvà quản lý dữ liệu ở một nơi.
<b>● Garoon: Garoon là một sản phẩm phần mềm hợp tác do Cybozu, Inc. phát</b>
triển, dành cho doanh nghiệp quy mơ lớn. Nó cung cấp các tính năng quản lýlịch trình, giao tiếp hợp tác, quản lý dự án, và bảo mật thơng tin. Garoon giúptối ưu hóa quy trình làm việc, tăng cường hiệu suất, và tạo ra một môi trườnglàm việc hiệu quả trong tổ chức doanh nghiệp. Điều này được thực hiện thơngqua tích hợp dữ liệu, quản lý cơng việc cá nhân và nhóm, cũng như tùy chọnbảo mật linh hoạt.
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">
<b>1.3. Lịch làm việc khi thực tập tại công ty</b>
Khoảng thời gian thực tập
21/08/2023-27/10/2023Thời gian làm
việc trong ngày
Công việc hằng ngày bắt đầu từ lúc 8h30 đến 17h30Thời gian nghỉ
việc ngày trước và lên kế hoạch cho ngày hơm đó.
Sprint planning Bắt đầu vào mỗi sáng thứ 2 hàng tuần, các team sẽ có 1 buổi họp cùng nhau để phổ biến công việc sẽ cần làm trong cả 1 sprint
đã được giao để tổng kết trao đổi những vấn đề gặp phải
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">
và xem lại những nhiệm vụ trong tuần
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">
<b>CHƯƠNG 2: NỘI DUNG THỰC TẬP</b>
<b>2.1. Tìm hiểu cơng ty và các kỹ năng cơ bản trong công ty</b>
Thời gian: 1 ngày
Nội dung: Giới thiệu về công ty, cách tổ chức của công ty, được nghe người phụ trách giới thiệu về cơng ty, q 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, các phịng ban về IT, HR... Ngồi ra, thực tập sinh cịn được giới thiệu về văn hóa làm việc trong cơng ty như thời gian đi làm, các quy định, cách sử dụng email trong công việc. Làm quen với các đồng nghiệp và tham gia tiệc chào mừng của công ty.
Kết quả: Hiểu thêm về công ty TNHH Cybozu Việt Nam, quá trình thành lập và phát triển. Có thêm các kỹ năng về việc lập kế hoạch, có kỷ luật, có trách nhiệmhơn.
<b>2.2. Nghiên cứu kỹ thuật[Tham khảo]</b>
<i><b>2.2.1. Tuần 1</b></i>
Nội dung:
1. Giới thiệu về công ty, môi trường làm việc và chương trình internshiptraining
2. Thiết lập cài đặt máy tính, phần mềm cần thiết cho công việc
3. Sơ lược về sản phẩm Garoon của cơng ty và giao nhiệm vụ tìm hiểu sâuhơn về chức năng cho các thực tập sinh
4. Các nhóm tìm hiểu và trình bày theo về sản phẩm Garoon theo phần màmình đã được giao
5. Giới thiệu testing cơ bản
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">
6. Định hướng QA7. Họp báo cáo tuần
Kết quả: Hiểu về sản phẩm Garoon, cách làm việc nhóm, hiểu được testing là gìvà định hướng cho bản thân mình
● Thực hành viết test case/ checklist theo yêu cầu● Thực hành viết checklist
● Chia sẻ văn hố của cơng ty Cybozu● Họp báo cáo tuần
Kết quả: Hiểu được các đọc requirement, viết được test case, checklist cho sảnphẩm Garoon của công ty
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">
<i><b>2.2.4. Tuần 4</b></i>
Nội dung:
● Cách báo cáo lỗi hiệu quả
● Thực hành kiểm tra theo test case, tìm lỗi và báo cáo lỗi● Tìm hiểu về Web application, IIS và Apache
● Thực hành cài đặt server garoon trên window với IIS● Họp báo cáo tuần
Kết quả: Học được cách báo cáo lỗi, kiểm tra lỗi theo testcase, kiến thức vềweb application và cách thức setup một server
<i><b>2.2.5. Tuần 5</b></i>
Nội dung:
● Giới thiệu về lĩnh vực Security Testing
● TÌm hiểu về XSS, CSRF, SQL Injection và áp dụng vào thực hành● Overview về automation và tìm hiểu về Selenium IDE
● Họp báo cáo tuần
Kết quả: Hiểu thêm về security testing, hiểu được thế nào là automation vàcách sử dụng Selenium IDE.
<i><b>2.2.6 Tuần 6</b></i>
Nội dung:
● Set up và tìm hiểu về Visual Studio Code, Node Js và npm● Thuyết trình về các vấn đề đã tìm hiểu
● Họp báo cáo tuần
Kết quả: Có kiến thức tổng quát về Visual Studio Code, Node Js và npm
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">
<b>2.2.7 Tuần 7</b>
Nội dung:
● Tìm hiểu về WebDriverIO● Mocha Framework
● Chai Assertion Lib
● Test script development● Review, fix issue
● Họp báo cáo tuần
Kết quả: Học được cách code automation test, cách sử dụng thư viện và đượcnhận feedback của mentor về code để có thể code tốt hơn trong tương lai
<i><b>2.2.8 Tuần 8</b></i>
Nội dung:
● Tìm hiểu và thực hành về POM trong WebDriverIO● Thuyết trình về những gì đã tìm hiểu
● Họp báo cáo tuần
Kết quả: Biết được cách thức hoạt động của POM trong WebDriverIO
<i><b> 2.2.9 Tuần 9</b></i>
Nội dung:
● Tìm hiểu tiếp về Web application nâng cao
● Thực hành cài đặt garoon server trên Linux thông qua Apache● Họp báo cáo tuần
Kết quả: Hiểu thêm về web application và biết được cách thiết lập và cài đặtGaroon trên Linux
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">
<i><b> 2.2.10 Tuần 10</b></i>
Nội dung:
● Tìm hiểu về multi remote và multi-browser trong WebDriverIO● Thực hành viết script cho những gì đã tìm hiểu
● Họp báo cáo cuối khố và chia tay
Kết quả: Hiểu thêm về multi remote và multi-browser trong WebDriverIO
<b>2.3. Tham gia dự án thực tế</b>
<i><b>2.3.1 Viết testcase cho Garoon</b></i>
<i>2.3.1.1 Kỹ thuật áp dụng</i>
<b>● Phân vùng tương đương: là kỹ thuật thực hiện test theo từng class </b>
có cùng một kết quả xử lý, tập hợp thời gian có cùng một kết quả xử lý, tập hợp kết quả export được xử lý cùng một giá trị nhập.
●<b>Phương pháp phân tích giá trị biên: sẽ đưa ra các giá trị đặc biệt, bao </b>
gồm loại dữ liệu, giá trị lỗi, bên trong, bên ngoài biên giá trị, lớn nhất và nhỏ nhất.
●<b>Bảng quyết định: hỗ trợ lựa chọn test case một cách có hệ thống và có </b>
nhiều lợi ích trong việc nhận biết vấn đề tiềm ẩn và sự không rõ ràng trong bản đặc tả yêu cầu. Phương pháp này quyết định số testcase tối thiểu với độ bao phủ tối đa
●<b>Đốn Lỗi: khơng có quy tắc rõ ràng để kiểm thử, test case có thể được </b>
thiết kế tùy thuộc vào tình hình, hoặc hoặc luồng công việc trong các tài liệu mô tả chức năng hoặc khi một lỗi không mong muốn / không được mơ tả trong tài liệu được tìm thấy trong khi hoạt động kiểm thử. Phương
</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">
pháp này sẽ dựa vào kinh nghiệm của Tester(QA) để phân tích và xác định các lỗi có thể xảy ra sau đó viết các ca kiểm thử để đưa ra các lỗi đó
</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">
<i>2.3.1.3 Q trình thực hiện</i>
<b>● Hiểu Yêu Cầu: Trước khi bắt đầu viết test case, kiểm thử viên cần hiểu rõ yêu </b>
cầu chức năng và phi chức năng của ứng dụng. Điều này bao gồm việc đọc tài liệu yêu cầu, họp với nhóm phát triển, và đảm bảo rằng mọi đặc tả đã được hiểu đúng.
<b>● Xác định Kịch bản Kiểm thử: Dựa trên yêu cầu, kiểm thử viên sẽ xác định các </b>
</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">
kịch bản kiểm thử cần được thực hiện. Mỗi kịch bản kiểm thử là một tình huống hay hoàn cảnh cụ thể mà người kiểm thử muốn kiểm tra.
<b>● Chuẩn bị Dữ liệu Kiểm thử: Kiểm thử viên cần chuẩn bị dữ liệu cần thiết cho </b>
các kịch bản kiểm thử. Điều này có thể bao gồm tạo các bản ghi trong cơ sở dữ liệu, chuẩn bị dữ liệu đầu vào, và thiết lập môi trường kiểm thử.
<b>● Viết Test Case: Việc viết test case bao gồm mô tả chi tiết về các bước cần thực</b>
hiện để kiểm thử một chức năng cụ thể. Mỗi test case cần mô tả các bước cụ thể, dữ liệu đầu vào, và kết quả mong đợi. Các bước cần được viết một cách rõ ràng và dễ hiểu.
<b>● Sử dụng Template Test Case: Việc sử dụng một template test case chuẩn giúp</b>
đảm bảo rằng mọi test case đều có định dạng và cấu trúc nhất định. Template thường bao gồm các phần như Tiêu đề, Mục mô tả, Bước thực hiện, Dữ liệu kiểm thử, Kết quả mong đợi, và Ghi chú
<b>● Kiểm thử Độc lập: Sau khi test case đã được viết, kiểm thử viên thường kiểm </b>
thử độc lập để đảm bảo rằng mọi bước là chính xác và kết quả đúng như mong đợi.
<b>● Đánh giá và Điều chỉnh: Test case cần được đánh giá và điều chỉnh đều đặn </b>
để đảm bảo tính hiệu quả và tính đầy đủ của chúng. Điều này bao gồm việc cập nhật test case khi có thay đổi yêu cầu hoặc mã nguồn.
<i>2.3.1.4 Kết quả</i>
Đảm bảo tính chính xác và đầy đủ của quá trình kiểm thử. Mỗi bước kiểm thử được mô tả chi tiết, từ dữ liệu đầu vào đến kết quả mong đợi, giúp tránh bỏ sót bất kỳ khía cạnh nào của chức năng mention trong comment trong app Scheduler
<i>2.3.1.5 Thuận lợi</i>
● Do đã có kinh nghiệm phát triển nhiều hình thức website trong quá trìnhhọc tập và làm đồ án tại trường nên việc tiếp cận và mindset để viết
</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">
testcase cho 1 web app khá dễ dàng.
● Kỹ năng trình bày ngắn gọn, súc tích, từ ngữ viết testcase đi đúng trọng tâm nên những người thực hiện test bug có thể dễ dàng theo dõi theo tài liệu.
<i>2.3.1.6 Khó khăn</i>
● Do lần đầu tiên tiếp xúc với testcase nên vẫn chưa biết hướng đi thích hợp trong việc viết testcase như thế nào là hợp lý, dẫn đến nhiều lúc bị lang mang, đi sai vấn đề và scope của yêu cầu.
● Chưa quen với template của cơng ty nên cịn khó khăn trong việc viết.● Có quá nhiều luồng riêng biệt nên đôi khi viết testcase còn bị thiếu một
vài case quan trọng.
<i><b>2.3.2 Automation test cho app Đặt lịch</b></i>
<i>2.3.2.1 Kỹ thuật áp dụng</i>
●<b>JavaScript là ngôn ngữ lập trình được nhà phát triển sử dụng để tạo </b>
trang web tương tác. Từ làm mới bảng tin trên trang mạng xã hội đến hiển thị hình ảnh động và bản đồ tương tác, các chức năng của
JavaScript có thể cải thiện trải nghiệm người dùng của trang web. Là ngơn ngữ kịch bản phía máy khách, JavaScript là một trong những công nghệ cốt lõi của World Wide Web. Ví dụ: khi duyệt internet, bất cứ khi nào bạn thấy quảng cáo quay vịng dạng hình ảnh, menu thả xuống nhấpđể hiển thị hoặc màu sắc phần tử thay đổi động trên trang web cũng chính là lúc bạn thấy các hiệu ứng của JavaScript.
●<b>WebDriverIO là một tiện ích kiểm thử với mã nguồn mở sử dụng ngơn </b>
ngữ NodeJS
</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">
<small>o</small>
Nó giúp bạn viết các bài kiểm tra test bằng javascripts trong framework TDD hoặc BDD
<small>o</small>
Về cơ bản, nó sẽ gửi các yêu cầu đến máy chủ Selenium thông quaGiao thức WebDriver và xử lý phản hồi của nó.
<small>o</small>
Các yêu cầu này được bao bọc trong các lệnh hữu ích và có thể được sử dụng để kiểm tra một số khía cạnh của trang web của bạntheo cách tự động.
<i>2.3.2.2 Mô tả dự án</i>
Thực hiện viết automation test cho feature tạo cuộc họp trong app Schedule của Garoon
</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">
Một vài hình ảnh về source code script automation:
</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">
<i>2.3.2.3 Quá trình thực hiện</i>
<b>● Xác định Phạm Vi Automation: Trước hết, cần xác định rõ phạm vi của </b>
việc automation test. Điều này bao gồm việc quyết định những kịch bản kiểm thử nào nên được tự động hóa và những kịch bản nào nên duy trì làm kiểm thử thủ cơng.
<b>● Chọn Cơng Cụ Automation: Chọn công cụ automation phù hợp với yêu </b>
cầu của dự án. Các công cụ như Selenium, Appium, JUnit, TestNG, hoặc Cucumber là những lựa chọn phổ biến. Sự chọn lựa này cần dựa trên ngôn ngữ lập trình sử dụng trong dự án, tính năng của ứng dụng, và nhu cầu kiểm thử cụ thể.
<b>● Thiết Lập Môi Trường Automation: Thiết lập môi trường automation </b>
bao gồm cài đặt và cấu hình cơng cụ automation, khởi tạo dự án
automation, và đảm bảo rằng tất cả các thành phần cần thiết như driver,frameworks, và thư viện đều được cài đặt đúng.
<b>● Phân tích và Thiết Kế Test Cases: Chuyển đổi các test cases từ dạng thủ </b>
</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">
cơng sang dạng automation. Phân tích và thiết kế các test script theo cú pháp và cấu trúc của ngơn ngữ lập trình sử dụng. Xác định dữ liệu cần thiết và các bước thực hiện.
<b>● Viết Automation Scripts: Viết automation scripts theo các test cases đã </b>
thiết kế. Scripts này nên được viết một cách cẩn thận để đảm bảo tính ổn định và linh hoạt. Sử dụng các hàm và thư viện để giảm sự lặp lại và tăng tính bảo trì.
<b>● Chạy và Kiểm Tra Automation Scripts: Chạy automation scripts và kiểm </b>
tra kết quả. Đảm bảo rằng scripts chạy đúng, và kết quả được so sánh với kết quả mong đợi. Nếu có lỗi, debug và sửa chúng để scripts chạy đúng.
</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">
<b>CHƯƠNG 3: TỔNG KẾT</b>
Quãng thời gian thực tập tại Cybozu đã giúp em cải thiện bản thân rất nhiềutrong quy trình làm việc thực tế, tác phong của người kỹ sư phần mềm. Đượclàm việc tại đây, em đã học thêm được kỹ năng mềm sử dụng mail, quản lýticket, làm việc nhóm, giao tiếp với cấp trên, …
Chỉ trong thời gian hạn chế, em đã hồn thành dự án cá nhân trong q trìnhtraining với các tính năng, yêu cầu đặt ra ban đầu.
Khi tham gia vào dự án thực tế, em cũng hoàn thành tốt các tác vụ đúng hạn vàđạt chất lượng tốt.
<b>3.1. Điểm mạnh</b>
● Giao tiếp tốt với nhóm
● Hồn thành tốt nhiệm vụ dưới tư cách 1 leader● Tìm hiểu nhanh các đề tài khó mà mentor đề xuất
● Chủ động đưa ra các ý tưởng nhằm mở rộng đề tài để đạt được những điểm cộng trong quá trình thực tập
Mục tiêu môn học
G1 Nắm bắt được xu hướng, nhu cầu xã hội và tính đặc thù của doanh nghiệp
</div>