Tải bản đầy đủ (.docx) (64 trang)

báo cáo thực tập automation and manual qc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.32 MB, 64 trang )

<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>

<b>Báo cáo thực tập</b>

<b>AUTOMATION AND MANUAL QC</b>

TP. Hồ Chí Minh, tháng 12 năm 2023

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>LỜI CẢM ƠN</b>

<b>Lời đầu tiên, em xin chân thành cảm ơn Cô Nguyễn Thị Thanh Trúc đã cho em</b>

cơ hội, hỗ trợ và hướng dẫn phần báo cáo thực tập để em có thể hồn thành kỳ thực tậpmột cách thành công. Em xin chân thành cảm ơn Quý công ty đã trao em cơ hội thực tậpvà hỗ trợ những điều kiện vật chất và tinh thần trong q trình. Đây là cơ hội lớn để emkhơng những được học các kiến thức, kỹ thuật, kỹ năng mới mà em cịn có thể áp dụngnhững kiến thức, kỹ năng được lãnh hội ở trường áp dụng vào trong môi trường làm việcquốc tế và chuyên nghiệp tại công ty.

Trong suốt quá trình thực tập, vì tình hình dịch bệnh đầy phức tạp và nhiều khókhăn, q trình thực tập đôi khi phải diễn ra từ xa trong thời điểm từ tháng 9 đến tháng 12năm 2021, nhưng công ty vẫn theo sát và hỗ trợ em. Em xin dành lời cảm ơn sâu sắc đến

<b>anh Đỗ Hoàng Long – người trực tiếp hướng dẫn em, đã dạy cho em nhiều kiến thức quý</b>

báu từ kỹ thuật cho đến kỹ năng mềm. Và em cũng không quên cảm ơn những anh/chịđồng nghiệp đã nhiệt tình giúp đỡ em trong cơng việc. Ngồi ra, em cịn được hưởngquyền lợi như những nhân viên chính thức, được tham gia các buổi training của công ty,tham gia các workshop, seminar, liên hoan, giải trí khi có dịp lễ hội, ngày đặc biệt trongnăm.

Báo cáo này là những kiến thức và kinh nghiệm em đúc kết được sau 12 tuần thựctập tại công ty. Những kiến thức này vô cùng quý báu đối với em và sẽ là một bước khởiđầu vững chắc trong công việc tương lai. Một lần nữa, em xin trân trọng cảm ơn.

Sinh viên

<b>Trương Nhật Tiến</b>

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<b>MỤC LỤC</b>

<b>NHẬN XÉT...2</b>

<b>LỜI CẢM ƠN...3</b>

<b>MỤC LỤC...4</b>

<b>CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP...7</b>

<b>1.1Giới thiệu công ty...7</b>

<b>1.1.1Thông tin chung...7</b>

<b>1.1.2Lĩnh vực hoạt động...8</b>

<b>1.1.3Khách hàng và đối tác của cơng ty...9</b>

<b>1.2Vị trí thực tập – Automation and Manual Testing...10</b>

<b>CHƯƠNG 3: KIẾN THỨC – KỸ NĂNG ĐÃ ĐƯỢC TẬP HUẤN...20</b>

<b>3.1 Kiểm thử thủ công – Manual Testing...20</b>

<b>3.1.1 Định nghĩa...20</b>

<b>3.1.2 Các loại kiểm thử phần mềm...20</b>

<b>3.2 Bug và vòng đời của bug trong kiểm thử phần mềm...22</b>

<b>3.2.1 Bug là gì?...22</b>

<b>3.2.2 Template của một con bug...22</b>

<b>3.2.3 Vòng đời của bug trong kiểm thử phần mềm...24</b>

<b>3.3 Kiểm thử tự động – Automation Testing...26</b>

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

<b>CHƯƠNG 1: GIỚI THIỆU CƠNG TY THỰC TẬP1.1 Giới thiệu cơng ty</b>

<b>1.1.1 Thông tin chung</b>

Contemi là một thương hiệu đang phát triển nhanh chóng, cung cấp các giải pháp hệthống CNTT cho các công ty bảo hiểm ở Châu Á và Scandinavia. Được thành lập vàonăm 2001 tại Na Uy và Vương quốc Anh, bởi các doanh nhân thành đạt trong lĩnh vực bảohiểm, những người muốn thương mại hóa hệ thống và kiến thức chuyên môn mà họ đã sửdụng để thành cơng.

<i>Hình 1: Contemi Vietnam</i>

Contemi Việt Nam là thành viên của các công ty tư nhân 100% vốn thuộc Tập đồnContemi có trụ sở tại Vương quốc Anh, Na Uy và Việt Nam. Chuyên cung cấp sự kết hợpphong phú của các dịch vụ kỹ thuật, bảo hiểm và kinh doanh phù hợp với hầu hết cácdoanh nghiệp bảo hiểm. Contemi hiện đang phụ trách phát triển, triển khai và quản lýCNTT cho một số doanh nghiệp bảo hiểm ở Châu Âu và Châu Á. Contemi Việt Nam đang

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

phát triển nhanh chóng để đáp ứng nhu cầu mở rộng Tập đoàn, đặc biệt là tại các thịtrường Châu Á.

<b>1.1.2 Lĩnh vực hoạt động</b>

 <b>Tài sản và quản lý tài sản</b>

