TRƯỜNG ĐẠI HỌC THƯƠNG MẠI

KHOA HTTTKT - TMĐT

KHÓA LUẬN TỐT NGHIỆP

Nghiên cứu và ứng dụng kiểm thử tự động sử dụng Puppeteer - CodeceptJS

cho công ty TNHH Seta - International Việt Nam

Giáo viên hướng dẫn: Sinh viên thực hiện:

ThS Nguyễn Thị Thu Thủy Bùi Thị Lâm Oanh

Lớp: 52S21

Mã SV: 16D190026

Hà Nội, 2020

i

LỜI CẢM ƠN

Để hoàn thiện khóa luận tốt nghiệp với đề tài “Nghiên cứu và ứng dụng kiểm thử

tự động sử dụng Puppeteer - CodeceptJS cho công ty TNHH Seta - International Việt

Nam” ngoài sự cố gắng của bản thân qua quá trình học tập còn có sự giúp đỡ rất nhiều

của Nhà

trường, thầy cô, cùng ban lãnh đạo cũng như cán bộ nhân viên trong công ty

TNHH Seta - International Việt Nam

Lời đầu tiên, em xin gửi lời cảm ơn chân thành và sâu sắc nhất tới cô giáo

Th.S Nguyễn Thị Thu Thủy người đã tận tình hướng dẫn và giúp đỡ em rất nhiều

trong suốt quá trình làm khóa luận này. Cô đã giúp em có những định hướng đúng đắn

khi thực hiện khóa luận tốt nghiệp cũng như những kỹ năng nghiên cứu cần thiết khác.

Cô cũng là người đã đóng góp ý kiến, sửa bài giúp em có thể hoàn thành tốt nhất

bàicó thể.

Em xin gửi lời cảm ơn chân thành tới ban giám đốc cũng như những anh/chịlàm

việc tại công ty TNHH Seta-International Việt Nam vì sự quan tâm, ủng hộ hỗ trợ cho

em trong quá trình thực tập và thu thập tài liệu.

Em xin gửi lời cảm ơn tới các thầy cô trong nhà trường và các thầy cô khoa Hệ

Thống Thông Tin Kinh Tế trường đại học Thương Mại đã chia sẻ cho em những kiến

thức quý báu trong suốt quá trình học tập để em có đủ kiến thức hoàn thành tốt bài

khóa luận này.

Với thời gian nghiên cứu và kiến thức còn hạn chế nên không tránh khỏi những

sai sót trong quá trình phân tích, đánh giá. Vì thế, em rất mong nhận được những ý

kiến đóng góp của quý thầy cô, ban lãnh đạo Công ty để bài khóa luận hoàn thiện hơn.

Em xin chân thành cảm ơn!

ii

MỤC LỤC

LỜI CẢM ƠN ..........................................................................................................................i

MỤC LỤC .............................................................................................................................. iii

PHẦN MỞ ĐẦU .....................................................................................................................1

1. Tầm quan trọng, ý nghĩa của vấn đề nghiên cứu. ......................................................1

2. Mục tiêu và nhiệm vụ nghiên cứu. .................................................................................2

2.1. Mục tiêu nghiên cứu.......................................................................................................2

2.2. Nhiệm vụ nghiên cứu .....................................................................................................2

3. Đối tượng và phạm vi nghiên cứu. .................................................................................2

3.1. Đối tượng nghiên cứu. ...................................................................................................2

3.2. Phạm vi nghiên cứu. .......................................................................................................2

4. Phương pháp nghiên cứu. ................................................................................................3

4.1. Phương pháp thu thập dữ liệu. ....................................................................................3

4.2. Phương pháp xử lý dữ liệu. ..........................................................................................3

5. Kết cấu khóa luận. .............................................................................................................3

CHƯƠNG I: TỔNG QUAN KIỂM THỬ PHẦN MỀM VÀ KIỂM THỬ TỰ ĐỘNG 4

1.1. Phần mềm ........................................................................................................................4

1.1.1. Khái niệm ..................................................................................................................4

1.1.2. Phân loại phần mềm ...................................................................................................4

1.1.3. Quy trình phát triển phần mềm ...............................................................................4

1.1.4. Các mô hình phát triển phần mềm..........................................................................6

1.1.5. Mối quan hệ giữa quy trình phát triển phần mềm và kiểm thử phần mềm .......8

1.2. Kiểm thử phần mềm ......................................................................................................9

1.2.1. Kiểm thử phần mềm là gì? ........................................................................................9

1.2.2. Vai trò của kiểm thử phần mềm ..............................................................................9

1.2.3. Quy trình kiểm thử phần mềm.............................................................................. 10

1.2.4. Quy trình xử lý lỗi .................................................................................................... 11

1.2.5. Phân loại và các kỹ thuật kiểm thử .................................................................... 12

1.3. TÌM HIỂU VỀ KIỂM THỬ TỰ ĐỘNG ................................................................ 13

1.3.1. Khái quát chung về kiểm thử tự động ................................................................. 13

1.3.2. Lợi ích và khó khăn của kiểm thử tự động ......................................................... 14

1.3.3. Thị trường kiểm thử tự động ................................................................................. 15

iii

1.3.4. Tình hình nghiên cứu và ứng dụng của kiểm thử tự động .............................. 15

1.3.5. So sánh giữa kiểm thử thủ công và kiểm thử tự động...................................... 16

CHƯƠNG II: THỰC TRẠNG VIỆC KIỂM THỬ PHẦN MỀM TẠI CÔNG TY

TNHH SETA ........................................................................................................................ 18

2.1. Tổng quan về công ty TNHH Seta - International Việt Nam ............................ 18

2.1.1. Giới thiệu chung về công ty .................................................................................... 18

2.1.2. Quá trình thành lập công ty ................................................................................... 18

2.1.3. Cơ cấu tổ chức của công ty..................................................................................... 19

2.1.4. Lĩnh vực hoạt động .................................................................................................. 21

2.1.5. Kết quả hoạt động kinh doanh gần đây .............................................................. 21

2.2. Phân tích thực trạng quá trình kiểm thử phần mềm tại công ty TNHH Seta -

International Việt Nam ...................................................................................................... 22

2.3. Đánh giá thực trạng quá trình kiểm thử phần mềm tại công ty TNHH Seta

International Việt Nam ...................................................................................................... 24

CHƯƠNG III: NGHIÊN CỨU VÀ ỨNG DỤNG CÔNG CỤ KIỂM THỬ TỰ

ĐỘNG PUPPETEER - CODECEPJS VÀO THỰC TẾ CÔNG TY TNHH SETA

................................................................................................................................................. 26

3.1. Tìm hiểu về công cụ kiểm thử tự động PUPPETEER - CODECEPJS ........... 26

3.1.1. Puppeteer là gì? ........................................................................................................ 26

3.1.2. Puppeteer có thể làm gì? ......................................................................................... 26

3.1.3. Tại sao nên sử dụng Puppeteer cho testing? ...................................................... 26

3.2. ỨNG DỤNG CÔNG CỤ VÀO CÔNG CỤ KIỂM THỬ TỰ ĐỘNG

PUPPETEER - CODECEPJS VÀO THỰC TẾ CÔNG TY TNHH SETA ........... 29

3.2.1. Giới thiệu về Các phần mềm cần thiết ............................................................... 29

3.2.2. Cài đặt và khởi tạo Puppeteer – Codeceptjs và ứng dụng .............................. 29

iv

PHẦN MỞ ĐẦU

1. Tầm quan trọng, ý nghĩa của vấn đề nghiên cứu.

Chúng ta đã và đang chứng kiến sự tăng trưởng đáng kinh ngạc của ngành công

nghiệp phần mềm trong vài thập kỷ qua. Nếu như trước đây, phần mềm máy tính chỉ

được sử dụng để tính toán khoa học kỹ thuật và xử lý dữ liệu, thì ngày nay, nó đã được

ứng dụng vào mọi mặt của đời sống hằng ngày của con người. Từ các ứng dụng nhỏ để

điều khiển các thiết bị gia dụng như điện thoại, máy giặt, ti vi, tủ lạnh đến các ứng dụng

lớn hơn cho rất nhiều người dùng cùng sử dụng như hệ thống quản lý doanh nghiệp, các

hệ thống hướng dẫn giao thông, hệ thống quản lý việc khám chữa bệnh. Có thể nói,

công nghiệp phần mềm đã len lỏi đến từng ngóc ngách nhỏ nhất của đời sống con người,

đòi hỏi chất lượng phần mềm ngày một nâng cao hơn. Đồng nghĩa với việc cần phải

kiểm thử phần mềm chặt chẽ để có thể đảm bảo chất lượng của phần mềm.

Kiểm thử phần mềm là khâu sống còn của sản phẩm trước khi đưa vào sử dụng,

góp phần quyết định sự thành công của dự án phần mềm. Tuy nhiên, kiểm thử phần

mềm là một công việc tiêu tốn rất nhiều thời gian, tiền bạc, công sức. Nhất là đối với

các phần mềm lớn, chi phí này càng tăng lên gấp bội mỗi khi có sự thay đổi, nâng cấp

các chức năng của phần mềm. Mà điều này thì không thể tránh khỏi, phần mềm luôn

cần được thay đổi để đáp ứng yêu cầu ngày một cao hơn của người sử dụng.

Hiện tại, công việc kiểm thử tại công ty Seta chủ yếu được thực hiện bởi kiểm

thử thủ công. Nhiều khi chức năng thay đổi nhỏ nhưng phần cần thực hiện kiểm thử lại

rất lớn, bên cạnh việc tốn kém chi phí, nhân lực, cũng có khả năng có thể chậm tiến

độ, bị lọt lỗi khi bàn giao sản phẩm. Do đó, luận văn mong muốn đưa ra giải pháp tự

động hóa kiểm thử nhằm giảm thiểu chi phí kiểm thử, cả về thời gian, tiền bạc, con

người, và giảm sự nhàm chán cho kiểm thử viên mà vẫn đảm bảo được chất lượng của

sản phẩm.

Với sự phát triển mạnh mẽ của phát triển phần mềm cũng như là kiểm thử phần

