Báo cáo th�c hành T2 5/2022 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA TOÁN – CƠ – TIN HỌC **** BÁO CÁO MÔN HỌC PHÂN TÍCH THIẾT KẾ HỆ THỐNG THÔNG TIN Đề tài Hệ thống Testing Online[.]
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA TOÁN – CƠ – TIN HỌC
Sinh viên thực hiện: K62A3 Nguyễn Tùng Lâm (17000026)
K63A2 Nguyễn Hoàng Yến (18001016)
Trang 2Lời nói đầu
Để hoàn thành kỳ thực tập cũng như báo cáo này, ngoài sự nỗ lực phấn đấu củabản thân thì một phần không nhỏ đóng góp nên thành công ấy là nhờ sự hướngdẫn tận tình của các thầy cô trong trường Đại học Khoa học Tự Nhiên Hà Nội,cùng với sự giúp đỡ nhiệt tình từ các anh/chị tại Công ty Cổ phần Giải phápthanh toán VNPay Đầu tiên chúng em xin gửi lời cảm ơn chân thành đến
thầy/cô trong khoa Toán – Cơ – Tin học đã kết nối tạo điều kiện thuận lợi nhất
để em được tiếp nhận thực tập tại công ty Tiếp theo, em cũng xin gửi lời cảm
ơn sâu sắc đến các anh/chị trong công ty VNPAY, đặc biệt là anh Đỗ Vũ Tuấn,anh Phạm Khắc Hoài Nam, anh Quang Hà và anh Bình Jax – những người đãtrực tiếp hướng dẫn chúng em Trong thời gian thực tập, mặc dù công việc bậnrộn nhưng các anh/chị luôn tận tình hướng dẫn cũng như giải đáp các thắc mắctrong công việc Cuối cùng, chúng em xin gửi lời cảm ơn đến gia đình, bạn bè
đã động viên, đóng góp ý kiến và giúp đỡ trong quá trình học tập, nghiên cứuhoàn thành kỳ thực tập này Kỳ thực tập đã mang tới cho chúng em hiểu biết,quá trình, kiến thức về Môn học “Phân tích thiết kế hệ thống”, hiểu thế nào đểphát triển một phần mềm, các giai đoạn để hình thành lên ý tưởng cho đến phầnmềm được triển khai đến người sử dụng Quá trình thực tập, tham gia và học hỏinày sẽ còn giúp chúng em không chỉ là việc học tập mà còn sẽ định hình ngànhnghề trong tương lai tới
Tuy nhiên, do thời gian có hạn và năng lực còn hạn chế nên chúng em không thểtránh khỏi những thiếu sót Chính vì vậy, em rất mong nhận được sự góp ý từcác thầy/cô và các bạn để học hỏi thêm và tiếp tục hoàn thiện đề tài của mình.Chúng em xin chân thành cảm ơn!
Hà Nội, tháng 5 năm 2022
Trang 4I Giới thiệu
1 Mục tiêu
Một hệ thống test online thay thế cho cách test trực tiếp, có các chức năngdành cho nhân sự tuyển dụng để sau khi thảo luận kế hoạch với phòngban và ứng viên họ có thể tạo mới, cài đặt, chỉnh sửa các kế hoạch test vàcác bài test cho các ứng viên apply vào công ty Kết quả làm bài của ứngviên sẽ được nhân sự đại diện của phòng ban chấm điểm trên hệ thống
2 Yêu cầu
- Hiển thị các lịch test dự kiến theo hai dạng: bảng và lịch
- Hệ thống bao gồm 3 loại bài test: test Tiếng anh, test Kiến thứcchung, test Kỹ năng code và 2 dạng câu hỏi: trắc nghiệm, tự luận.Phân bổ theo các cấp độ mà ứng viên ứng tuyển
- Các bài test đều có thể set up thời gian làm bài
- Chỉ các nhân sự phòng ban mà ứng viên ứng tuyển mới có quyềnchấm cho ứng viên đó trên hệ thống
- Ứng viên tham gia test đăng nhập bằng một mã code được gửi quaGmail/SMS
- Tái sử dụng được các câu hỏi
- Giảm thiểu rủi ro việc ứng viên trong quá trình test ứng viên có thểsao lưu lại nội dung test để đảm bảo an toàn thông tin quy trìnhtuyển dụng
- Dễ dàng phát hiện và sửa lỗi hơn.
- JS hoạt động trên nhiều trình duyệt, nền tảng.
- Kiểm tra input và giảm thiểu việc kiểm tra thủ công khi truy xuất qua
database Giúp website tương tác tốt hơn với khách truy cập.
Trang 5- Nhanh và nhẹ hơn một số ngôn ngữ lập trình khác.
Nhược điểm :
- Dễ bị khai thác.
- Không có khả năng xử lí đa luồng.
- Chỉ chạy được trong trình duyệt web.
- Dễ bị sử dụng để thực thi mã độc trên máy người sử dụng.
b) NodeJs
NodeJS là một nền tảng được xây dựng trên “V8 Javascript engine” đượcviết bằng c++ và Javascript Nền tảng này được phát triển bởi RyanLienhart Dahl vào năm 2009
Node.js ra đời khi các developer đời đầu của JavaScript mở rộng nó từmột thứ bạn chỉ chạy được trên trình duyệt thành một thứ bạn có thể chạytrên máy của mình dưới dạng ứng dụng độc lập
Ưu điểm :
- Có tốc độ xử lý nhanh nhờ cơ chế xử lý bất đồng bộ (non-blocking) Bạn có thể dễ dàng xử lý hàng ngàn kết nối trong khoảng thời gian ngắn nhất.
- Giúp bạn dễ dàng mở rộng khi có nhu cầu phát triển website.
- Nhận và xử lý nhiều kết nối chỉ với một single-thread Nhờ đó, hệ thống xử lý
sẽ sử dụng ít lượng RAM nhất và giúp quá trình xử Nodejs lý nhanh hơn rất nhiều.
- Có khả năng xử lý nhiều Request/s cùng một lúc trong thời gian ngắn nhất Có khả năng xử lý hàng ngàn Process cho hiệu suất đạt mức tối ưu nhất.
- Phù hợp để xây dựng những ứng dụng thời gian thực như các ứng dụng chat, mạng xã hội
Nhược điểm :
- Nodejs gây hao tốn tài nguyên và thời gian Nodejs được viết bằng C++ và JavaScript nên khi xử lý cần phải trải qua một quá trình biên dịch Nếu bạn cần xử
lý những ứng dụng tốn tài nguyên CPU thì không nên sử dụng Nodejs.
- Nodejs so với các ngôn ngữ khác như PHP, Ruby và Python sẽ không có sự chênh lệch quá nhiều Nodejs có thể sẽ phù hợp với việc phát triển ứng dụng mới Tuy nhiên khi xây dựng và triển khai dự án quan trọng thì Nodejs không phải là sự lựa chọn hoàn hảo nhất.
c) Java
Java là một ngôn ngữ lập trình có mục đích chung và hướng đối tượngđược phát triển cho môi trường phân tán và phát triển phần mềm cho cácthiết bị điện tử tiêu dùng như TV, VCR, Ngôn ngữ lập trình Java là mộtngôn ngữ độc lập với nền tảng, có nghĩa là không có giới hạn đối với bất
kỳ phần cứng hoặc hệ điều hành cụ thể nào Nó cung cấp cho người dùng
cơ sở để 'viết một lần, chạy ở mọi nơi Nhiều hệ điều hành như Sun
Solaris, RedHat, Windows, v.v., hỗ trợ Java
Trang 6Ưu điểm :
- Java là nền tảng độc lập vì chúng ta có thể chạy mã Java trên bất kỳ máy nào
mà không cần cài đặt bất kỳ phần mềm đặc biệt nào, JVM thực hiện điều đó Cung cấp sẵn các thư viện.
- Java là hướng đối tượng vì các lớp và đối tượng của nó.
- Lý do chính để Java được bảo mật là con trỏ, Java không sử dụng con trỏ.
- Trong Java, chúng ta có thể thực thi nhiều chương trình đồng thời, do đó, có thể đạt được đa luồng.
- Java mạnh mẽ vì nó có nhiều tính năng như thu gom rác, không sử dụng con trỏ rõ ràng, xử lý ngoại lệ.
- Java là một ngôn ngữ cấp cao giúp nó dễ hiểu.
- Quản lý bộ nhớ hiệu quả được thực hiện bằng Ngôn ngữ lập trình Java.
Nhược điểm :
- Là một ngôn ngữ cấp cao, nó phải xử lý các cấp độ biên dịch và trừu tượng của một máy ảo Java thể hiện hiệu suất kém, nguyên nhân chính là do bộ thu gom rác, cấu hình bộ nhớ đệm không hợp lệ và bế tắc giữa các quy trình.Không hỗ trợ thự viện GUI.
- Java có rất ít trình tạo GUI – Swing, SWT, JSF và JavaFX trong số những trình xây dựng phổ biến hơn.Fix bug gặp nhiều khó khăn.
- Để viết mã để thực hiện một tập hợp các hoạt động đơn giản, bạn có thể phải viết những đoạn mã dài và phức tạp Điều này có thể ảnh hưởng đến khả năng đọc nhưng đảm bảo rằng các lập trình viên nhập chính xác những gì cần phải làm.
d) PostgreSQL
PostgreSQL là một hệ thống quản trị cơ sở dữ liệu quan hệ-đối tượng(object-relational database management system) có mục đích chung, hệthống cơ sở dữ liệu mã nguồn mở tiên tiến nhất hiện nay
Ưu điểm :
- Có thể chạy các trang web và ứng dụng web động với LAMP.
- Một cơ sở dữ liệu có khả năng chịu lỗi cao.
- Có sẵn miễn phí theo giấy phép nguồn mở.
- Hỗ trợ các đối tượng địa lý để bạn có thể sử dụng nó cho các dịch vụ dựa trên
vị trí Hạn chế việc bảo trì hệ thống.
Nhược điểm :
Nhiều ứng dụng nguồn mở hỗ trợ MySQL, nhưng có thể không hỗ trợ PostgreSQL.
Về số liệu hiệu suất, nó chậm hơn MySQL.
e) Docker
Docker là nền tảng phần mềm cho phép bạn dựng, kiểm thử và triểnkhai ứng dụng một cách nhanh chóng Docker đóng gói phần mềm vàocác đơn vị tiêu chuẩn hóa được gọi là container có mọi thứ mà phầnmềm cần để chạy, trong đó có thư viện, công cụ hệ thống, mã và thời
Trang 7gian chạy Bằng cách sử dụng Docker, bạn có thể nhanh chóng triển khai
và thay đổi quy mô ứng dụng vào bất kỳ môi trường nào và biết chắcrằng mã của bạn sẽ chạy được
Ưu điểm :
- Thiết lập ban đầu hiệu quả và dễ dàng
- Cho phép theo dõi các biên bản vùng chứa để kiểm tra các biến thể
- Giảm sự cố khi đưa lên sản phẩm
Định dạng JSON sử dụng các cặp key – value để dữ liệu sử dụng Nó hỗtrợ các cấu trúc dữ liệu như đối tượng và mảng
- Cấu trúc JSON rất đơn giản và dễ đọc Bất kể ngôn ngữ lập trình bạn đang sử dụng là gì, bạn vẫn có thể dễ dàng ánh xạ các miền đối tượng.
- JSON sử dụng cấu trúc dữ liệu bản đồ, trong khi XML tuân theo cấu trúc cây Các cặp Key-Value bị giới hạn nhiệm vụ nhưng tạo điều kiện thuận lợi cho mô hình
dự đoán và tương đối dễ hiểu.
Nhược điểm
Vì không có schema, bạn có thể linh hoạt để trình bày dữ liệu theo bất kỳ cách nào bạn muốn Nhưng ngược lại, bạn có thể vô tình tạo ra dạng dữ liệu bị sai
Do JSON sử dụng định dạng Số thực dấu phẩy động IEEE-754 Điều này làm bạn
không thể tận dụng các loại số đa dạng và nhiều sắc thái có sẵn trong nhiều ngôn ngữ lập trình Thiếu sót này có nghĩa khiến các nhà phát triển phải sử dụng chuỗi biểu thị ngày, dẫn đến sự khác biệt về định dạng hoặc phải biểu diễn ngày ở dạng mili giây Điều này khiến bạn không thể yêu cầu tài liệu bổ sung và tăng khả năng hiểu nhầm.
Trang 8Mặc dù JSON ngắn hơn XML, nhưng đây vẫn chưa phải là định dạng trao đổi dữ liệu ngắn gọn nhất Vì vậy, đối với các dịch vụ có khối lượng lớn hoặc có mục đích đặc biệt, bạn sẽ muốn sử dụng các định dạng dữ liệu hiệu quả hơn là JSON.
g) Postman
Postman là một công cụ cho phép chúng ta thao tác với API, phổ biến nhất là REST Postman hiện là một trong những công cụ phổ biến nhất được sử dụng trong thử nghiệm các API Với Postman, ta có thể gọi Rest API mà không cần viết dòng code nào.
Postman hỗ trợ tất cả các phương thức HTTP (GET, POST, PUT, PATCH, DELETE,
…) Bên cạnh đó, nó còn cho phép lưu lại lịch sử các lần request, rất tiện cho việc sử dụng lại khi cần.
- Postman có thể hỗ trợ cho cả RESTful services và SOAP services
- Postman đem đến chức năng giúp tài liệu API.
Nhược điểm
Bên cạnh những ưu điểm trên thì Postman còn có một số hạn chế nhất định.
Đó chính là những bản phải trả phí, Postman có thể hỗ trợ cho người sử
dụng các tính năng có thể nâng cao trình độ làm việc của nhóm, giúp hỗ trợ
trực tiếp… Điều này tạo ra sự bất tiện cho người dùng vì mất một khoản
chi phí không nhỏ chỉ để dùng thêm những tính năng của Postman.
4 Công việc triển khai
Phân tích yêu cầu Thu thập và phân tích yêu cầu, vẽ
các biểu đồ mô tả cho hệ thốngPhát hiện các thực thể trên hệ
thống Phân tích, thiết kế mối liên quancủa các thực thể trong hệ thốngThiết kế giao diện hệ thống bằng
tool Figma Mockup giao diện (bao gồm cácmàn hình chính, popup, cửa sổ
lỗi)
Xây dựng Front-end và Back-end Đã thể hiện trên Demo
Deploy
Trang 9II Phân tích - thiết kế hệ thống
1 Phân tích yêu cầu
a Tác nhân (Actor) trong hệ thống:
b Quy trình nghiệp vụ trong hệ thống
Dựa vào các giai đoạn chuẩn bị, trong và sau khi hoàn thành bài test, quytrình hệ thống được tóm tắt như sau:
1 Set up kế
hoạch test trong hệ thống
Nhân sự (tuyển dụng)/Nhân sự (phòng ban)
Set up lịch test - Khung giờdự kiến
- Họ tên
- Email/SMS
- Vị trí ứng tuyển
- Trình độ (level)
Thông tin ứng viên
Nhân sự (phòng ban) Set up bàitest - Nội dungcâu hỏi
- Thời gian quy định
- Khung điểm
Bài test
Trang 102 Tiến hành
bài test Ứng viên Làm cácbài test
- Tiếng Anh
- Kiến thức chung
- Đăng nhập hệ thống bằng mã: Ứng viên sử dụng mã được gửi quaEmail/SMS để đăng nhập hệ thống
- Làm bài test: Thực hiện các bài test trong thời gian hợp lệ của bài test
Các chức năng của actor Nhân sự:
- Đăng nhập hệ thống bằng tài khoản: Sử dụng username-password đượcthiết lập để đăng nhập trên hệ thống
Trang 11- Quản lý ứng viên: Bao gồm thêm/sửa/xóa thông tin ứng viên (Tên,
Email/SMS vị trí ứng tuyển, level, lịch làm bài, bài test tương ứng)
- Set up bài test: Bao gồm thêm/sửa/xóa câu hỏi, bài test, set thời gian làmbài test
- Chấm điểm bài làm
Biểu đồ Trình tự cho chức năng làm bài
Ứng viên tham gia bài test bắt đầu bằng việc đăng nhập vào hệ thống bằng mã
đã nhận Hệ thống sau khi kiểm tra mã sẽ đưa ra 2 trường hợp:
- Mã đã nhập là hợp lệ: Chuyển sang màn hình bài làm và bắt đầu đếm thờigian làm bài trong hệ thống Bài làm trong thời gian hợp lệ được lưu trữcho tới khi ghi nhận kết thúc (chuyển sang màn kết thúc), khi thời gianlàm bài kết thúc hệ thống làm sẽ thoát và chuyển sang màn kết thúc
- Mã đã nhận không hợp lệ: Không cho đăng nhập vào hệ thống (vẫn ởmàn đăng nhập)
Trang 12Biểu đồ Trình tự cho chức năng chỉnh sửa lịch test
Màn hình Lịch test thể hiện các dữ kiện liên quan đến kế hoạch test của phòngban, bao gồm các thông tin về actor Ứng viên (Tên, Email/SMS vị trí ứngtuyển, level, lịch làm bài, bài test tương ứng), thời gian các ứng viên sẽ test(trong ba trạng thái “Sắp tới”, “Hôm nay”, “Quá hạn”)
Khi muốn chỉnh sửa thông tin của ứng viên, actor Nhân sự trước hết phải đăngnhập theo account đã lập, tới màn hình lịch test Hành động Thêm/sửa/xóa vềthông tin ứng viên hay lịch sẽ được Hệ thống thu nhận và kiểm tra hợp lệ(Thông tin chỉnh sửa có hợp lệ theo định dạng hay không), sau đó sẽ hiển thịcửa sổ lỗi (nếu sai) hoặc duyệt và hiển thị cập nhật lại trên màn lịch test
Trang 13Biểu đồ Trình tự cho chức năng chấm điểm các bài làm
Màn hình Đã hoàn thành thể hiện các bài làm mà ứng viên đã làm
Khi muốn chấm điểm cho bài làm của ứng viên, actor Nhân sự (với điều kiệnphải có cùng phòng ban với ứng viên) trước hết phải đăng nhập theo account đãlập, tới màn hình Đã hoàn thành Hành động chấm điểm sẽ được Hệ thống thunhận và hiển thị theo dạng chart
Trang 14Biểu đồ Trình tự cho chức năng set up các bài test
Màn hình Câu hỏi thể hiện các dữ kiện liên quan đến câu hỏi/bài test (Loại câuhỏi, phạm vi câu hỏi, cấp độ câu hỏi, Tên bài test, cấp độ bài test, thời gian bàitest, Mã ứng viên tham gia bài test)
Khi muốn chỉnh sửa thông tin của ứng viên, actor Nhân sự trước hết phải đăngnhập theo account đã lập, tới Câu hỏi Hành động Thêm/sửa/xóa về câu hỏi/bàitest sẽ được Hệ thống thu nhận và kiểm tra hợp lệ (Thông tin chỉnh sửa có hợp
lệ theo định dạng hay không), sau đó sẽ hiển thị cửa sổ lỗi (nếu sai) hoặc duyệt
và hiển thị cập nhật lại trên màn Câu hỏi
Trang 15Biểu đồ trạng thái của Ứng viên từ khi được thêm
tới khi hoàn thành ứng tuyển
Trang 16viênphone: varchar(255) Số điện thoại của ứng
viênposition: varchar(255) Vị trí ứng tuyểnavatar: varchar(255)
id_level (FK): int Mã level ứng tuyểnis_done: int Trạng thái bài test
Trang 17english_mark: double Điểm bài test tiếng
anhcoding_mark: double Điểm bài test kỹ năng
codingknowledge_mark:
subjects
Mỗi thực thể là một
loại bài test
ID (PK): int Mã loại bài testname: varchar(255) Tên loại bài test
question
Mỗi thực thể đại diện
cho các câu hỏi
ID (PK): int Mã câu hỏicontent: varchar(255) Nội dung câu hỏiimg: varchar(255) Hình ảnh
id_level (FK): int Mã cấp độ cho câu hỏiid_subject (FK): int Mã loại câu hỏi
id_type (FK): int Mã kiểu câu hỏi
question_type
Mỗi thực thể là một
kiểu câu hỏi
ID (PK): int Mã kiểu câu hỏiname: varchar(255) Tên kiểu câu hỏi
mc_question ID (PK): int Mã câu hỏi
Trang 18câu hỏi dạng tự luận
ID (PK): int Mã câu hỏianswer: varchar(255) Câu trả lờiquestion_id (FK): int Mã câu hỏi
test_question
Mỗi thực thể đại diện
cho các câu hỏi trong
Mỗi thực thể đại diện
cho kết quả từng bài
test của ứng viên
ID (PK): Long Mã kết quảanswer: varchar(255) Câu trả lờiid_answer: int Mã câu trả lờiid_candidate: int Mã ứng viên
varchar(255) Phòng ban của nhânviênemail: varchar(255) Địa chỉ email của
nhân viênusername:
Trang 19image: varchar(255)role: varchar(255) Chức vụ
3 Thiết kế giao diện hệ thống bằng tool Figma
Link demo bằng Figma:
https://www.figma.com/proto/de5QiA7TUgxKwzrSagJUwu/Testing-Online?node-id=97%3A1890&sc aling=min-zoom&page-id=0%3A1&starting-point-node-id=2%3A2
Tác dụng:
- Rõ ràng được các yêu cầu về hệ thống
- Thể hiện được cách sắp xếp các chức năng trong hệ thống
- Hiển thị hóa luồng hoạt động trong hệ thống
- Giúp cho việc xây dựng FE, BE được trở nên dễ dàng hơn
Màn hình đăng nhập