Giải pháp Contemi Wealth Intelligence (WIN), một bộ các front, middle và back officemơ-đun được tích hợp đầy đủ, cung cấp cho các nhà quản lý đầu tư và tài sản sử dụng tấtcả các công cụ cần thiết để phục vụ và giữ chân khách hàng hiện tại, đảm bảo các yêu cầutuân thủ và tự động hóa các quy trình đầu cuối. Tính linh hoạt của hệ thống đảm bảo rằnghệ thống được định cấu hình theo nhu cầu của khách hàng và có thể hỗ trợ nhiều loại hìnhkinh doanh bao gồm tư vấn, chỉ thực thi, khách hàng cá nhân và hoạt động tổ chức.

Hệ thống Contemi Wealth Intelligence đáp ứng các nhu cầu văn phịng bao gồm, tìmkiếm khách hàng tiềm năng, giới thiệu, quản lý vòng đời của khách hàng, quản lý danhmục đầu tư, đo lường hiệu suất, giao dịch, quản lý đơn đặt hàng, lưu ký và thanh tốn,hành động của cơng ty và phân tích & báo cáo kinh doanh.

Các giải pháp end-to-end giúp các công ty xử lý hiệu quả hơn dịng chảy tồn cầu ngàycàng tăng của họ và loại bỏ các quy trình thủ công, phi tiêu chuẩn trở thành lực cản chodoanh nghiệp và rủi ro hoạt động.

 <b>BANCASSURANCE – Phân phối bảo hiểm qua kênh ngân hàng</b>

Mơ hình phân phối Bancassurance đang phát triển khi ngày càng có nhiều cơng ty bảohiểm và ngân hàng thành lập các liên minh mới trên tồn cầu. Một dự án bancassurance cólợi nhuận địi hỏi các hoạt động hiệu quả đối với ngân hàng, công ty bảo hiểm và kháchhàng. Việc tích hợp liền mạch với các sản phẩm bảo hiểm hiện có và các ứng dụng ngânhàng lõi là cần thiết để làm cho mối quan hệ bancassurance thành công.

Giải pháp Bancassurance của Contemi được thiết kế cho các tổ chức tài chính cungcấp dịch vụ bancassurance và một kênh phân phối bảo hiểm trên các thị trường khác nhau.8

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

Nó bao gồm tồn bộ hành trình của một khách hàng bảo hiểm mua lại, bán, dịch vụ vàquản lý quan hệ chỉ số đo lường, hỗ trợ và tự động hóa các quy trình kinh doanh cần thiếtcho tổ chức tài chính.

 <b>Nhà mơi giới bảo hiểm</b>

Một bộ giải pháp có thể cấu hình và linh hoạt cao được xây dựng dành riêng cho Nhàmôi giới bảo hiểm.

Các công ty mơi giới có nhiều hình dạng và quy mơ. Có thể là một tuyên bố táo bạokhi nói rằng Contemi có một giải pháp phù hợp cho tất cả các nhà môi giới để đáp ứng tấtcả các nhu cầu của họ - nhưng Contemi tin rằng chúng tơi có các mô-đun sẽ phục vụ hầuhết và bất kỳ điều chỉnh cụ thể nào một nhà mơi giới có thể cần.

 <b>Nhà khởi nghiệp bảo hiểm</b>

Các công ty khởi nghiệp mới đang thiết lập các dịch vụ Bảo hiểm mới với các giảipháp CNTT linh hoạt. Các giải pháp của Contemi được phát triển để đáp ứng các nhu cầutrong tương lai đối với Bảo hiểm P&C (Property & Casualty). Thành công trong thời đạimới là đặt khách hàng lên hàng đầu, tạo ra lòng trung thành và cung cấp các giải pháp phùhợp cho khách hàng của bạn. Với Contemi là đối tác, bạn sẽ nhận được giải pháp Bảohiểm P&C hiện đại được phát triển cho thị trường bảo hiểm trong tương lai.

<b>1.1.3 Khách hàng và đối tác của công ty</b>

Contemi luôn tự hào bởi sự thành công của khách hàng trên tồn thế giới. Với cơngnghệ tiên tiến, các giải pháp tiên tiến nhất, đội ngũ sáng tạo và các đối tác công nghệ đángtin cậy, Contemi trao quyền cho khách hàng của mình để trở thành những người dẫn đầutrong thế giới ngày càng phát triển của các nền tảng đám mây và kỹ thuật số. Contemi tintưởng vào việc hình thành các mối quan hệ đối tác kinh doanh và cơng nghệ có ý nghĩa đểthúc đẩy hoạt động kinh doanh của khách hàng và giúp họ phát triển trong không gianFinTech mới.

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

- Các khách hàng của Contemi:

<i>Hình 2: Các khách hàng của Contemi</i>

<b>- Các đối tác đáng tin cậy: </b>

<i>Hình 3: Các đối tác của Contemi</i>

<b>1.2 Vị trí thực tập – Automation and Manual Testing1.2.1 Khái niệm</b>

Automation Testing là một kỹ thuật kiểm thử phần mềm để kiểm tra và so sánh kết quảthực tế với kết quả mong đợi. Automation Testing được thực hiện bằng cách viết các kịchbản thử nghiệm và sử dụng công cụ. Kỹ thuật kiểm thử này được sử dụng để kiểm tra cácnhiệm vụ lặp đi lặp lại và các nhiệm vụ thử nghiệm khác khó thực hiện thủ cơng.