mềm hiện nay, có rất nhiều công cụ hỗ trợ cho kiểm thử tự động, mỗi công cụ có thế

có một số phương pháp luận khác nhau. Nhưng điều đó không đồng nghĩa với việc lựa

chọn công cụ bất kỳ nào cũng tốt, hoặc cứ áp dụng kiểm thử tự động là có thể tiết kiệm

chi phí và đảm bảo dự án sẽ thành công. Vì vậy luận văn mong muốn nghiên cứu và áp

dụng công cụ kiểm thử Puppeteer – Codeceptjs vào thực tế công ty.

1

2. Mục tiêu và nhiệm vụ nghiên cứu.

2.1. Mục tiêu nghiên cứu

Xác định vai trò quan trọng của giai đoạn kiểm thử đối với quy trình sản xuất

phần mềm và mục đích của việc áp dụng các công cụ kiểm thử tự động vào việc kiểm

thử. Trên cơ sở nghiên cứu và phân tích ứng dụng công cụ tự động trong việc kiểm thử

sản phẩm nhằm nâng cao chất lượng của phần mềm.

Bên cạnh đó, kiểm thử tự động cũng giúp rút ngắn thời gian và giảm chi phí cho

sản phẩm phần mềm. Nó giúp cho các chuyên gia kiểm thử tìm ra lỗi một cách chính

xác hơn trong quá trình tạo ra phần mềm và khắc phục những hạn chế của việc kiểm

thử thủ công. Việc kiểm thử được thực hiện chặt chẽ sẽ hạn chế lỗi, tuy nhiên trong

phần mềm vẫn còn nhiều lỗi tiềm ẩn mà việc làm bằng thủ công không thể nhìn nhận

được hết dẫn đến khả năng gây thiệt hại cho nhà sản xuất. Vì vậy, việc áp dụng kiểm

thử tự động là phương pháp tốt để đảm bảo cho các yêu cầu của người dùng về thiết kế

và ứng dụng phần mềm được đáp ứng đầy đủ.

2.2. Nhiệm vụ nghiên cứu

Để có thể đi sâu vào bài toán mà đề tài đã đặt ra, ta cần làm rõ nhiệm vụ nghiên

cứu sau:

- Hệ thống hóa lại kiến thức và các lý luận liên quan đến đề tài nghiên cứu: Các

khái niệm cơ bản, tiến trình kiểm thử, các phương pháp, kỹ thuật kiểm thử và ứng

dụng.

- Nghiên cứu, đánh giá thực trạng và đưa ra giải pháp cho việc kiểm thử tại công

ty TNHH Seta.

- Nghiên cứu và ứng dụng công cụ kiểm thử tự động Puppeteer – Codeceptjs vào

thực tế công ty để thấy được tính thực tiễn của đề tài. Nêu các kết quả đạt được, chưa

đạt được và hướng giải quyết các vấn đề khi kiểm thử và ứng dụng công cụ này.

3. Đối tượng và phạm vi nghiên cứu.

3.1. Đối tượng nghiên cứu.

- Nghiên cứu công cụ kiểm thử tự động Puppeteer – Codeceptjs vào thực tế công ty.

- Các kiến thức về việc kiểm thử phần mềm và các kiến thức liên quan.

3.2. Phạm vi nghiên cứu.

- Về không gian: Thực hiện nghiên cứu đề tài tại công ty TNHH Seta và trong

phạm vi của bài toán đặt ra.

- Về thời gian: Từ 09/10/2019 đến 03/12/2019

2

4. Phương pháp nghiên cứu.

4.1. Phương pháp thu thập dữ liệu.

- Thu thập dữ liệu thứ cấp: Trong khóa luận, em đã sử dụng những phương pháp

thu thập dữ liệu như: trên mạng Internet, tham khảo các bài báo, những khóa luận có

đề tài tương tự,..

4.2. Phương pháp xử lý dữ liệu.

Phương pháp xử lý dữ liệu trong khóa luận được thực hiện trên cơ sở tổng hợp và

vận dụng các phương pháp nghiên cứu như thống kê, tổng hợp, phân tích, so sánh.

5. Kết cấu khóa luận.

Bố cục của luận văn gồm làm ba chương:

Chương I: Tổng quan kiểm thử phần mềm và kiểm thử tự động: Khái niệm về

kiểm thử phần mềm, quy trình kiểm thử phần mềm, các phương pháp và kỹ thuật kiểm

thử. Tìm hiểu về những kiến thức liên quan đến kiểm thử tự động và ứng dụng của nó

hiện nay trong việc kiểm thử.

Chương II: Thực trạng việc kiểm thử phần mềm tại công ty TNHH Seta -

International Việt Nam: Giới thiệu về công ty, lĩnh vực hoạt động, khái quát những gì

công ty đã đạt được. Bên cạnh đó, tìm hiểu quy trình kiểm thử phần mềm để nhìn nhận

được những ưu, nhược điểm trong giai đoạn này

Chương III: Nghiên cứu và ứng dụng công cụ kiểm thử tự động Puppeteer –

Codeceptjs vào thực tế công ty TNHH Seta - International Việt Nam: Tìm hiểu công

cụ Puppeteer – Codeceptjs và ứng dụng vào thực tiễn bài toán, đưa ra điểm mạnh,

điểm yếu của công cụ này.

3

CHƯƠNG I: TỔNG QUAN KIỂM THỬ PHẦN MỀM VÀ KIỂM THỬ TỰ ĐỘNG

1.1. Phần mềm

1.1.1. Khái niệm

Phần mềm là một tập hợp những câu lệnh hoặc chỉ thị được viết bằng một hoặc

nhiều ngôn ngữ lập trình theo một trật tự xác định và các dữ liệu hay tài liệu liên quan

nhằm tự động thực hiện một số nhiệm vụ hay chức năng hoặc giải quyết một vấn đề cụ

thể nào đó. Phần mềm thực hiện các chức năng của nó bằng cách gửi các chỉ thị trực

tiếp đến phần cứng (hay phần cứng máy tính) hoặc bằng cách cung cấp dữ liệu để phục

vụ các chương trình hay phần mềm khác trong hệ thống.

1.1.2. Phân loại phần mềm

Có nhiều cách thức phân loại phần mềm, song có thể chia thành hai loại chính sau:

*Theo phương thức hoạt động

- Phần mềm hệ thống dùng để vận hành máy tính và các phần cứng máy tính.

Đây là các loại phần mềm mà hệ điều hành liên lạc với chúng để điều khiển và quản lý

các thiết bị phần cứng.

- Phần mềm ứng dụng để người sử dụng có thể hoàn thành một hay nhiều công

việc nào đó.

- Phần mềm chuyển dịch mã bao gồm trình biên dịch và trình thông dịch

- Các nền tảng công nghệ như .NET, IC:DOANH NGHIỆP…

*Theo khả năng ứng dụng

- Phần mềm thời gian thực (các PM anti - virut, PM chat,…)

- Phần mềm giải trí (Game,...)

- Phần mềm nhúng: chạy trên các thiết bị đặc thù như điện thoại di động, TV,

máy lạnh, …

- Phần mềm phân tán: chạy trên nhiều thiết bị, phối hợp hoạt động đồng thời với

nhau.

1.1.3. Quy trình phát triển phần mềm

Cũng như mọi ngành sản xuất khác, quy trình là một trong những yếu tố cực kỳ

quan trọng đem lại sự thành công cho các nhà sản xuất phần mềm, nó giúp cho mọi

thành viên trong dự án từ người cũ đến người mới, trong hay ngoài công ty đều có thể

xử lý đồng bộ công việc tương ứng vị trí của mình thông qua cách thức chung của

4

công ty, hay ít nhất ở cấp độ dự án. Có thể nói quy trình phát triển/ xây dựng phần

mềm có tính chất quyết định để tạo ra sản phẩm chất lượng tốt với chi phí thấp và

năng suất cao.

Các giai đoạn phát triển của một sản phẩm phần mềm

Giai STT Công việc Đầu ra đoạn

1. Giải Thực hiện khảo sát chi tiết yêu cầu khách hàng Tài liệu Đặc tả yêu

pháp và tổng hợp vào tài liệu Giải pháp (Phân tích cầu

nghiệp vụ, Phân tích yêu cầu, Đặc tả yêu cầu, Prototype

Prototype).

Tài liệu giải pháp phải mô tả đầy đủ các yêu

cầu về chức năng, phi chức năng, giao diện.

2. Thiết Thực hiện thiết kế và tổng hợp vào tài liệu Thiết kế tổng thể,

kế Thiết kế (Thiết kế tổng thể, thiết kế CSDL, thiết kế CSDL,

Thiết kế chi tiết). Thiết kế chi tiết

3. Lập Lập trình viên thực hiện lập trình theo tài liệu Source code

trình Giải pháp và Thiết kế đã được phê duyệt.

4. Kiểm CBKT tạo kịch bản kiểm thử theo tài liệu giải Testcases

thử pháp Lỗi trên Hệ thống

Thực hiện kiểm thử quản lý lỗi

Cập nhật kết quả vào KBKT, lỗi được log đầy

đủ

Tester và Developer phối hợp xử lý các lỗi và

cập nhật trên Hệ thống quản lý lỗi

5. Triển Triển khai sản phẩm cho Khách hàng Biên bản triển khai

với khách hàng khai

5

1.1.4. Các mô hình phát triển phần mềm

Có khá nhiều mô hình phát triển phần mềm khác nhau, trong đó một số được ứng

dụng khá phổ biến trên thế giới:

*Mô hình thác nước:

Mô hình này bao gồm các giai đoạn xử lý nối tiếp nhau như sau:

Giai đoạn Đặc điểm

Phân tích yêu Xác định những yêu cầu liên quan đến chức năng và phi chức năng

cầu và tài liệu mà hệ thống phần mềm cần có. Đầu ra của giai đoạn này là “Bản

đặc tả đặc tả yêu cầu phần mềm” (SRS).

Phân tích hệ Xác định làm thế nào để hệ thống phần mềm đáp ứng những yêu

thống và thiết kế cầu mà khách hàng yêu cầu trong tài liệu SRS/