Manual testing là q trình kiểm thử phần mềm được thực hiện bằng tay mà không sửdụng công cụ tự động hoặc kịch bản tự động. Người kiểm thử thực hiện các thử nghiệmtheo các bước được xác định để đảm bảo rằng ứng dụng hoạt động đúng và đáp ứng đúngvới các yêu cầu. Phương pháp này giúp phát hiện lỗi và đánh giá trải nghiệm người dùngmột cách chặt chẽ

Mô tả công việc: Các kỹ sư đảm bảo chất lượng phần mềm làm việc với các nhà pháttriển phần mềm để cải thiện các sản phẩm phần mềm trong quá trình phát triển. Họ chạycác bài kiểm tra (cả thủ công và tự động hóa) trên phần mềm hoặc ứng dụng và phân tích10

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

các khiếm khuyết để cải thiện sản phẩm. Hầu hết các nhà tuyển dụng yêu cầu bằng cửnhân trong một chủ đề liên quan.

<b>1.2.2 Yêu cầu vị trí thực tập</b>

- Đã tốt nghiệp hoặc sinh viên năm cuối tại các trường học về ngành Công Nghệ Thơng tin- Có kinh nghiệm, kiến thức về quy trình kiểm thử và các phương pháp kiểm thử

- Hiểu biết về các test case, test plan, test report

- Có kiến thức về automation testing và sử dụng những công cụ hỗ trợ liên quan(Selenium, Katalon, TestNG…)

- Có kĩ năng lập trình, tư duy tốt có thể làm việc trên các ngôn ngữ lập trình java,javascript..

- Tinh thần làm việc nhóm tốt và trách nhiệm cao- Kĩ năng nghiên cứu và giải quyết vấn đề tốt- Có kiến thức về Agile – Scrum là một lợi thế- Tiếng Anh tốt là một lợi thế.

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

<b>CHƯƠNG 2: TÓM TẮT Q TRÌNH THỰC TẬP2.1 Tóm tắt khoảng thời gian thực tập</b>

<b>- Thời gian nộp hồ sơ và phỏng vấn ( 2 tuần ) : 23/08/2021 – 31/08/2021</b>

 Vị trí: Intern Automation and Manual Tester. Thời gian làm trong tuần: Toàn thời gian

<b>- Tổng thời gian thực tập (12 tuần): 06/09/2021 – 05/12/2021- Tóm tắt cơng việc đã làm trong khoảng thời gian tương ứng:</b>

 Được huấn luyện các kiến thức về lĩnh vực phát triển phần mềm của công ty :Kiến thức về bảo hiểm và các thuật ngữ liên quan.

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

<b>2.2 Lịch thực tập chi tiếtST</b>

-Giới thiệu công ty

- Cung cấp tài khoản công ty- Cài đặt các phần mềm cầnthiết

- Hướng dẫn cách log work

Hiểu được cácquy trình làmviệc cơ bản

2 Học các kiếnthức về lĩnhvực bảo hiểm– Bài 1 & bài2

Đọc trước bài 1, bài 2, đặt câuhỏi và làm bài tập về nhà

Hiểu về các kháiniệm trong bảohiểm

3 Học các kiếnthức về lĩnhvực bảo hiểm– Bài 3

Ôn lại kiến thức bài 2 + tự họcBài 3 + làm bài tập

Biết các thuậtngữ chuyênngành

4 Học các kiếnthức về lĩnhvực bảo hiểm– Bài 4

Ôn lại bài 3 + tự học bài 4 +làm bài tập

Các tình huốnggiả định

5 Học các kiếnthức về lĩnhvực bảo hiểm– Bài 5

Ôn lại bài 4 + tự học bài 5 +làm bài tập

Các kiến thứcnâng cao vàcách tính giá,claim bảo hiểm6 Học các kiến

thức về lĩnhvực bảo hiểm– Bài 6

Ôn lại bài 5 + tự học bài 6 +làm bài tập

Các kiến thứcnâng cao vàcách tính giá,claim bảo hiểm7 Học các kiến

thức về lĩnhvực bảo hiểm

Ôn lại bài 7 + tự học bài 7 +làm bài tập

Kiến thức về táibảo hiểm, côngty cha, con, đại

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

– Bài 7 lý8 Học các kiến

thức về lĩnhvực bảo hiểm– Bài 8

Ôn lại bài 8 + làm bài tập Ôn lại các kiếnthức đã học

9 Kiểm tra cáckiến thức bảohiểm đã họcđược

 Đạt bàikiểm tra10 Tự học các

kiến thức vềkiểm thử thủcơng

Học khố học trên Udemy Hoàn thành

11 Kiểm tra cáckiến thứckiểm thử thủcông đã họcđược

Anh Đỗ Hoàng Long kiểm tra Đạt

12 Thực hànhkiểm thử thủcơng trên ứngdụng web

Học khố học trên Udemy Hồn thành

13 Quy trìnhkiểm thử phầnmềm theo mơhình Scrum

28/09/2021-

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

dự án mẫu 15 Cách sử dụng

Jira + Xraytrong việcquản lý cáctestcase

Anh Đỗ Hoàng Long hướngdẫn

Biết được cáchsử dụng Xraycho việc quản lýtestcase, bug16 Tìm hiểu các

tính năngthuộc CRM(CustomerRelationshipManagement)của dự án mẫu

Anh Đỗ Hoàng Long hướngdẫn

Biết được cáctính năng CRM

17 Tìm hiểu cáctính năngthuộc CRM(CustomerRelationshipManagement)của dự án mẫu– Phần 2

Anh Đỗ Hoàng Long hướngdẫn

Biết được cáctính năng CRM

18 Học cách viếtBDD , tìmhiểu

frameworkCucumber cósử dụng BDD

Học khố học trên Udemy Hồn thành

19 Học ngơn ngữJavascript và

javascript vớicác thư viện

Học khố học trên Udemy Hồn thành

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

Selenium20 Hiểu về quy

trình hoạt

23 Tạo data chotestcase

Anh Nguyễn Long Hồ hướngdẫn

Biết được cáccâu lệnh Git16

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

22/10/2021 thường sử dụng28 Thực hành

testcaseautomationđơn giản

Anh Nguyễn Long Hồ hướngdẫn

Biết cách runmột testcaseautomated trênjenkins

30 Cấu trúc lạicode cho tínhnăng nhập

khách hàng

<b>Dự án Seamless: Task</b>

Automation script (INPR-464)

Hồn thànhcơng việc

31 Viết

Automationscript cho tínhnăng chỉnhsửa thơng tinbán hàng

<b>Dự án Seamless: </b> TaskAutomation script (INPR-472)

Hồn thànhcơng việc

33 Viết

Automationscript cho tínhnăng tìm kiếm(search) và tạobộ lọc (filter)các kháchhàng tiềmnăng

<b>Dự án Seamless: Task</b>

Automation script (INPR-495)

Hồn thànhcơng việc

34 Đánh giá lần 1 15/11/2021-

Long, Jolie, Gillian tiến hànhđánh giá

Nhận kết quảđánh giá

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

15/11/202135 Phân công vào

các dự án thựctế

Long Do meeting phân công Được phân cônglàm dự án Atlas36 Viết

Automationscript : Tạo vàchỉnh sửaGuarantee

<b>Dự án Atlas: Task Automation</b>

script (SAAS-13414)

Hồn thànhcơng việc

37 Viết

Automationscript: Kiểmtra thông tincác tài liệu(document)được tạo ratrong quy

<b>Dự án Atlas: Task Automation</b>

script (SAAS-13417)

Hồn thànhcơng việc

38 Viết

Automationscript Thêmmối quan hệcha - con củakhách hàng(công ty) vàxác minh cáchợp đồngđược chia sẻtừ khách hàng(công ty) cha

<b>Dự án Atlas: Task Automation</b>

script (SAAS-16546)

Hồn thànhcơng việc

18

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

– con.

39 Đánh giá lần 2 02/12/2021-

Long, Jolie, Gillian tiến hànhđánh giá

Nhận kết quảđánh giá

<i>Bảng 1 : Bảng chi tiết công việc</i>

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

<b>CHƯƠNG 3: KIẾN THỨC – KỸ NĂNG ĐÃ ĐƯỢC TẬP HUẤN3.1 Kiểm thử thủ công – Manual Testing</b>

<b>3.1.1 Định nghĩa</b>

Manual testing là một loại kiểm thử phần mềm trong đó người kiểm tra thực hiện chạytest case một cách thủ công mà không dùng bất cứ một công cụ tự động nào. ManualTesting là kiểu test nguyên thủy nhất trong các loại kiểm tra giúp tìm ra lỗi trong hệ thốngphần mềm. Bất kì ứng dụng nào cũng đều phải được kiểm tra một cách thủ cơng trước khicó thể thực hiện test tự động. Manual Testing đòi hỏi nhiều nhân lực hơn nhưng nó là cầnthiết để kiểm tra tính khả thi của tự động hóa.

<b>3.1.2 Các loại kiểm thử phần mềm</b>

 <b>Unit testing ( Kiểm thử đơn vị)</b>

Unit test là cấp độ kiểm thử thấp nhất trong các loại kiểm thử phần mềm. Với unit test,nhiệm vụ của tester là kiểm thử các phần riêng lẻ của phần mềm như: hàm (Function),phương thức (Method), lớp (Class), thủ tục (Procedure). Hình thức kiểm thử này thườngđược áp dụng trong giai đoạn phát triển, khi các phần code được cô lập để kiểm tra tínhchính xác của các đơn vị riêng biệt. Unit test nói chung khá rẻ để tự động hóa và có thểđược chạy rất nhanh bởi một máy chủ tích hợp liên tục.

<b>Integration Testing (Kiểm thử tích hợp)</b>

Đúng như tên gọi của nó, việc kiểm thử tích hợp có tác dụng xác minh xem các đun (modules) khác nhau của ứng dụng của bạn có hoạt động tốt cùng nhau. Ví dụ: kiểmthử sự tương tác với cơ sở dữ liệu hoặc đảm bảo rằng các microservices hoạt động cùngnhau như mong muốn. Việc thực hiện loại kiểm thử này tốn kém hơn vì chúng yêu cầunhiều phần của ứng dụng được thiết lập và chạy cùng nhau.

mô- <b>Functional Testing (Kiểm thử chức năng)</b>

Việc kiểm thử chức năng sẽ tập trung vào các yêu cầu nghiệp vụ của một ứng dụng.Đơi khi có sự nhầm lẫn giữa các kiểm thử tích hợp và kiểm thử chức năng. Vì cả hai hìnhthức kiểm thử này đều yêu cầu nhiều thành phần của hệ thống tương tác với nhau. Sự khácbiệt là kiểm thử tích hợp có thể chỉ đơn giản xác minh rằng bạn có thể truy vấn cơ sở dữliệu. Còn kiểm thử chức năng sẽ mong muốn nhận được một giá trị cụ thể từ cơ sở dữ liệunhư được xác định bởi các yêu cầu sản phẩm.