Lập trình Thực hiện viết code để được như bản thiết kế hệ thống

Kiểm thử Bao gồm kiểm thử các thành phần và hệ thống, kiểm thử nghiệm

thu với sự tham gia của khách hàng, xác định xem phần mềm có

đáp ứng yêu cầu của họ hay không

Cài đặt và bảo Cài đặt, cấu hình và đào tạo cho khách hàng.

trì Sửa chữa lỗi và phát triển thay đổi được khách hàng yêu cầu.

=> Nhược điểm của mô hình thác nước: Thực tế cho thấy đến những giai đoạn

cuối của dự án mới có khả năng nhận ra sai sót trong những giai đoạn trước và phải

quay lại để sửa chữa.

6

*Mô hình chữ V

- Giai đoạn phát triển:

+ Xác định yêu cầu và đặc tả: Xác định yêu cầu cần thiết mà hệ thống đòi hỏi,

đưa ra bản đặc tả.

+ Phân tích hệ thống: Phân tích các yêu cầu mà hệ thống cần có và đưa ra giải

pháp tích hợp các yêu cầu đó vào hệ thống.

+ Thiết kế chi tiết: Chi tiết hóa các bước thực hiện xây dựng hệ thống

- Giai đoạn kiểm thử:

+ Phát triển: Thực hiện việc viết code

+ Kiểm tra từng thành phần và tích hợp: Kiểm tra các module của hệ thống tương

ứng với pha thiết kế chi tiết.

+ Kiểm thử toàn hệ thống: Kiểm thử hoạt động của hệ thống (về chức năng, giao

diện)

+ Nghiệm thu: Kiểm tra lần cuối cùng và nghiệm thu sản phẩm đưa vào sử dụng.

=> Mô hình chữ V là quy trình phát triển phần mềm mở rộng của quy trình phát

triển phần mềm theo mô hình thác nước. Toàn bộ quy trình được chia thành hai nhánh:

Phát triển và Kiểm thử. Mỗi giai đoạn phát triển sẽ được tiến hành song song với một

giai đoạn kiểm thử tương ứng, từ đó các lỗi được phát hiện sớm ngay từ đầu.

7

* Mô hình Agile là một phương pháp phát triển phần mềm linh hoạt để làm sao

đưa sản phẩm đến tay người dùng càng nhanh càng sớm càng tốt. Dự án sẽ được thực

hiện trong các phân đoạn lặp đi lặp lại. Các phân đoạn (được gọi là Iteration hoặc

Sprint) này thường có khung thời gian ngắn (từ 1- 4 tuần). Trong mỗi phân đoạn này,

nhóm phát triển thực hiện đầy đủ các công việc cần thiết như lập kế hoạch, phân tích

yêu cầu, thiết kế, triển khai, kiểm thử (với các mức độ khác nhau) để cho ra các phần

nhỏ của sản phẩm. Cuối mỗi phân đoạn thường cho ra các phần nhỏ của sản phẩm cuối

cùng có thể chạy tốt và sử dụng được ngay. Cứ lặp đi lặp lại như thế đến khi hoàn

thành dự án và khách hàng được thỏa mãn.

1.1.5. Mối quan hệ giữa quy trình phát triển phần mềm và kiểm thử phần mềm

Vai trò việc kiểm thử trong suốt quy trình của phần mềm:

- Kiểm thử không tồn tại độc lập.

- Các hoạt động của kiểm thử luôn gắn liền với các hoạt động phát triển phần

mềm.

- Các mô hình phát triển phần mềm khác nhau cần các cách tiếp cận test khác

nhau.

Phát triển phần mềm và kiểm thử phần mềm có mối quan hệ khăng khít với nhau.

Phát triển phần mềm ngay từ những pha đầu tiên như phân tích yêu cầu, phân tích thiết

kế hệ thống,.. phải được tiến hành kiểm thử một cách độc lập bởi một đội ngũ có kinh

nghiệm để nếu có phát hiện ra sai sót thì phải tiến hành sửa chữa kịp thời, nếu càng để

về sau mới phát hiện ra lỗi thì chi phí để sửa chữa là vô cùng lớn. Những pha đầu tiên

của quy trình phát triển phần mềm thì chi phí là nhỏ không đáng kể nhưng càng để về

8

sau thì chi phí tăng lên rất nhiều lần. Vì vậy ta không thể chủ quan mà lơ là việc kiểm

thử ngay từ giai đoạn đầu của phát triển phần mềm. Điều này là cần thiết nhất là đối

với các dự án phần mềm lớn của các doanh nghiệp ngày nay.

1.2. Kiểm thử phần mềm

1.2.1. Kiểm thử phần mềm là gì?

Kiểm thử phần mềm là quá trình khảo sát một hệ thống hay thành phần dưới

những điều kiện xác định, quan sát và ghi lại các kết quả, và đánh giá một khía cạnh

nào đó của hệ thống hay thành phần đó. (Theo Bảng chú giải thuật ngữ chuẩn IEEE

của Thuật ngữ kỹ nghệ phần mềm – IEEE Standard Glossary of Software Engineering

Terminology).

Kiểm thử phần mềm là quá trình thực thi một chương trình với mục đích tìm lỗi.

(Theo “The Art of Software Testing” – Nghệ thuật kiểm thử phần mềm).

Kiểm thử phần mềm là hoạt động khảo sát thực tiễn sản phẩm hay dịch vụ phần

mềm trong đúng môi trường chúng dự định sẽ được triển khai nhằm cung cấp cho

người có lợi ích liên quan những thông tin về chất lượng của sản phần hay dịch vụ

phần mềm ấy. Mục đích của kiểm thử phần mềm là tìm ra các lỗi hay khiếm khuyết

phần mềm nhằm đảm bảo hiệu quả hoạt động tối ưu của phần mềm trong nhiều ngành

khác nhau. (Theo bách khoa toàn thư mở Wikipedia).

Có thể định nghĩa một cách dễ hiểu như sau: Kiểm thử phần mềm là hoạt động

nhằm tìm kiếm, phát hiện các lỗi của phần mềm đảm bảo sản phẩm phần mềm đáp ứng

chính xác, đầy đủ và đúng theo yêu cầu của khách hàng, yêu cầu của sản phẩm đã đặt

ra. Kiểm thử phần mềm cũng cung cấp mục tiêu, cái nhìn độc lập về phần mềm, điều

này cho phép việc đánh giá và hiểu rõ các rủi ro khi thực thi phần mềm.

1.2.2. Vai trò của kiểm thử phần mềm

Việc tạo ra một sản phẩm phần mềm phải trải qua nhiều giai đoạn, người ta gọi là

quy trình phát triển phần mềm, bắt đầu từ khi bắt đầu có ý tưởng cho đến khi đưa ra

sản phẩm phần mềm thực thi. Khối lượng công việc trong từng giai đoạn của quá trình

sản xuất phần mềm cũng thay đổi theo thời gian.

Như vậy, một sản phẩm phần mềm không chi đơn gian là các đoạn mã chương

trình mà còn rất nhiều phần ẩn đằng sau nó. Vì vậy, việc mắc lỗi không chỉ xảy ra

trong khi lập trình mà còn xảy ra cao hơn trong các công đoạn khác của quy trình phát

9

triển một sản phẩm phần mềm. Việc kiểm thử cũng vì thế phải được tiến hành trong tất

cả các phần tạo nên một sản phẩm phần mềm.

1.2.3. Quy trình kiểm thử phần mềm

Quy trình kiểm thử phần mềm gồm các hoạt động sau:

* Kế hoạch kiểm thử:

- Xác định phạm vi, rủi ro cũng như mục đích của hoạt động kiểm thử

- Xác định các cách tiếp cận kiểm thử

- Xác định chiến lược kiểm thử. Chiến lược kiểm thử mô tả các thành phần kiểm

thử cần có trong một chu kỳ phát triển phần mềm chẳng hạn như: các mục tiêu kiểm

thử, các phương pháp kiểm thử, tổng thời gian và nguồn lực yêu cầu cho các dự án

cũng như các môi trường test. (Lưu ý: Chiến lược kiểm thử thường được tạo ra bởi

PM, TL)

- Xác định các nguồn lực cần có cho kiểm thử như: nhân lực, phần cứng, phần

mềm, môi trường test v.v

- Lên lịch cho các hoạt động phân tích và thiết kế các trường hợp kiểm thử, thực

thi kiểm thử cũng như đánh giá kết quả kiểm thử.

- Xác định các tiêu chí kết thúc việc kiểm thử (exit criteria) chẳng hạn như tỉ lệ

độ bao phủ của test case, số lượng bug tìm được, độ nghiêm trọng của những con bug

tìm được. Bên dưới là 1 ví dụ cơ bản cho tiêu chí kết thúc kiểm thử.

* Thiết kế kiểm thử:

- Rà soát các yêu cầu cần thiết trước khi tiến hành kiểm thử như tài liệu đặc tả, tài

liệu thiết kế, tài liệu giao diện, v.v

- Xác định các điều kiện kiểm thử

- Thiết kế test case

- Đánh giá tính khả thi trong việc kiểm thử của yêu cầu cũng như của hệ thống.

* Chuẩn bị môi trường test: cũng như xác định các yêu cầu về cơ sở hạ tầng và

các công cụ kiểm thử tương ứng.

* Thực thi kiểm thử:

- Chuẩn bị test data

- Thiết kế và phân loại các trường hợp kiểm thử dựa theo độ ưu tiên của từng

trường hợp kiểm thử

- Chạy các test case theo các bước đã định ra trước đó

10

- Chạy lại các case bị failed trước đó để xác nhận là case đó đã được sửa

* Đánh giá kiểm thử: Đánh giá toàn bộ quá trình kiểm tra bao gồm xem xét và

đánh giá kết quả kiểm tra lỗi, chỉ định các yêu cầu thay đổi và tính toán số liệu liên

quan, đến quá trình kiểm

1.2.4. Quy trình xử lý lỗi

11

Quy trình quản lý lỗi bao gồm 4 bước chính :

Bước 1:Khi xác định ra lỗi, 1 vấn đề thì lỗi đó được ghi vào hệ thống quản lý lỗi .