20

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

 <b>End-to-end testing (Kiểm tra từ đầu đến cuối)</b>

Kiểm thử end-to-end tái tạo hành vi của người dùng với ứng dụng trong một môitrường ứng dụng hồn chỉnh. Hình thức này giúp xác minh rằng các luồng người dùng(user flow) khác nhau hoạt động như mong đợi. Hành vi này có thể đơn giản như tải mộttrang web hoặc đăng nhập, hoặc các hành vi phức tạp hơn nhiều như: xác minh thông báoqua email, thanh toán trực tuyến, v.v. Việc kiểm thử đầu cuối rất hữu ích trong các loạikiểm thử phần mềm, nhưng cũng rất tốn kém để thực hiện và có thể khó duy trì khi chúngđược tự động hóa. Bạn nên có một vài thử nghiệm đầu cuối quan trọng và dựa nhiều hơnvào các loại thử nghiệm cấp thấp hơn (kiểm thử đơn vị và tích hợp).

 <b>Acceptance Testing (Kiểm thử chấp nhận)</b>

Kiểm thử chấp nhận là các kiểm tra chính thức được thực hiện để xác minh xem hệthống có đáp ứng các yêu cầu nghiệp vụ của nó hay khơng. Chúng u cầu tồn bộ ứngdụng phải được thiết lập và chạy và tập trung vào việc tái tạo các hành vi của người dùng.Nhưng ta có thể tiến xa hơn, đó là đo lường hiệu suất của hệ thống và từ chối các thay đổinếu các mục tiêu nhất định khơng được đáp ứng.

<i>Hình 4: Các loại kiểm thử phần mềm</i>

 <b>Performance Testing (Kiểm thử hiệu suất)</b>

Cách kiểm thử này kiểm tra các hành vi của hệ thống khi nó đang phải chịu lượng tải(loading) lớn. Kiểm thử hiệu suất khơng mang tính chức năng và có thể có nhiều dạngkhác nhau để hiểu độ tin cậy, tính ổn định và tính khả dụng của phần mềm. Ví dụ: kiểmthử quan sát thời gian phản hồi khi thực hiện một số lượng lớn yêu cầu hoặc xem hệ thống

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

hoạt động như thế nào với một lượng lớn dữ liệu. Hình thức này về bản chất là khá tốnkém để thực hiện và chạy, nhưng lại có thể giúp bạn hiểu liệu các thay đổi mới có làm suygiảm hệ thống của bạn hay khơng.

<b>Smoke Testing (Kiểm thử khói)</b>

Kiểm thử khói là các bài kiểm tra cơ bản giúp kiểm tra chức năng cơ bản của ứngdụng. Mục tiêu của kiểm thử khói là đảm bảo rằng các tính năng chính của hệ thống củabạn đang hoạt động như mong đợi. Cách kiểm thử phần mềm này được thực hiện ngay saukhi một bản dựng (build) mới được thực hiện để quyết định xem bạn có thể thực hiện cáchình thức kiểm thử đắt tiền hơn hay khơng. Kiểm thử khói cũng có thể diễn ra ngay saukhi triển khai để đảm bảo rằng ứng dụng đang chạy đúng cách trong môi trường mới đượctriển khai.

<b>3.2 Bug và vòng đời của bug trong kiểm thử phần mềm3.2.1 Bug là gì?</b>

<i>Hình 5: Bug và vịng đời của bug</i>

Bug hay còn gọi là Defect là vấn đề xảy ra đối với một sản phẩm phần mềm khideveloper xử lý một dòng hoặc một đoạn code bị lỗi ,mà kết quả đưa ra khác với yêu cầu

<b>của khách hàng hoặc người dùng.</b>

<b>3.2.2 Template của một con bug</b>

Một Bug Report là một tài liệu chi tiết về lỗi tìm thấy trong các ứng dụng phần mềm.Báo cáo lỗi bao gồm từng chi tiết về lỗi như title, step thực hiện ra lỗi, expected result,actual resutl, mơi trường tìm thấy lỗi, tên người kiểm tra đã tìm thấy lỗi, tên nhà phát triểnđã sửa lỗi, v.v. Báo cáo lỗi giúp xác định các lỗi tương tự trong tương lai để có thể tránh

22

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

được lỗi đó. 1 bug report thường được viết theo 1 template cố định của dự án, thôngthường sẽ bao gồm các nội dung sau:

<b>Title bug : Viết ngắn gọn về lôi đã xảy ra để mọi người nhìn vào có thể hình dung</b>

được nó là lỗi gì.

<b>Linked issues: Mục này có thể có hoặc khơng. Nếu có thì thường sẽ là một thơng</b>

tin, một link nào đó để có thể reference tới spec của KH.

<b>Reproduce steps : Các step cụ thể để developer fix bug có thể nhìn vào và tái hiện</b>

lại bug.

<b>Actual result : Là kết quả lỗi hiển thị ra sau khi thực hiện lại các step ở trên.</b>

<b>Expected result : Là kết quả cần phải hiển thị theo đúng spec khi người dùng thực</b>

hiện các step trên.

<b>Evidence : Có thể là hình ảnh hoặc video để có thể rõ hơn về lỗi đó.</b>

<b>Testing Environment: Là mơi trường nơi tester thực hiện test cùng với các thơng</b>

tin về nó

<b>Status : Có thể là new, inprogess, testing hoặc done.</b>

<b>Milestone : là khoảng thời gian tìm thấy bug.</b>

<b>Assignee : Là tên của developer thực hiện sẽ fix bug.</b>

<b>Reporter : Tên của tester phát hiện ra bug.</b>

<b>Priority : Mức độ ưu tiên - Có thể cao/ trung bình/ thấp. dựa trên mức độ khẩn cấp</b>

của tác động mà tại đó lỗi cần được khắc phục tương ứng

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

<i>Hình 6: Template của một con bug được tạo trên Jira</i>

<b>3.2.3 Vòng đời của bug trong kiểm thử phần mềm</b>

<i>Hình 7:Sơ đồ vịng đời của bug</i>

<b>Mô tả chi tiết từng trạng thái của Bug xuyên suốt 1 vòng đời</b>

 <b>New (Mới)</b>

24

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

Khi tester thực thi test case và đầu ra của test case đó khơng đúng như kết quảmong đợi, thì họ sẽ gọi đó là bug. Nghĩa là có sự khác biệt giữa kết quả mong đợi vàkết quả thực tế thì gọi là bug. Do đó bug này cần phải được fix. Nhưng tester khôngphải là người fix bug mà là lập trình viên sẽ fix nó.

→ Khi tester tìm thấy bug thì nó sẽ có trạng thái là NEW. <b>Open</b>

Lỗi được log lên bởi tester. Team lead cần xác minh lại bug đó xem có đúng làbug hay khơng, thì bug có trạng thái OPEN.

 <b>Rejected (Từ chối)</b>

Một bug được đánh dấu là Rejected khi bug đó khơng hợp lệ. Nghĩa là thỉnhthoảng tester có thể hiểu sai chức năng và có thể đánh dấu chức năng là bug. Trongtrường hợp này, bug sẽ bị reject sau khi team lead kiểm tra lại.

 <b>Duplicate (Trùng lặp)</b>

Nếu bug là hợp lệ, thì sau đó team lead sẽ kiểm tra xem lỗi đó đã được log ngườikhác hay chưa. Nếu đã có người khác log nó, thì team lead sẽ đánh dấu nó làDUPLICATE. Cịn nếu nó chưa được báo cáo bởi tester khác thì team lead sẽ thựchiện tìm kiếm nó trong scope.

 <b>Postponed (Hỗn lại)</b>

Nếu bug không bị duplicate, nhưng lại không thuộc bản release hiện tại thì sẽđược đánh dấu là Deferred. Nghĩa là giả sử bạn đang làm theo mơ hình agile, và họchia yêu cầu dự án thành các sprint, ví dụ chia thành 10 sprint: sprint 1, sprint 2, ...,sprint 10. Hiện tại đang ở sprint 1, nhưng bug bạn tìm thấy lại có liên quan đến tínhnăng sẽ được phát triển ở sprint 2, thì bug này sẽ được đánh dấu là DEFERRED.Deferred bug là một bug, nhưng nó sẽ được sửa chữa trong bản release tương lai.

→ Khi một bug là một phần của bản release tương lai thì nó sẽ được đánh dấu làDEFERRED.

 <b>Assigned (Gán bug)</b>

Khi bug tìm thấy là hợp lệ, duy nhất và thuộc bản release hiện tại, thì team lead sẽgán bug đó cho developer.

 <b>Fix</b>

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

Khi nhận được bug từ team lead, developer sẽ thực hiện thay đổi để fix bug chođúng với yêu cầu, và đẩy lại cho tester kiểm tra lại lỗi đó.

 <b>Re-testing (Test lại)</b>

Sau khi fix xong bug, và chức năng/tính năng đã sẵn sàng để kiểm thử, thì testersẽ thực hiện lại những test case lỗi và xác minh lại xem nó đã chạy đúng hay chưa.Việc này gọi là RE-TESTING.

 <b>Closed</b>

Khi bug đã được fix, đã được kiểm thử lại và nó chạy đúng như u cầu thì testersẽ đánh dấu nó là CLOSED.

 <b>Re-opened</b>

Có 2 tình huống mà chúng ta cần phải re-open lại bug:

<b>- Tình huống 1: Khi developer fix bug và tester thực hiện test lại nó, nhưng sau khi</b>

re-test, bug đó vẫn xảy ra thì tester sẽ RE-OPEN lại bug và assign cho developer.

<b>- Tình huống 2: Có trường hợp lỗi đã fix và được close xuất hiện lại. Trong trường</b>

hợp này, tester cần RE-OPEN lại bug đã close và gán nó cho developer.

<b>3.3 Kiểm thử tự động – Automation Testing3.3.1 Khái niệm</b>

Trong lĩnh vực kiểm thử phần mềm, thì kiểm thử tự động hay cịn gọi là Automationtesting đóng một vai trị quan trọng góp phần nâng cao năng suất kiểm thử, giảm thiểu lỗicũng như sự nhàm chán với việc kiểm thử bằng tay trong một thời gian dài hoặc lặp đi lặplại.

Kiểm thử tự động là một quá trình xử lý tự động các bước thực hiện một test case.Kiểm thử tự động được thực hiện bởi phần mềm kiểm thử tự động - hay còn gọi làAutomation Testing Tool. Một số phần mềm kiểm thử tự động nổi tiếng hiện nay như:

<b>- Selenium: Công cụ thử nghiệm Ứng dụng web. Cung cấp nhiều hỗ trợ trình duyệt.- Junit và Nunit: Công cụ chủ yếu được sử dụng để kiểm tra Unit tests.</b>