Nếu không có một hệ thống quản lý lỗi thì ghi nhận vào một biểu mẫu riêng của dự án

dưới dạng excel hay word. Ghi nhận lỗi phải đày đủ thông tin, mô tả kỹ lỗi đó, xuất

hiện như thế nào, thực hiện hoạt động đảm bảo chất lượng gì? Thông thường ai phát

hiện ra lỗi thì người đó phải là người ghi nhận lỗi đó.

Bước 2: Sau khi lỗi được ghi nhận sẽ phải thực hiện phân tích lỗi đó để trước tiên

xác nhận xem đó có phải là lỗi hay không, để có những hành động thích hợp.

Bước 3 : Lỗi được xác định là sẽ sửa thì phải được giao cho người thích hợp sửa.

Người chịu trách nhiệm sửa sẽ phải thực hiện sửa lỗi. Trong quá trình sửa lỗi, người

sửa lỗi sẽ phải tự kiểm thử đơn vị họ sửa trước khi thông báo lỗi đó đã được sửa.

Bước 4: Lỗi sau khi được sửa phải kiểm thử lại để xác nhận xem lỗi đó thực sự

đã được sửa chưa, nếu sửa chưa đúng thì mở lại lỗi đó, nếu sửa đúng rồi thì đóng lỗi.

=> Việc quản lý lỗi, quản lý sự cố chính là việc kiểm soát lỗi hay sự cố đó từ khi

lỗi hay sự cố được ghi nhận đến khi chúng ở trạng thái đóng.

1.2.5. Phân loại và các kỹ thuật kiểm thử

 Kiểm thử hộp đen (Black Box testing): dùng để kiểm tra chức năng mà không

*Các kỹ thuật kiểm thử phần mềm

xem xét mã nguồn cũng như cấu trúc chương trình bên trong. Thường kiểm thử hộp

 Kiểm thử hộp trắng (White Box testing): khác với kiểm thử hộp đen, kiểm thử

đen quan tâm nhiều đến các bộ dữ liệu kiểm thử đầu vào.

hộp trắng xem xét mọi module trong chương trình, các luồng thực hiện công việc để từ

 Kiểm thử hộp xám (Grey Box testing): Đây là một kỹ thuật kiểm thử mới dựa

đó đưa ra các chiến lược kế hoạch cụ thể cho việc kiểm thử.

trên những đặc tính của cả kiểm thử hộp đen và hộp trắng. Mục tiêu chính của kiểm

thử hộp xám là kiểm thử các ứng dụng trên nền web (web based).

*Các giai đoạn hay cấp độ kiểm thử phần mềm

- Kiểm thử đơn vị: Kiểm thử từng module nhỏ trong chương trình để tìm ra các

lỗi và khắc phục

- Kiểm thử tích hợp: Sau khi đã thực hiện thành công kiểm thử đơn vị, ta sẽ tiến

hành tích hợp các module này với nhau và kiểm thử trên toàn bộ khối mã lệnh đã tíc h

hợp này.

12

- Kiểm thử hệ thống: Kiểm thử trên toàn bộ ứng dụng

- Kiểm thử chấp nhận: Khâu này do khách hàng trực tiếp đảm nhận trước khi bàn

giao sản phẩm chính thức.

- Kiểm thử hồi quy là hoạt động trợ giúp để đảm bảo rằng các thay đổi không

đưa ra những hành vi hoặc những lỗi bổ sung không mong đợi.

1.3. TÌM HIỂU VỀ KIỂM THỬ TỰ ĐỘNG

1.3.1. Khái quát chung về kiểm thử tự động

1.3.1.1. Khái niệm

Trong lĩnh vực kiểm thử phần mềm, thì kiểm thử tự động hay còn gọi là

Automation testing đó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ỗi cũ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ặp lạ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ư:

· Quick Test Profressional - (HP)

· Selenium

· Test Architect - (LogiGear)

· Ranorex

· Visual Studio CodedUI Testing

· TestComplete (SmartBear)

· SOAPUI - Web Services Testing (SmartBear)

 Giảm bớt công sức và thời gian thực hiện quá trình kiểm thử cho cả một kế

1.3.1.2. Tại sao phải kiểm thử tự động?

 Tăng độ tin cậy

 Rèn luyện kỹ năng lập trình cho kiểm thử viên

 Giảm chi phí cho tổng quá trình kiểm thử

hoạch kiểm thử.

 Không đủ tài nguyên: Khi số lượng Test case quá nhiều mà kiểm thử viên

Khi nào cần kiểm thử tự động?

không thể hoàn tất trong thời gian cụ thể

13

 Kiểm tra hồi quy: Nâng cấp phần mềm, kiểm tra lại các tính năng đã chạy tốt và

 Kiểm tra khả năng vận hành phần mềm trong môi trường đặc biệt:

 Đo tốc độ trung bình xử lý một yêu cầu của Web server.

 Xác định số yêu cầu tối đa được xử lý bởi Web server.

 Xác định cấu hình máy thấp nhất mà phần mềm vẫn có thể hoạt động tốt.

những tính năng đã sửa. Tuy nhiên, việc này khó đảm bảo về mặt thời gian.

1.3.1.3. Quy trình của kiểm thử tự động

Việc phát triển kiểm thử tự động cũng tuân theo các bước phát triển phần mềm,

ta phải xem xét phát triển kiểm thử phần mềm giống như phát triển một dự án. Giống

như phát triển phần mềm, chúng ta thực hiện các bước cơ bản sau:

Việc phát triển kiểm thử tự động cũng tuân theo các bước phát triển phần mềm, ta

 Xây dựng yêu cầu: thu thập các đặc tả yêu cầu, lựa chọn những phần cần thực

phải xem xét phát triển kiểm thử phần mềm giống như phát triển một dự án. Giống như

 Phân tích thiết kế mô hình kiểm thử tự động: xây dựng mô hình phát triển kiểm

hiện kiểm thử tự động, lập kế hoạch kiểm thử.

 Phát triển testscript:

 Tạo testscript: giai đoạn này chúng ta sẽ sử dụng tool để ghi lại các thao tác lên

thử tự động, thiết kế và xây dựng các test case để thực thi.

 Chỉnh sửa testscript: Chỉnh sửa để testscript thực hiện kiểm tra theo đúng yêu

phần mềm cần kiểm tra và tự động sinh ra testscript.

 Chạy testscript: giám sát các hoạt động kiểm thử phần mềm của testscript.

 Kiểm tra kết quả: kiểm tra kết quả thông báo ngay sau khi thực hiện kiểm thử

cầu đặt ra, cụ thể là làm theo test case cần thực hiện.

 Đánh giá kết quả kiểm thử: thông qua báo cáo kết quả kiểm thử, bổ sung, chình

tự động

sửa những sai sót.

1.3.2. Lợi ích và khó khăn của kiểm thử tự động

1.3.2.1. Lợi ích của kiểm thử tự động

- Không cần đến sự can thiệp của kiểm thử viên.

- Giảm chi phí khi thực hiện kiểm tra số lượng lớn test case hoặc test case lặp lại

nhiều lần.

- Giả lập tình huống khó có thể thực hiện bằng tay.

14

1.3.2.2. Khó khăn của kiểm thử tự động

-.Mất chi phí tạo các script để thực hiện kiểm thử tự động.

- Tốn kém chi phí cho bảo trì các script.

- Đòi hỏi kiểm thử viên phải có kỹ năng tạo các script kiểm thử tự động.

- Không áp dụng được trong việc tìm lỗi mới của phần mềm.

1.3.3. Thị trường kiểm thử tự động

Cách mạng công nghiệp lần thứ tư đánh dấu kỷ nguyên vạn vật kết nối Internet.

Nó xảy ra dựa trên sự hội tụ của nhiều công nghệ trong đó có công nghệ cốt lõi có

công nghệ thông tin với sự phát triển không ngừng của công nghệ Internet từ thời kỳ

kết nối nội dung như email đến mạng xã hội, Internet vạn vật, Internet kết nối thiết bị

máy móc kết nối quá trình vận hành của các nhà máy. Ngoài công nghệ cốt lõi còn có

sự hội tụ của công nghệ in 3D, công nghệ vật liệu tiên tiến, công nghệ lưu trữ…

Hiện nay, nền công nghiệp 4.0 đang phát triển mạnh mẽ, kéo theo sự phát triển

của rất nhiều ngành nghề, đặc biệt là ngành công nghệ thông tin. Do đó, yêu cầu về

nhân lực trong mảng này cũng đòi hỏi cac ứng viên cần phải có kỹ năng tốt hơn nữa về

lập trình, technical, các kỹ năng về automation....

Nếu search trên các trang mạng tuyển dụng lớn như ITviec, Vietnamworks,

LinkIn, Indeed, Dice, Monster, CareerBuilder … thì bạn sẽ thấy có vô vàn kết quả với

các từ khóa tìm kiếm như:

Test Automation Engineer

Automation Developer

Automation Testing/Automation Tester

QA Automation Engineer

Software Development Engineer in Test (SDET)

Từ đây, bạn có thể thấy được nhu cầu tuyển một QA có kiến thức và kinh nghiệm

về automation test là rất lớn. Do đó, đủ để hiểu automation test sẽ là tiềm năng lớn cho

tương lai của mảng Test nói riêng và công nghệ thông tin nói chung.

1.3.4. Tình hình nghiên cứu và ứng dụng của kiểm thử tự động

1.3.4.1. Tình hình nghiên cứu và ứng dụng của kiểm thử tự động trên thế giới

Kiểm thử ở trên thế giới đã phát triển từ lâu, nếu như ở Việt Nam tỉ lệ chỉ có 1

Tester thì có 5 lập trình viên nhưng ở nước ngoài, tỉ lệ này là 4:1, như vậy với 4 Tester

thì mới có một lập trình viên. Có thể nói Testing có rất nhiều tiềm năng phát triển.

15

Nhật Bản là một quốc gai có nền Công nghệ thông tin rất phát triển. Người Nhật

vốn đã rất tỉ mỉ nên họ muốn sản phẩm của họ làm ra phải đạt được chất lượng, cũng