<b>- QTP: Công cụ cho các ứng dụng không phải web- Sikuli: Công cụ mã nguồn mở để kiểm tra GUI.- Soap UI: Công cụ kiểm tra API.</b>

<b>- Rest Assured: Công cụ kiểm tra API.</b>

26

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

<b>- Appium: Công cụ hỗ trợ kiểm tra ứng dụng di động.- Jmeter: Công cụ được sử dụng để kiểm tra hiệu suất.</b>

<b>- Test NG: Test NG không phải là một cơng cụ tự động hóa, tuy nhiên, nó cung cấp</b>

<b>hỗ trợ tuyệt vời cho các tự động hóa được xây dựng bằng selen, appium, v.v. </b>

<b>3.3.2 Ưu, nhược điểm của Automation Testing so với Manual Testing</b>

<i>Hình 8: Ưu nhược điểm của Automation testing</i>

 <b>Ưu điểm:</b>

<b>- Độ tin cậy cao: cơng cụ kiểm thử tự động có sự ổn định cao hơn so với con người,</b>

đặc biệt trong trường hợp nhiều test cases, nên độ tin cậy cao hơn so với kiểm thửthủ công.

<b>- Khả năng lặp: công cụ kiểm thử tự động ra đời là để giúp cho các tester không phải</b>

lặp đi lặp lại các thao tác (ví dụ: nhập dữ liệu, click, check kết quả…) một cáchnhàm chán với độ tin cậy và ổn định cao.

<b>- Khả năng tái sử dụng: với một bộ kiểm thử tự động, người ta có thể sử dụng cho</b>

nhiều phiên bản ứng dụng khác nhau, đây được gọi là tính tái sử dụng.

<b>- Tốc độ cao: do thực thi bởi máy nên tốc độ của kiểm thử tự động nhanh hơn nhiều</b>

so với tốc độ của con người. Nếu cần 5 phú để thực thi một test case một cách thủcơng thì có thể người ta chỉ cần khoảng 30s để thực thi một cách tự động.

<b>- Chi phí thấp: nếu áp dụng kiểm thử tự động đúng cách, người ta có thể tiết kiệm</b>

được nhiều chi phí, thời gian và nhân lực, do kiểm thử tự động nhanh hơn nhiều so

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

với kiểm thử thủ công, đồng thời nhân lực cần để thực thi và bảo trì scripts khơngnhiều.

 <b>Nhược điểm:</b>

<b>- Khó mở rộng, khó bảo trì: trong cùng một dự án, để mở rộng phạm vi cho kiểm thử</b>

tự động khó hơn nhiều so với kiểm thử thủ cơng vì cập nhật hay chỉnh sửa yêu cầunhiều công việc như debug, thay đổi dữ liệu đầu vào và cập nhật code mới.

<b>- Khả năng bao phủ thấp: do khó mở rộng và địi hỏi nhiều kỹ năng lập trình nên độ</b>

bao phủ của kiểm thử tự động thấp xét trên góc nhìn tồn dự án.

<b>- Vấn đề công cụ và nhân lực: hiện nay cũng có nhiều cơng cụ hỗ trợ kiểm thử tự</b>

động khá tốt nhưng chúng vẫn cịn nhiều hạn chế. Ngồi ra nhân lực đạt yêu cầu(có thể sử dụng thành thạo các công cụ này) cũng không nhiều.

<b>3.4 Cucumber3.4.1 Khái niệm</b>

<b>Cucumber, testing framework hỗ trợ Behavior Driven Development (BDD), cho</b>

phép người dùng định nghĩa hành vi hệ thống với ngữ nghĩa tiếng anh thông qua cú phápGherkin. Cucumber hướng tới việc viết test “as cool as cucumber” mà bất kỳ ai cũng cóthể hiểu cho dù họ khơng có chun mơn kĩ thuật. Ví dụ như các nền tảng quen thuộc nhưSelenium thì thường chỉ người viết test hoặc có kĩ năng lập trình mới hiểu được những gìđang test, cịn khác hàng hoặc các bên liên quan thì khơng đọc ngay code để hiểu mà họcần hiểu qua tài liệu.

<b>3.4.2 Behavior Driven Development (BDD)</b>

Trong BDD, người dùng (business analysts – người phân tích nghiệp vụ, productowners – người sỡ hửu sản phẩm) sẽ viết kịch bản(scenarios) hoặc acceptance test ( kiểmthử chấp nhận) mô tả hành vi của hệ thống từ quan điểm của khách hàng trước và tronggiai đoạn phát triển. Cucumber và BDD giải quyết hạn chế rất hay gặp trong các dự ánphần mềm: mỗi người hiểu hệ thống một cách khác nhau.

BDD có khả năng tạo ra các kịch bản test dựa trên góc nhìn của bên phát triển cũngnhư góc nhìn của bên khác hàng. Ngay từ ban đầu, các thành viên dự án sẽ thảo luận đểtạo ra các kịch bản trước, sau đó sẽ cài đặt dựa trên kịch bản đó, tất cả kịch bản test gầngũi với ngơn ngữ tiếng Anh, do đó nó đóng ln vai trị của tài liệu.

28

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">

<b>3.4.3 Quy trình làm việc BDD</b>

<i>Hình 9: Quy trình làm việc BDD</i>

Sau khi kịch bản test chạy, Cucumber sẽ đọc mã Gherkin từ file feature, sau đó nó sẽ tìmđoạn mã trong file step definition mô tả đúng với hành động trong file feature và thực hiệnđoạn code, ở bước chạy code Cucumber có thể kết hợp với các framework khác như Rubyon Rails, Selenium, Spring,...

<b>3.5 Selenium3.5.1 Giới thiệu</b>

Selenium là một bộ công cụ phần mềm chuyêndụng được dùng để kiểm thử tự động (AutomationTesting) các ứng dụng web và có khả năng hỗ trợ chạytrên trình duyệt với nhiều nền tảng như Windows,Linux, Mac,…

Với Selenium, bạn có thể viết test script bằng nhiềuloại ngơn ngữ lập trình khác nhau, một số ngơn ngữphổ biến Selenium hỗ trợ bao gồm: Java, C#, Ruby,Python, Perl, PHP và JavaScript.

<b>3.5.2 Các thành phần của Selenium</b>

Selenium là một trong những khái niệm chung để miêu tả một phần mềm chuyên dụngtrong automation. Mà ở đó, mỗi loại trong nó sẽ đáp ứng được các yêu cầu testing khácnhau. Còn về cơ bản thì Selenium bao gồm 4 thành phần chính là:

<i>Hình 10: Biểu tượng Selenium</i>

</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">

<b>- Selenium IDE (IDE là từ viết tắt của Integrated Developer Environment): là một</b>

plug-in nằm trên trình duyệt Fire-fox, ta có thể sử dụng để record và play lại cácthao tác đó dựa theo một quy trình hay một test case nào đó.

<b>- Selenium RC: Selenium Remote Control, Selenium server sẽ khởi chạy và tương</b>

tác với các trình duyệt web.

<b>- WebDriver: Selenium WebDriver có nhiệm vụ gửi lệnh khởi chạy rồi thực hiện</b>

tương tác trực tiếp với các trình duyệt mà không cần thông qua bất cứ server nhưSelenium RC.

<b>- Selenium Grid: Selenium Hub được sử dụng để khởi chạy nhiều các test thông qua</b>

các máy cũng như các trình duyệt khác nhau tại cùng một thời điểm nhất định. Selenium team đã quyết định gộp Selenium RC và WebDriver lại với nhau để có thểkhởi tạo ra các Selenium 2 với các tính năng mạnh mẽ hơn và hiện nay thì hầu hết cácSelenium Project đều sử dụng chúng.

 Selenium hỗ trợ nhiều hệ điều hành, ngôn ngữ và trình duyệt khác nhau.

 Giúp bạn có thể chạy cùng lúc nhiều bài test để giảm thời gian và tăng hiệu quả Selenium có thể tích hợp với các framework khác như Ant và Maven để biên dịch mã

</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">

<b>3.5.4 Selenium vs Javascript</b>

<i>Hình 11: Selenium kết hợp Javascript</i>

JavaScript là một trong những ngôn ngữ lập trình được sử dụng rộng rãi theo khảo sáthàng năm của Stack Overflow 2020. Vì vậy nên việc sử dụng nó với tự động hóa webSelenium sẽ rất hợp lý! Vì hầu hết các nhà phát triển đã quen thuộc với JavaScript, họ sẽdễ dàng viết các bài kiểm tra tự động hóa bằng JavaScript và nhận được phản hồi nhanhchóng.

<i>Hình 12: Bảng xếp hạng các ngơn ngữ lập trình sử dụng rộng rãi của Stack Overflow 2020</i>

</div><span class="text_page_counter">Trang 32</span><div class="page_container" data-page="32">

<b>3.6 Xray – Công cụ quản lý kiểm thử phần mềm</b>

Xray là Ứng dụng quản lý kiểm thử tự động &thủ công số 1 để đảm bảo chất lượng tại Jira. Đó làmột cơng cụ đầy đủ tính năng live bên trong và tíchhợp liền mạch với Jira. Mục đích là giúp các cơng tycải thiện chất lượng sản phẩm thơng qua thử nghiệmhiệu quả. Có thể lập kế hoạch, thực hiện và theo dõithử nghiệm với khả năng truy xuất nguồn gốc cácyêu cầu đầy đủ.

Xray hỗ trợ cả kiểm tra thủ công và tự động, bao gồm cả BDD sử dụng Cucumber bêncạnh JUnit, NUnit, Robot và các loại khác. Bao gồm tồn bộ vịng đời thử nghiệm: lập kếhoạch thử nghiệm, test specification, tổ chức thử nghiệm theo flat hoặc phân cấp, thựchiện thử nghiệm và báo cáo thử nghiệm. Sử dụng các loại vấn đề Jira đặc biệt, vì vậy bạncó thể sử dụng tất cả các lợi ích của Jira mà bạn được sử dụng bên cạnh việc tạo sự linhhoạt để tổ chức trong cùng một dự án hoặc trên nhiều dự án, để tách biệt rõ ràng các mốiquan tâm.

Tích hợp với cơng cụ phổ biến được u thích, bao gồm cả Bamboo và Jenkins, thật dễdàng bằng cách sử dụng các tiện ích bổ sung miễn phí của Xray hoặc thậm chí thơng quaAPI REST tích hợp của nó.

<b>3.7 Jenkins</b>

<b>3.7.1 Khái niệm</b>

Jenkins là một cơng cụ tự động hóa có mã nguồn mở được viết bằng Java kết hợp vớinhiều Plugin, Jenkins có mục đích chính là tích hợp liên tục (hay còn gọi là CI-Continuous Integration). Công cụ này được sử dụng để xây dựng và kiểm tra các dự án32

<i><small>Hình 13: Biểu tượng Xray</small></i>

</div>

×