như quy trình làm ra sản phẩm phải được quản lý chặt chẽ kể từ giai đoạn đầu của dự

án. Nên với QA/ Tester, người Nhật không chỉ có kiểm thử sản phẩm mà họ còn vừa phải

đảm bảo quy trình của phần mềm, vừa phải tìm ra những lỗi của sản phẩm. Vì vậy Test

Matrix là một phần quan trọng và không thể thiếu trong các dự án của Nhật Bản.

1.3.4.2. Tình hình nghiên cứu và ứng dụng của kiểm thử tự động trong nước

Công nghệ thông tin Việt Nam nói chung và phát triển phần mềm nói riêng đang

có những bước phát triển tốt và sinh động. Tuy nhiên, có một thực tế là kiểm thử phần

mềm ở Việt Nam đã đi sau nhiều nước khác. Về mặt số lượng thì Việt Nam thấp hơn

rất nhiều so với thế giới. Tỷ lệ Developer và Tester trong dự án của thế giới là 3:1 còn

ở Việt Nam lại là 5:1.

Trước đây, về mặt chất lượng, ở Việt Nam chủ yếu là các dự án outsource (gia

công phần mềm), mà đa phần các dự án này chủ yếu tập trung vào những công việc

cấp thấp. Dù đã có nhiều công ty đảm nhận những dự án lớn, giá trị cao nhưng số

lượng đó còn rất ít, do đó cần phải tăng tốc để bắt kịp trình độ của thế giới.

Ở thời điểm hiện tại, nhiều công ty, doanh nghiệp trước kia phát triển mạnh về

xây dựng phần mềm cũng đã phát triển mạnh về kiểm thử, có thể kể đến một số doanh

nghiệp lớn như: IT Sol, Citigo, Fsoft, Viettel, Simax,…

Về xu hướng kiểm thử phần mềm đang phát triển mạnh ở Việt Nam, nó vẫn là

một bài toán không chỉ với các công ty sản xuất phần mềm. Nó vừa để kiểm soát lỗi

trong quá trình lập trình cũng vừa là chứng minh cho khách hàng phần mềm đã thực

hiện đúng các yêu cầu họ đặt ra. Là xu hướng về kiểm thử trên nền web, kiểm thử app

mobile, sử dụng các công cụ hỗ trợ đang được nhiều công ty, doanh nghiệp hướng đến

và ưu tiên phát triển.

1.3.5. So sánh giữa kiểm thử thủ công và kiểm thử tự động

1.3.5.1. Ưu điểm:

Độ 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, đặ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.

16

· 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 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ách

nhàm chán với độ tin cậy và ổn định cao.

· 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 nhiều phiên bản ứng dụng khác nhau, đây được gọi là tính tái sử dụng.

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

· 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

đượ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 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ông nhiều.

1.3.5.2. Nhược điểm:

· 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ử 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ầu

nhiều công việc như debug, thay đổi dữ liệu đầu vào và cập nhật code mới.

· 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

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

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

động khá tốt nhưng chúng vẫn còn nhiều hạn chế. Ngoà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.

Công cụ kiểm thử tự động

Công cụ kiểm thử phần mềm (Test tool) trong lĩnh vực phát triển phần mềm là

công cụ giúp thực hiện việc phát triển phần mềm một cách tự động. Tuy nhiên không

phải mọi việc kiểm thử đều có thể tự động hóa, câu hỏi đặt ra là trong điều kiện hay

tìnhuống nào dùng công cụ kiểm thử là tích hợp?

17

CHƯƠNG II: THỰC TRẠNG VIỆC KIỂM THỬ PHẦN MỀM TẠI CÔNG TY

TNHH SETA

2.1. Tổng quan về công ty TNHH Seta - International Việt Nam

2.1.1. Giới thiệu chung về công ty

- Tên công ty quốc tế: SETA International Vietnam Company Limited

- Tên công ty bằng tiếng Việt: Công ty TNHH SETA International Việt Nam

- Tên viết tắt: SETA INTERNATIONAL VIETNAM CO.,LTD

- Địa chỉ:

+ Trụ sở tại Mỹ: 3943 Irvine Blvd, Suite 170, Irvine, CA 92626 (Costa Mesa,

California).

+ Trụ sở tại Việt Nam: Tầng 11, tòa nhà HL, ngõ 82, đường Duy Tân, Phường

Dịch Vọng Hậu, quận Cầu Giấy, Hà Nội.

- Điện thoại: (949) 480-1639/ 024 6267 1088

- Website: http://www.seta-international.com/

- Mã số thuế: 0105615138

- Email: info@seta-international.com

- Người đại diện: Vũ Thanh Hùng- Chức vụ: Giám đốc (CEO).

2.1.2. Quá trình thành lập công ty

- Năm 2008, SETA International được thành lập bởi 2 cựu nhân viên của IBM có

trụ sở tại Costa Mesa, California, Mỹ.

- Năm 2009, SETA International chính thức đầu tư vào Việt Nam và lấy tên hoạt

động là Công ty TNHH SETA:CINQ VIỆT NAM.

- Năm 2013, SETA:CINQ VIỆT NAM nâng cao vị thế của mình trên thị trường

quốc tế. Tổng số lượng nhân viên lên đến hơn 250 người.

- Năm 2014, SETA:CINQ VIỆT NAM tách thành 2 công ty độc lập là SETA

International Việt Nam (SETA Mỹ) và SETA International Asia (SETA Nhật) (nay đổi

tên là Co-Well Asia).

- Năm 2015, SETA International Việt Nam vinh dự và tự hào trở thành đối tác

của Amazon và CyberSource.

- Năm 2016, Sau hơn 2 năm đi vào hoạt động, SETA International Việt Nam đã

dần dần phát triển. Tổng số nhân viên hiện tại hơn 80 cán bộ nhân viên.

18

- Tháng 3/2018, Dự án Massgenie được tách ra hoạt động riêng biệt và lấy tên là

Massgenie Asia.

- Từ năm 2018 đến nay, công ty ngày càng mở rộng và phát triển.

2.1.3. Cơ cấu tổ chức của công ty

Hình 1.1: Sơ đồ tổ chức của công ty TNHH SETA International Việt Nam

Chủ tịch

Giám đốc

Nhân sự Sản xuất Kỹ thuật Kinh doanh

Kế toán – Pháp lý

PM Leads QA

Dev

Chức năng, nhiệm vụ của mỗi bộ phận, phòng ban như sau:

- Chủ tịch: Là người có quyền lực cao nhất của công ty, toàn quyền quyết định

mọi hoạt động của công ty và có nhiệm vụ: Thông qua điều lệ, phương hướng hoạt

động của công ty.

- Giám đốc: Chịu trách nhiệm về xây dựng chiến lược hoạt động của công ty,

đồng thời thực hiện việc giám sát hoạt động của những thành viên trong nhóm công ty.

- Phòng kế toán và pháp lý:

+ Về mặt Kế toán: Chịu trách nhiệm toàn bộ thu chi tài chính của Công ty, đảm

bảo đầy đủ chi phí cho các hoạt động lương, thưởng, mua máy móc, vật liệu,…và lập

phiếu thu chi cho tất cả những chi phí phát sinh. Chịu trách nhiệm ghi chép, phản ánh

chính xác, kịp thời, đầy đủ tình hình hiện có, lập chứng từ về sự vận dộng của các loại

tài sản trong Công ty. Lập báo cáo kế toán hàng tháng, hàng quý, hàng năm để trình

Giám đốc.

19

+ Về mặt Pháp lý: Chịu trách nhiệm soạn thảo và lưu trữ các loại giấy tờ, văn

bản, hợp đồng của Công ty. Tiếp nhận và theo dõi các công văn, chỉ thị, quyết

định,…Tổ chức, triển khai, thực hiện nội quy lao động của Công ty, theo dõi quản lý

lao động, đề xuất khen thưởng. Thực hiện các quy định nhằm đảm bảo quyền lợi và

nghĩa vụ đối với người lao động như lương, thưởng, trợ cấp, phúc lợi,…

- Phòng nhân sự: Lập bảng báo cáo hàng tháng về tình hình biến động nhân sự.

Chịu trách nhiệm, theo dõi, quản lý nhân sự, tổ chức tuyển dụng, bố trí lao động đảm

bảo nhân lực cho sản xuất, sa thải nhân viên và đào tạo nhân viên mới.

- Bộ phận kinh doanh: Là cầu nối giữa bên trong và bên ngoài. Là bộ phận

nghiên cứu dự báo, phân khúc thị trường, xác định mục tiêu, định vị thương hiệu. Từ đó,

tìm kiếm khách hàng và tiếp thị để phát triển thị phần của công ty, đưa ra phân tích về

hoạt động kinh doanh của công ty, lập báo cáo về các hợp đồng và các đơn đặt hàng.

- Bộ phận kỹ thuật: Thực hiện tất cả các công việc liên quan đến kỹ thuật của

công ty. Bộ phận kỹ thuật có nhiệm vụ bố trí và lắp đặt đầy đủ các thiết bị máy tính

cũng như các linh kiện cần thiết trong quá trình làm việc của nhân viên, khắc phục sự

cố máy tính nội bộ, hệ thống mạng nội bộ, quản lý phần mềm, hệ thống thông tin,

website của công ty.

- Bộ phận sản xuất phầm mềm:

+ Quản lý dự án (PM): Chịu trách nhiệm về một dự án nào đó của công ty trong

các công việc như: tìm hiểu nhu cầu khách hàng, lập kế hoạch sản xuất, điều phối công

việc, đảm bảo tiến độ của dự án và đánh giá dự án.

+ Bộ phận lập trình (DEV): Thực hiện lập trình phần mềm theo đúng yêu cầu của

khách hàng, tham gia vào tất cả các giai đoạn của quy trình phát triển phần mềm.

+ Bộ phận kiểm thử (QA/QC): chịu trách nhiệm về chất lượng của sản phẩm

phần mềm đến khi hình thành sản phẩm, tạo sự liên kết giữa bộ phận liên quan như bộ

phận lập trình và người quản lý dự án để có một quy trình sản xuất phần mềm ngày

càng hoàn thiện.

Nhận xét: Công ty Seta có sơ đồ tổ chức bộ máy phân chia theo chức năng khá

rõ ràng, rành mạch và nó cũng phù hợp với cách thức hoạt động của công ty. Với sự tổ

chức này, công ty đã tận dụng được sự ưu việt của các cán bộ nghiệp vụ chuyên môn ở

các phòng ban chức năng.

Công tác quản lý được chuyên môn hóa cao: Mỗi bộ phận, phòng ban đảm nhiệm

một phần công việc nhất định. Vận dụng được khả năng, trình độ chuyên sâu của cán

20

bộ quản lý, giảm được gánh nặng cho ban lãnh đạo. Song, các phòng ban lại hoạt động

riêng rẽ trong sự thống nhất, hỗ trợ lẫn nhau.

2.1.4. Lĩnh vực hoạt động

Công ty chủ yếu kinh doanh các ngành nghề sau:

- Lập trình máy tính: Dịch vụ lập trình, sản xuất phần mềm.

- Tư vấn máy vi tính và quản trị hệ thống máy vi tính: Dịch vụ tư vấn liên quan

đến lắp đặt phần cứng máy vi tính, tư vấn phần mềm và tư vấn hệ thống, phân tích và

thiết kế hệ thống.

- Xử lý dữ liệu, cho thuê và các hoạt động liên quan: Dịch vụ xử lý dữ liệu.

2.1.5. Kết quả hoạt động kinh doanh gần đây

2.1.5.1. Tình hình kinh doanh của Công ty

Được thành lập và phát triển từ năm 2008, công ty TNHH Seta-International Việt

Nam đã đạt được những thành công nhất định trong kinh doanh và ngày càng khẳng

định vị thế của mình trên thị trường. Theo như tình hình hoạt động kinh doanh của

công ty trong những năm gần đây, công ty đang bước vào giai đoạn mở rộng thị

trường, ngày càng nhiều dự án được kí kết.

Theo báo cáo tài chính về thu chi, lợi nhuận 3 năm gần đây, Seta duy trì đà tăng

trưởng tốt, hoàn thành các chỉ tiêu kinh tế đặt ra. Lợi nhuận trước thuế năm 2018 đạt

8,396,053 tỷ đồng, hoàn thành kế hoạch năm, tang 12.6% so với năm 2017, và 16.06%

so với năm 2016.

Năm 2018, Seta ghi nhận mốc doanh thu hơn 24 tỷ đồng với mức tăng trưởng lợi

nhuận 1.08% so với năm 2017. Trong thị trường chính là Mỹ đều hoàn thành các chỉ

tiêu doanh số, lợi nhuận và có tốc độ tăng trưởng vượt bậc. Năm 2018, năng suất lao

động tăng hơn 10% so với năm trước.

Trong cuộc cách mạng công nghệ 4.0, công ty cũng theo đuổi và phát triển các

dự án công nghệ mới về trí tuệ nhân tạo, điện toán đám mây,…

Để đạt được kết quả này, là do Seta kiên định với ba phương châm kinh doanh đã

đề ra, tập trung triển khai các dự án chiến lược trọng điểm của công ty đảm bảo tiến độ

và hiệu quả cao. Bên cạnh đó, đây cũng là một thành tích lớn nhờ sự quản lý của ban

lãnh đạo, cũng như cán bộ công nhân viên có chuyên môn và nhiệt huyết.

21

2.1.5.2. Báo cáo tài chính về thu chi, lợi nhuận 3 năm gần đây

Bảng 3: Kết quả hoạt động kinh doanh của công ty trong 3 năm gần đây

(Đơn vị: Nghìn đồng)

So sánh

Năm Năm Năm 2016 và 2017 2017 và 2018 Chỉ tiêu 2016 2017 2018 Ttỷ tỷ Số tiền Số tiền lệ lệ

17,187,539 22,743,903 24,664,370 5,556,364 1.32

1,920,467 1.08

Doanh thu

11,958,685 16,082,036 16,268,317 4,123,351 1.34

186,281

1.01

bán hàng

Chi phí

5,228,854

6,661,867

8,396,053

1,433,013 1.27

1,734,186 1.26

Lợi nhuận

trước thuế

1,791,346

2,113,086

3,463,179

321,740

1.18

1,350,093 1.64

Lợi nhuận

sau thuế

2.2. Phân tích thực trạng quá trình kiểm thử phần mềm tại công ty TNHH

Seta - International Việt Nam

Trong chương I, ta đã đi tìm hiểu những khái niệm cơ bản về kiểm thử phần mềm

và quy trình phát triển phần mềm. Nhưng trong thực tế, chúng ta không bao giờ thấy

một phần mềm nào hoàn hảo theo bất kỳ một mô hình phát triển phần mềm nào. Bởi vì

không có bản đặc tả chi tiết hoàn toàn đầy đủ mà khách hàng cần và các nhân viên

kiểm thử cũng không đủ thời gian để làm tất cả những bài kiểm tra cần phải làm.

Nhưng trong thực tế công ty, khi bạn làm công việc kiểm thử, bạn cần phải biết tưởng

tượng ra quy trình phần mềm làm việc như nào để đạt được mục đích.

* Phương châm của việc kiểm thử của công ty

Tầm quan trọng của việc kiểm thử đầy đủ một chương trình TNHH Seta -

International Việt Nam

Nếu là một nhân viên kiểm thử, bạn có thể tin rằng bạn có khả năng tiếp cận với

một khía cạnh của phần mềm, kiểm tra nó, tìm ra tất cả các lỗi, và đảm bảo rằng phần

mềm là hoàn hảo. Nhưng thật may, điều này là không thể, thâm chí đối với một

chương trình đơn giản vì bốn lý do sau:

22

 Số lượng dữ liệu đầu vào có thể là rất lớn.

 Số lượng các dữ liệu đầu ra cũng vô cùng lớn

 Số lượng các “lối đi” trong phần mềm cũng lớn

 Đặc tả phần mềm có tính chất chủ quan, bạn có thể nói rằng lỗi là những khuyết

điểm dưới con mắt của người dùng.

Tất cả các trường hợp trên nếu kết hợp cùng nhau, bạn sẽ thu được một tập các

điều kiện vô cùng lớn đến mức không thể thử hết được.

* Quy trình sản xuất và kiểm thử phần mềm tại công ty Seta

Quy trình sản xuất phần mềm tại công ty Seta: Công ty Seta là công ty chuyên

sản xuất phần mềm và nhận dự án từ nước ngoài mà chủ yếu là Mỹ. Hiện nay, công ty

đang đẩy mạnh các dự án liên quan đến công nghệ AI (trí tuệ nhân tạo). Đây là những

công nghệ mới, tiên tiến và là xu hướng của thời đại nên đang được các công ty trong

nước và thế giới nói chung và seta nói riêng chú trọng hơn cả.

Quy trình sản xuất phần mềm của công ty đang áp dụng mô hình Agile vì sự linh

hoạt của nó. Để hiện thực hóa phương pháp Agile trong quy trình sản xuất phần mềm,

chúng ta có thể sử dụng Scrum. Scrum là một thành viên trong gia đình Agile, nó

được xây dựng trên quá trình thực nghiệm. Nó là một mô hình vòng lặp để chia phần

mềm cần sản xuất ra thành các phần nhỏ có thể chạy độc lập, lấy ý kiến khách hàng và

thay đổi cho phù hợp ngay trong quá trình phát triển để đảm bảo sản phẩm release đáp

ứng những gì khách hàng mong muốn. Scrum xây dựng khung làm việc với nhóm có các

thành viên liên chức năng hợp tác với nhau, quy trình sản xuất thông qua các Sprint. Với

Scrum trong quá trình sản xuất, nhóm Scrum liên tục thăm dò và điều chỉnh hoạt động

của mình để giảm rủi ro cùng với tối ưu hóa quá trình làm việc. Hiện nay, Seta đang cho

thời gian của mỗi sprint là 2 tuần.

Công ty sử dụng kết hợp các phương pháp kiểm thử thủ công và tự động để khai

thác lợi ích của cả hai cũng như khắc phục những thiếu sót tương ứng của 2 phương

pháp này.

Kiểm thử thủ công vẫn đang thống trị lĩnh vực kiểm thử. Mặc dù kiểm thử tự

động mang lại hiệu quả cao trong quá trình kiểm thử, vẫn có một số lĩnh vực nhất định

như khả năng sử dụng và thiết kế đòi hỏi những yêu cầu đến kiểm thử thủ công.

Kiểm thử tự động giúp nhóm kiểm thử tập trung thời gian và nỗ lực của họ

vào việc tạo các trường hợp kiểm thử thay vì quản lý các yêu cầu kiểm thử. Kiểm

23

thử tự động giúp theo dõi và quản lý tất cả các nhu cầu kiểm thử, các loại kiểm thử

cần thiết cùng với phạm vi kiểm thử. Kiểm thử tự động giúp đảm bảo một sản phẩm

phần mềm chất lượng cao sẽ được phát hành.

Các công cụ kiểm thử tự động được sử dụng để kiểm soát việc thực hiện các lần

kiểm thử rồi so sánh kết quả thực tế với kết quả mong đợi. Chủ yếu là kiểm thử hồi

quy đòi hỏi các hành động lặp đi lặp lại cần được kiểm thử tự động. Các công cụ kiểm

thử tự động được sử dụng cho cả kiểm thử chức năng và phi chức năng.

2.3. Đánh giá thực trạng quá trình kiểm thử phần mềm tại công ty TNHH

Seta International Việt Nam

 Về quy trình phát triển phần mềm của công ty Seta: Seta đã áp dụng đúng quy

*Ưu điểm

trình Agile vào công ty. Công ty đã lựa chọn cho mình một quy trình đúng đắn, đáp

ứng nhu cầu của hiện nay là công nghệ ngày càng thay đổi nhanh và linh hoạt theo

thời gian. Bên cạnh đó, với quy trình sản xuất phần mềm như vậy, nó sẽ tối đa hóa sự

đáp ứng nhu cầu của khách hàng vì được kiểm thử bởi khách hàng ngay từ những

 Với việc rút ngắn chu kỳ chuyển đổi và phát triển, cần có sự tích hợp nhiều yếu

module đã được hoàn thành.

tố khác nhau của sự phát triển sản phẩm. Để tạo điều kiện cho kiểm thử và phân tích

thông minh, dữ liệu được thu thập từ các nguồn khác nhau như hệ thống quản lý yêu

cầu, hệ thống kiểm soát thay đổi, hệ thống quản lý tác vụ và môi trường kiểm thử.

Điều này ngụ ý rằng cần có các công cụ tích hợp giúp quản lý yêu cầu, quản lý tác vụ,

theo dõi lỗi và quản lý kiểm thử. Công cụ tích hợp hoạt động như một kho lưu trữ dữ

liệu của các module khác nhau có thể được chia sẻ và sử dụng chung trong nhóm phát

 Tình hình ứng dụng kiểm thử tự động vào trong kiểm thử đã và đang được công

triển và kiểm thử phần mềm.

ty đưa vào nghiên cứu và thực hiện. Đây là xu hướng của kiểm thử hiện nay, chứng tỏ

công ty đang rất chú trọng vào chất lượng sản phẩm cũng như giảm thiểu nỗ lực cho

bộ phận kiểm thử

 Trong quá trình kiểm thử, người có trách nhiệm kiểm thử là QA. Thông thường

*Nhược điểm

người làm việc này là Tester chứ không phải QA. Người ta hay bị nhầm lẫn giữa 2

khái niệm này với nhau. QA là người đảm bảo chất lượng. Nhân viên QA là người

24

đảm nhận nhiệm vụ xây dựng hệ thống, quy trình sản xuất, quản lý chất lượng và giám

sát, đo lường việc thực hiện các chuẩn mực chất lượng đề ra. Công việc này được thực

hiện trong mọi giai đoạn sản xuất, từ khâu nghiên cứu thị trường, thiết kế,… cho đến

khâu sản xuất ra sản phẩm cuối cùng và bán hàng, tiêu thụ trên thị trường, chăm sóc

khách hàng. QA sẽ đưa ra những số liệu thống kê về chất lượng sản phẩm trong mỗi

dự án dựa trên những tiêu chí khác nhau để đo đếm xem sản phẩm đó đã hoàn thành

bao nhiêu phần trăm mong muốn của khách hàng, cách vận hành để tạo ra sản phẩm

đó có được tốt hay không. Còn Tester hay đóng vai trò là QC là người xác nhận là sản

phẩm sẽ đạt yêu cầu đã định trong hợp đồng, phương pháp chế tạo và yêu cầu kỹ thuật.

QC mang tính vi mô, liên quan đến từng loại sản phẩm riêng biệt. Từ đây, cho thấy

rằng công ty Seta đang gộp chung hai chức vụ này với nhau. Điều này sẽ giảm thiểu

được khoản kinh phí không nhỏ cho vấn đề nhân sự vì hai vị trí này có chung mục

đích là đảm bảo chất lượng sản phẩm. Tuy nhiên, bên cạnh đó, cũng gây khó khăn cho

người QA là làm quá nhiều việc cùng lúc, sẽ có thể đảm bảo được toàn vẹn tất cả các

 Hơn nữa, để tránh lãng phí về lỗi, là kỹ sư kiểm thử, ngoài việc tìm lỗi chúng ta

công việc.

cũng nên chú trọng hơn vào vấn đề ngăn ngừa lỗi thay vì tìm lỗi. Việc chúng ta ngăn

ngừa được một lỗi xảy ra có giá trị gấp nhiều lần một lỗi nghiêm trọng mà chúng ta

tìm thấy vì khi chúng ta tìm thấy lỗi thì đã xuất hiện sự lãng phí. Để ngăn ngừa lỗi tốt

hơn, kỹ sư kiểm thử nên được tham gia vào tất cả các khâu của dự án từ phân tích yêu

 Về việc áp dụng kiểm thử tự động vào kiểm thử, hiện nay công ty mới bắt đầu

cầu, thiết kế đến viết code và càng sớm càng tốt.

nghiên cứu và ứng dụng nên số lượng nhân viên hiểu biết, có thể tự viết dòng lệnh để

chạy còn khá ít. Hầu hết, công ty vẫn sử dụng kiểm thử thủ công là chủ yếu. Chỉ khi

nào có yêu cầu từ phía khách hàng muốn phần mềm đó áp dụng công cụ tự động thì

công ty mới áp dụng. Hơn thế, hầu hết những công cụ đang được áp dụng là miễn phí,

tiết kiệm chi phí nhưng lại không thể khai thác được nhiều tính năng mà kiểm thử tự

động có thể mang lại.

25

CHƯƠNG III: NGHIÊN CỨU VÀ ỨNG DỤNG CÔNG CỤ KIỂM THỬ TỰ

ĐỘNG PUPPETEER - CODECEPJS VÀO THỰC TẾ CÔNG TY TNHH SETA

3.1. Tìm hiểu về công cụ kiểm thử tự động PUPPETEER - CODECEPJS

3.1.1. Puppeteer là gì?

Muốn biết Puppeteer làm gì, ta phải hiểu về khái niệm Headless browser (trình

duyệt không đầu) là browser chạy mà không cần giao diện. Điều này có nghĩa là, đôi

khi chúng ta sẽ cần mở browser lên không phải để duyệt web, mà là để lấy dữ liệu, để

test, chụp screenshot, đo hiệu năng performance. Ta muốn làm chuyện này trên các

server không có giao diện, lúc này Headless browser là lựa chọn duy nhất.

Puppeteer là một thư viện của Nodejs, có khả năng điều khiển Chrome headless

browser thông qua code. Do vậy, Chrome làm được gì thì Puppeteer làm được cái đấy.

Ta có thể dùng NodeJS và Puppeteer để làm nhiều việc hữu ích như chụp ảnh màn

hình, thu thập dữ liệu, chạy automation test.

3.1.2. Puppeteer có thể làm gì?

Puppeteer có thể làm được nhiều việc, đặc biệt là nó giải quyết được các vấn đề

 Chỉ lấy được HTML thuần của trang web. Trước đây, việc chỉ lấy được HTML

mà nhiều công cụ đang gặp phải, đó là:

thuần được xem là phổ biến, tùy nhiên bây giờ, hầu hết các trang đều dùng Javascript

và Ajax để lấy dữ liệu và render. Lấy HTML thuần thì chúng ta không giải quyết được

 Bên server có một số biện pháp để chặn HTTP request đơn thuần (dựa theo user

nhiều công việc.

 Với một số trang phải đăng nhập mới có dữ liệu, việc quản lí cookie, đăng

- agent,...) nên dễ bị chặn hơn.

nhập,... với HTML Agility Pack rất rắc rối.

Dùng Headless browser, ta giải quyết được toàn bộ những vấn đề trên. Đến cả

Google còn sử dụng headles browser để lấy dữ liệu các trang web dùng Ajax.

3.1.3. Tại sao nên sử dụng Puppeteer cho testing?

Trong thập kỷ qua, thế giới đã chứng kiến sự xuất hiện của các ứng dụng web

dựa trên Javascripts mạnh mẽ, trong khi các frameworks mới phát triển. Các

frameworks này đã thách thức các vấn đề từ lâu đã được liên kết với nhau làm tê liệt

hiệu suất trang web. Các yếu tố UI tương tác, tốc độ liều mạch và các thành phần kiểu

26

dáng ấn tượng, đã bắt đầu tồn tại trong một trang web và điều đó cũng không ảnh

hưởng nhiều yếu tố tốc độ. CSS và HTML hiện được đưa vào JS thay vì ngược lại vì

đơn giản là JS hiệu quả hơn. Mặc dù việc sử dụng các frameworks Javascript này đã

tăng hiệu suất, nhưng nó đã gây thiệt hại cho những nhân viên kiểm thử. Nó khiến cho

việc kiểm tra và gỡ lỗi trở nên ngày càng phức tạp. Puppeteer đã được giới thiệu là thư

viện nút để cho phép thử nghiệm trình duyệt Chrome.

*Trình duyệt không đầu

Như chính tên gọi, trình duyệt không đầu là trình duyệt chạy dưới dạng quá trình

ứng dụng mà không có bất kỳ yếu tố giao diện người dùng nào. Các trình duyệt không

đầu, như Chrome không đầu đơn giản là nhanh hơn, tiêu thụ ít bộ nhớ hơn, linh hoạt

hơn và ổn định hơn dưới áp lực tự động hóa.

Google đã và đang làm việc để đảm bảo rằng sự hỗ trợ phù hợp được cung cấp

cho hệ sinh thái DevTools. Với việc sử dụng Puppeteer, thu thập dữ liệu web, quét và

khởi chạy các tập lệnh tự động giờ đây có thể được thực hiện với ít nỗ lực hơn và ổn

định hơn trước.

Tự động hóa dễ dàng Selenium dẫn đầu ngành khi nói đến thử nghiệm tự động hóa. Công cụ nguồn mở

tuyệt vời này đã được cộng đồng thử nghiệm chấp nhận với bàn tay mở. Nhưng và đây

là một thử nghiệm lớn nhưng, selen yêu cầu các trình duyệt được cài đặt bất kể selen được

cài đặt trên đám mây hay trên máy cục bộ. Thêm vào sự phức tạp của tích hợp với sự đa

dạng của các thành phần, nó trở nên quá khó để quá trình có thể chạy trơn tru.

Chrome không đầu đã trở thành xu hướng khi sử dụng các tập lệnh tự động vào

trình duyệt. Việc sử dụng Karma, Mocha và Puppeteer cùng với nó có tất cả các thử

nghiệm được thực hiện đột ngột bằng cách sử dụng các tập lệnh tự động dễ dàng hơn.

Kiểm tra hồi quy giao diện người dùng trực quan Puppeteer có thể được sử dụng để kiểm tra hồi quy các yếu tố UI khác nhau. Để

kiểm tra giao diện người dùng của trang web, nên có phiên bản crom mới nhất để đảm

bảo kiểm soát api tốt hơn. Thông thường Mocha được sử dụng cùng với Puppeteer để

kiểm tra hồi quy trên các tính năng UI khác nhau. Ngoài ra, Mocha cung cấp cho bạn

các móc có thể được sử dụng trước hoặc sau khi thử nghiệm.

Puppeteer thành công chủ yếu vì nó đơn giản hóa các chức năng liên quan đến

các tác vụ tự động được thực hiện trên trình duyệt.

27

Kiểm tra ảnh chụp màn hình Bộ ba cuối cùng của Jest, Chrome không đầu và Puppeteer có thể được sử dụng

để thử nghiệm dựa trên ảnh chụp màn hình. Trên thực tế, tính năng Ảnh chụp màn

hình tự động của LambdaTest đã tận dụng cả ba công cụ này để chụp ảnh màn hình

trên nhiều trình duyệt chrome. Bạn có thể dễ dàng chụp các cây React và các giá trị

tuần tự hóa khác và sử dụng chúng để phân tích các thay đổi trạng thái trong khi thử

nghiệm. Jest đi kèm với hệ sinh thái React mạnh mẽ và sự tích hợp của nó mở đường

cho các yếu tố JavaScript được kiểm tra dễ dàng.

Puppeteer-ảnh chụp màn hình-kiểm tra là một thư viện trong chính trình điều

khiển rối cho phép tạo ảnh chụp màn hình trong khi kiểm tra.

Tương tự ava-Puppeteer là một thư viện khác có sẵn trên GitHub sẽ sớm xuất

hiện vào npm.

Kiểm tra năng suất

Sử dụng Puppeteer, các số liệu hiệu suất có thể được đo lường và phân tích để tối

ưu hóa trang web cho các thiết bị và tốc độ mạng khác nhau. Chrome cung cấp

DevTools cho phép ghi lại Dòng thời gian hiệu suất mà khi tự động tiết lộ các vấn đề

liên quan đến hiệu suất. Puppeteer là một kiểm soát API cấp cao đối với Giao thức

Công cụ dành cho nhà phát triển Chrome. Sự thành thạo của Puppeteer để dễ dàng xử

lý các yếu tố không đồng bộ và hành vi của chúng đối với sự thay đổi trạng thái DOM.

Bạn thậm chí có thể lưu dữ liệu hiệu suất dưới dạng tệp JSON.

Đặt nó như thế này khi bạn sử dụng Puppeteer, bạn là Puppeteer. Bạn có thể

kiểm soát các nhân viên dịch vụ và kiểm tra bộ nhớ đệm cũng như thời gian tải của

một trang web có hoặc không có thời gian bộ đệm. Thời gian phản hồi của trang web

có thể được theo dõi bằng cách sử dụng answerEnd, cùng với ảnh hưởng của băng

thông mạng và các vấn đề liên quan đến độ trễ.

Tải thử nghiệm bằng cách sử dụng Puppeteer Load Test chỉ đơn giản là chiếm số lượng phiên bản tối đa mà bạn có thể có thể

chạy trên trang web của mình. Nhiều phiên bản Puppeteer có thể được khởi chạy song

song một cách dễ dàng thông qua đó bạn có thể tải thử nghiệm trang web đang được

xem xét.

Puppeteer đúng với tên của nó, vì bạn có một mệnh lệnh tuyệt vời đối với

chrome không đầu mà bạn có khả năng khởi chạy rất nhiều phiên bản thử nghiệm trên

một phiên hoặc nhiều trình duyệt.

28

Ở đây, các phần mềm dành cho số lượng mẫu và phần mềm dành cho các phiên

đồng thời trên mỗi mẫu.

Kết thúc thử nghiệm (Kiểm thử từ đầu đến cuối) Thử nghiệm từ đầu đến cuối hoặc Chấp nhận thường được coi là một trong

những thử nghiệm ít phổ biến nhất. Selenium đã được sử dụng trước đó để thử nghiệm

chấp nhận và nó khá dễ bị lỗi và có rất nhiều lỗi. Sau đó, đến Puppeteer với sự tập

trung cải tiến vào kiểm soát API đã giúp giải quyết các biến chứng xuất hiện dưới

dạng lỗi. Một trong những siêu năng lực của Puppeteer mà nó không cần biết về stack

của bạn và có thể hoạt động với mọi khung công tác, có thể là React, Angular hoặc bất

kỳ thư viện nào khác. Phần kết luận Thành công của puppeteer và chrome không chỉ có thể làm giảm hiệu quả của

chúng, thực tế là nó được Google hỗ trợ cũng là lý do tại sao nó được chấp nhận và

công nhận trên toàn cầu. Tuy nhiên, vấn đề lớn nhất là tính toàn vẹn của nó với

chrome không đầu rất tuyệt vời tuy nhiên với các trình duyệt khác, nó có thể bị chùn

bước. Phải nói rằng, tôi tin tưởng mạnh mẽ rằng công cụ này sẽ phát triển mạnh mẽ

với hệ sinh thái google ngày càng mở rộng.

3.2. ỨNG DỤNG CÔNG CỤ VÀO CÔNG CỤ KIỂM THỬ TỰ ĐỘNG

PUPPETEER - CODECEPJS VÀO THỰC TẾ CÔNG TY TNHH SETA

3.2.1. Giới thiệu về Các phần mềm cần thiết

Phần này sẽ cung cấp cho bạn cách chạy/ ghi các bài kiểm thử end to end

cho dự án của bạn, tất cả các điều cần thiết cần thiết và mã hóa kiểm thử end to

end cơ bản.

Với NodeJS, chúng ta sẽ dụng Visual Studio Code là nhẹ và tiện nhất vì có thể dễ

dàng debug. Visual Studio Code nhẹ lại còn miễn phí, chạy được cả trên cả hệ điều

hành Window và Mac nên các bạn có thể tải về dùng tại:

https://code.visualstudio.com/

Nếu có khả năng lập trình cao hơn thì bạn cũng có thể dùng Notepad + + hoặc

Sublime Text đều được. Nhưng để phù hợp với khóa luận, mình sẽ dùng Visual Studio

Code.

3.2.2. Cài đặt và khởi tạo Puppeteer – Codeceptjs và ứng dụng

*Tạo thư mục mang tên “e2e-test”

29

Vào thư mục muốn chứa thư mục test chuẩn bị được khởi tạo. Mình sẽ vào ổ D,

tạo thư mục có tên là “automation_demo”.

Mở thư mục mới tạo, mở cmd hoặc Git Bash của bạn bằng cách giữ Shift + chuột

phải, chọn “Open command window here”.

Sau khi cửa sổ cmd được bật lên, bạn gõ “npm init”. “npm” là package của

nodejs, còn “init” có nghĩa là khởi tạo, sau đó ấn Enter.

30

Nếu không có thông tin gì cần thay đổi thì chúng ta cứ ấn Enter tiếp.

Sau khi khởi tạo xong, trong tệp lưu sẽ xuất hiện file “package.json”. File này sẽ

chứa các dependence cần thiết để mà chạy cho các dự án của các bạn. Nếu các bạn cần

thêm gì, sẽ phải khai báo ở file này và cài đặt. Và giờ, ta sẽ thử mở code xem các

thông tin vừa khai báo đã được lưu lại trong file này chưa bằng cách chọn file

“package.json”, chuột phải, chọn “Open with Code”

31

32

.*Cài đặt thư viện

Gõ câu lệnh “npm install codecept.js”, nhấn Enter và đợi máy cài đặt

33

Sau khi đã thành công sẽ hiện thị như hình bên trên. Bạn mở code, trong mục

“dependencies” thể hiện là codecept.js bản 2.3.2 đã được cài. Khi cài, máy tính sẽ tự

động cài đặt phiên bản mới nhất.

Tiếp theo, chúng ta khởi tạo framework bằng cách chạy 2 câu lệnh sau:

//node_modules/.bin/codeceptjs

npm install puppeteer

34

Khởi tạo xong, trong thư mục “Automation_demo” sẽ xuất hiện file

“codecept.conf.js”. Ở đây, lưu tất cả các thông tin, mục đích các file của dự án. Trong

hình dưới, “helpers” thể hiện framework chúng ta đang sử dụng là puppeteer, đường

dẫn trang web chúng ta định test là url: “https://www.stage.veritone.com” (đây là dự

Bây giờ chúng ta sẽ bắt đầu viết script cho test case có chức năng đăng nhập.

án hiện tại đang làm của công ty Seta).

Chúng ta sẽ tạo 1 file test lấy tên là “demo_test.js” trong thư mục “test_e2e”. Các đoạn

script chúng ta sẽ lưu ở file mới tạo này.

35

Và đây là đoạn code mình viết cho trường hợp đăng nhập thất bại với user name

hoặc pass word không đúng.

Đoạn script này với luồng không khác gì chúng ta đang thực hiện kiểm thử bằng

tay, chỉ khác là chúng ta đang dùng ngôn ngữ để sao cho máy tính hiểu được là bạn

đang muốn thực hiện hành động gì. Ví dụ như đoạn ở trên:

“I.amOnPage(“/login/#/”) có nghĩa là chúng ta đang ở đường dẫn

“https://www.stage.veritone.com/login/#/” để chuyển trang trình duyệt đến màn hình

login của dự án.

“I.waitForText(“Login”,60)” có nghĩa là chúng ta đang đợi khi nào nhìn thấy

dòng “Login” trên trang trình duyệt. 60 là 60s, đây là thời gian tối đa để tải được trang

này.

36

Chúng ta đang muốn login với trường hợp thất bại, vậy thì user name và

password được nhập vào trang này là không đúng. Nhưng làm sao để máy có thể phát

hiện ra chỗ nào là user name và password để nhập kí tự vào. Chúng ta sẽ đi lấy đường

dẫn tới user name bẳng cách vào trang login của dự án, ấn F12/element và tìm đến khu

vực cần thao tác.

lệnh

Sau khi xong đoạn script, bạn sẽ chạy bằng cách gõ

“./node_modules/.bin/codecept.js run” và Enter. Chạy xong nó sẽ báo kết quả có thông

tin là đã chạy trường hợp này trong bao lâu, case thành công hay thất bại như sau:

Đến đây cũng là kết thúc phần demo trong bài khóa luận này.

37