1.2 Mục tiêu của kiểm thử phần mềm Kiểm thử phần mềm sẽ giúp hoàn thiện các ứng dụng phần mềm hoặc sản phẩm so với yêu cầu kinh doanh và người sử dụng.. Kiểm tra phần mềm đề chắc chắn ki
Trang 1TRƯỜNG ĐẠI HỌC ĐIỆN LỰC KHOA CÔNG NGHỆ THÔNG TIN
<
Dal HOC DIEN LUC
ELECTRIC POWER UNIVERSITY
BAO CAO MON HOC:
DETAI: KIEM THU WEBSITE BAN MAN HiNH MAY TINH
Sinh viên thực hiện : NGUYÊN ĐỨC MẠNH
LÊ ANH ĐỨC Giảng viên hướng dan : PHAM DUC HONG
Trang 2PHIEU CHAM DIEM
Giảng viên châm 1:
Trang 3LỜI CẢM ƠN
Lời đầu tiên, nhóm em xin gửi lời cảm ơn sâu sắc đến thầy Phạm Đức Hồng, người
đã nhiệt tình giảng giải, hỗ trợ và định hướng đưa ra những đóng góp quý báu, tạo mọi điều kiện tốt nhất cho nhóm em hoàn thành dự án Trong thời gian làm việc cùng thay, nhóm em không ngừng tiếp thu thêm nhiều kiến thức bố ích mà còn học tập được tinh thần làm việc nghiêm túc, hiệu quả, đây là những điều rất cần thiết cho nhóm em trong quá trình học tập và công tác sau này
Nhóm em xin chân thành cảm ơn các thầy cô giảng viên, cán bộ trường Đại học Điện Lực đã nỗ lực cống hiến giảng dạy nhóm em trong suốt những năm đại học đê chúng em có
Trang 4MỤC LỤC I9.) 09 0
MỤC LỤC L2 211 1212111111111111111111111111111111111111 111111111111 111111111 111111111111111111111 01111111111 1111 101 10g
DANH MỤC CÁC HÌNH VẼ 2222 n0 tt 21.102 g2 n0 tru DANH MỤC CÁC BẢNG BIỀỂU 2222211111000 1 1 guueg
Danh mục các từ viết tắt TT ng H21 n5 ng Hee re VIII
ÿI6210ã00 7 6 1
CHƯƠNG I TÔNG QUAN VỀ KIÊM THỬ PHẢN MÈẼM - 56 5c St 2EcEErccrrrrre 2
1.1 Tâm quan trọng của việc kiểm thử phần mễn - 22-2 SE E21 cctxcre 2
1.2 Mục tiêu của kiểm thử phân HIỂM Q20 0 2101032112215 11211 1152155155555 sea 3
1.3 Vai trò của kiểm thử trong vòng đời phát trién phần mềm .- 5-5 cccScc: 4
1.3.1 Kiểm thử phần mềm trong mô hình thác nước . - 5c 2cxe£xezEez re 4 1.3.2 Kiểm thử phần mềm trong mô hình chữ V -2- 2 SE 2E EeEEserxet 4 1.3.3 Kiểm thử phần mềm trong Agile — Scrum 52 5s E2 2E 4
1.4 Cơ hội việc làm dành cho kiểm thử viên ảo 22 tre 5
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT - Các công cụ được sử dụng . ccccccccceee 7
2.1 Ngôn ngữ lập trình C Sharp 5 2 101212111 112111 11211111181 1111011811110 11111 tre 7
2.1.1 Giới thiệu về ngôn ngữ lập trình C Sharp 5-51 St HH nrrgrere 7
2.1.2 Đặc trưng của ngôn ngữ lập trình C ShaTp .- 2 2 2 2111211 xrrrey 8
2.1.3 Cac phién ban C Sharp nnn Ả 9
"¡30991 1S 13
ĐC.) I2 4)/0®o::iaadaaiadiaiaaiiada4a4ÊŸẢ 14
2.4 Giới thiệu về Selenium s22 tt tu uờ 15
2.4.1 Céng cu kiém thir tir déng Selenium o.oo ccc ccc cscs essesersesessesseesessressesseseees 15
2.4.2 Thanh phan của Selenium : 52v 222221 21t tre 16
2.4.3 Tính năng của SeÏenIum óc 11121911211 21811 11011111 1101115101111 0kg 17 2.4.4 Sclenium WebdrIV€T c c1 H111 11011 110111110111 11101111 1 H11 gu 17
PS cài 0 0 0800.0nn ốố 18
Trang 52.6 Công cụ quay và chụp màn hỉnh SnagT1L G2 2112121121111 18111112111 ty 19 2.7 Bảng tính Google Sheefs LH HH HH 01011111 120111121111 H1 1 Hết 19
CHƯƠNG 3 PHẦN TICH THIET KE HE THÓNG - 22-: 2222222222222 20
km con n.n ốốố
20
3.1.1 Hoạt động nghiệp vụ c2 1H HH1 HH HH HH HH ru
20 3.1.2 Yêu cầu chức năng .- c2 HT HH1 21 nen
21 3.1.3 Yêu cau phi chite nang o.cccccccccccccsscsssesscsssessessessessesssessesssssessessessesersaressesases
29
Trang 64.1.5 Cụm chức năng User Mianagemen[L - cv v2 HH Hư
Hình 2-I: Kiểm thử phần mễn - 2-5 S1 12 2 12212211 1112112112122111 2110 rrerere 3
Hình 2-2: Mức lương của T€§f€T 2c 12111 121111101 191101101111 0110111111111 H1 1 ray 5 Hình 2-3: Mức lương của ÏÖeveÏoper .- 2c t 211 1911110119111 10112111111 1 ru 5 Hình 3-1: Ngôn ngữ lập trình C ShaTp 2 1n S SH HH2 121114112111 7 Hình 3-2: Quá trình chuyén d6i MSIL code thanh native code 552: 5cccccczccc: 8 Hình 3-3: Cac phién ban ctta C# occ ccececeeseseeseeeesceeescnseseeecseseseeseeseeesesecieteceeneceneesees 9
Hình 3-4: Nền tảng NE7T - 5 c2 1E 2211 11211211 21221 1 10 11121 ray 12
Hình 3-5: Thành phần của NET Core .- 6 5c 2221 122121112211211121 2212212 re 14
Hình 3-8: Biểu tượng của SeÏ€nTum +: tk t1 1211111 111111 1101111111111 01111 01 0111 ray 16
Hình 3-9: Phần mềm IntelliJ TIDEAA 226cc: 2222112222211 ttEEtEEtttrttrrrrrrrrrrres 18
Hình 3-10: Viết script trong IntelliJ s55: 25 2112212211221 712211 22 re 19 Hình 3-11: Công cụ quay vả chụp ảnh màn hình SnagIt eceeeceeeeeeeeeees 19 Hình 3-12: Bảng tính Google Sheets TS n HH HHHH1011110111141 1121111211111 1d 20 Hinh 4-1 Quy trình công nghỆ L2 1211 212 1211111011111 110111110111 11101111 1H ray 21 Hình 4-2 Cơ sở dữ liệu 2 1211 102112121 111011121111010111111110 011111 111011111111 111111111 kg 22 Hinh 4-3 Biéu d6 usecase tông quát . - S1 St E221 1 2112 21211 nguyên 24 Hình 4-4 Usecase quản lý khóa học n2 1112111 101101101 1011111011111 12 1 1c tết 24 lsi)'E FSZđđdtt 25 Hình 5-1: Chức năng Login hệ thống của admin - 2-26 2 2E22122122122221 212cc 26 Hình 5-2: Giao diện sau khi đăng nhập SHAI thành công 22c 22232 26 Hình 5-3: Man hình chức năng Membership L_ 1s .- 0c 1222221213113 112xrrxee 27 Hình 5-4: Màn hình thêm mới MembeT- 2c 222012111121 11211111111111 111111111 8111 re 27
Trang 7Hình 5-5: Màn hình chức năng Membership Group .- óc: 2c 2123 tre 28 Hình 5-6: Man hinh thém moi Membership Group .- c2 2 22x srrrerse 28 Hình 5-12: Màn hình chức năng C lass LLISE G120 221 1211211 1121111111111 1 t2 29 Hinh 5-13: Man hình chức năng Course IS .- 120 211212 1121211111111 1811 11k 29 Hình 5-14: Màn hình chức năng Course Type LISt c2 2v HH re 30 Hình 5-15: Man hình chức năng Departimen[ 2 11212 11211111121 111181 1811 tre 30 Hình 5-16: Màn hình chức năng User LLIS 12211 132111112111 112181 11110118111 tre 31 Hình 5-17: Màn hình chức năng Role LLIS 2 12011 132111112111 112181 1111118111 tre 31
DANH MUC CAC BANG BIEU
Bảng 0-1: Các nhiệm vụ của đồ án tốt nghiệp Error! Bookmark not defined
Trang 9MỞ ĐẦU
1 Tổng quan tình hình nghiên cứu thuộc lĩnh vực của đề tài
Chúng ta đang sống trong thời kỳ hiện đại hóa, khi mà công nghệ được áp dụng trên
mọi lĩnh vực của cuộc sống như kinh doanh, y tế, giáo duc,
Đặc biệt là hiện nay con người thích sử dụng các thiết bị thông minh như điện thoại, laptop, để dùng cho mục đích mua cũng như tiết kiệm thời gian phục vụ cho các hoạt động khác Chính vì thế các ứng dụng, website hỗ trợ con người trong mục đích quản lý về nhiều lĩnh vực đang rất được ưa chuộng và phố biến
Thành lập một trung tâm dạy học là một chuyện và đề có thể quản lý được trung tâm một cách tốt nhất, bài bản nhất thì rất cần một phần mềm quản lý việc dạy học, các lớp học cũng như thành viên một cách tốt nhất Ở thời đại công nghệ 4.0 hiện nay việc sử dụng công nghệ thông tin vào việc quản lý dạy học thay cho việc quản lý thủ công
Nắm bắt được tình hình trên, nhóm em đã tạo ra ý tưởng xây dựng một Website quản
lý trung tâm dạy học Giúp cho việc quản ly giáo dục dạy học trở nên thuận tiện hơn
Đề tải này nhóm em phát triển chức năng theo nhóm tác nhân là người dùng và quản trị hệ thống, vì vậy trong khóa luận nảy nhóm em sẽ giới thiệu, phân tích chức năng, giải quyết bài toán nghiệp vụ của người dùng và quan trị hệ thống
2 Tính cấp thiết, ý nghĩa khoa học và thực tiễn của đề tài
Từ những phân tích trên, ý tưởng cho một phần mền quản lý dạy học hình thành nhằm mục đích giúp cho doanh nghiệp thuận tiện hơn trong việc quản lý việc dạy học Trong báo cáo đồ án này sẽ tập trung trình bày những nghiên cứu kiến thức cơ bản về lập trình C#, đi sâu vào nên tảng NET Core Phần kiêm thử sẽ đi sâu vào Selenium, công
cụ tiễn hành kiểm thử tự động chức năng được sử dụng cho đồ án Triển khai các bước
thiết kế, xây dựng ứng dụng giúp người dùng tra cứu thông tin, đăng kí, tìm kiếm, thanh
toán một cách thuận tiện nhất
Đây không phải là một đề tài mới nhưng do kinh nghiệm của em chưa nhiều và còn nhiều hạn chế cũng như sai sót mong thầy cô và các bạn đóng góp ý kiến để đề tài được
hoàn thiện hơn
Trang 10CHUONG 1 TONG QUAN VE KIEM THU PHAN MEM
1.1 Tâm quan trọng của việc kiêm thử phan men
Một phần mém được tạo ra thì luôn tồn tại lỗi Những lỗi phần mềm này nếu không được phát hiện ra và chỉnh sửa thì có thể gây ra những sự có đáng tiếc
Một trong những lỗi nôi tiếng nhất trong lịch sửa thế giới chính là Y2K Y2K là viết
tắt của Year 2000 va duge goi la “ôi thiên niên kỷ” Vào cuôi những năm 90, lỗi Y2K là 161
được đề cập nhiêu nhật khi cả thê giới chờ đợi máy bay va chạm, tàu vũ trụ bien mật, thị trường chứng khoán sụp đồ như dự đoán của nhiều chuyên gia công nghệ Lỗi này là một sai lâm đơn giản trong hệ thông quản lý thời gian của các máy tính chỉ sử dụng hai chữ số
đê biêu thị một năm Theo đó, 1970 sẽ được biêu diễn là 70 va năm 1999 sẽ được biêu diễn
là 99, Lý do của việc này là đề tiệt kiệm bộ nhớ [1]
Khi gần đến năm 2000, các lập trình viên máy tính nhận ra rằng máy tính sẽ không
thé biéu diễn chính xác năm 2000, vì 00 được dùng đề biêu diễn năm 1900 Các hoạt động
được lập trình hàng ngày hoặc hàng năm sẽ bị hư hỏng hoặc thiếu sót Vào ngày 31 tháng
12 năm 1999, chuyển sang ngày 1 tháng I năm 2000, máy tính sẽ biểu lả từ ngày 31 tháng
12 năm 1999, chuyên sang ngày 1 tháng I năm 1900 [1]
Các ngân hàng, tính lãi suất hàng ngày, phải đối mặt với những vấn đề thực sự Lãi suất là số tiền mà người cho vay, ví dụ như ngân hàng, tính phí một khách hàng, chang han như một cá nhân hoặc một doanh nghiệp khi họ vay tiền Thay vì tỷ lệ lãi suất cho một
ngày, máy tính sẽ tính tỷ lệ lãi suất cho gần 100 năm! [1]
Các trung tâm công nghệ, như các nhà máy điện, cũng bị đe dọa bởi lỗi Y2K Nhà máy điện phụ thuộc máy tính để kiêm tra an toàn và bảo trì, chăng hạn như áp lực nước hoặc mức độ bức xạ Không có ngày chính xác sẽ làm mắt những tính toán này và có thê đưa các cư dân gần đó đối mặt với nguy hiểm [1]
Giao thông vận tải cũng phụ thuộc vào thời gian và ngày tháng chính xác Các hãng hàng không đặc biệt bị de doạ vì máy tính lưu thông tin về tat cả các chuyến bay theo lịch
trình sẽ bị đảo lộn hết cả [1]
Cuối cùng, có Y2K đã không gây ra hậu quả gì nghiêm trọng nhưng cũng phải mất một thời gian đề các nhà phát triên phần mềm khắc phục triệt đề lỗi này
Trang 111.2 Mục tiêu của kiểm thử phần mềm
Kiểm thử phần mềm sẽ giúp hoàn thiện các ứng dụng phần mềm hoặc sản phẩm so với yêu cầu kinh doanh và người sử dụng Nó là rất quan trọng đề đảm bảo kiểm thử tốt dé kiêm thử các ứng dụng phần mềm hoàn toàn và chắc chắn rằng nó hoạt động tốt và theo các thông
số kỹ thuật
Việc xác định pham vi kiểm tra các trường hợp kiểm thử nên được thiết kế tốt với khả năng tối đa của việc tìm kiếm các lỗi hiệu quả và được tính toán là số bug bao cao cho
mỗi trường hợp kiểm thứ
Kiểm tra phần mềm đề chắc chắn kiểm thử đang thực hiện đúng cách và hệ thống đã san sàng đề sử dụng Kiêm thử bao phủ các lĩnh vực khác nhau như: chức năng của các ứng dụng, khả năng tương thích của các ứng dụng với các hệ điêu hành, phân cứng và các
loại khác nhau của các trình duyệt, thực hiện kiêm thử đề kiêm tra hiệu năng của các ứng
dụng đề đảm bảo rằng hệ thống đáng tin cậy và không có trục trặc hay không nên có bắt kỳ
vân đề cản trở Xác định răng các ứng dụng có thê được triên khai một cách đề dàng với
máy tính và không có bất kỳ sự có Do đó các ứng dụng rất đễ dàng đề cài đặt, tìm hiệu và
sử dụng
Trang 12Kiểm thử phần mềm cho phép tạo ra những đánh giá khách quan về mức độ phù hợp của
hệ thống các yêu cầu đã nêu và thông số kỹ thuật
Kiểm tra xác nhận rằng hệ thống đáp ứng các yêu cầu khác nhau bao gồm: chức năng, hiệu suất, độ tin cậy, an toàn, khả năng sử dụng và như vậy Việc xác nhận này được thực hiện đê đảm bảo rằng đang xây dựng hệ thống phù hợp
Xác nhận đề đảm bảo đang xây dựng hệ thống phù hợp Ngoài việc giúp đưa ra quyết định, các thông tin từ các kiêm thử phần mềm giúp quản lý rủi ro
1.3 Vai trò của kiếm thử trong vòng đời phát triển phần mềm
Kiểm thử phần mềm là hoạt động không thê tách rời với hoạt động phát trién phan mềm Hiện nay có 3 quy trình phát triên phần mềm chủ yếu được sử dụng: mô hình thác nước, mô hình chữ V và mô hình Agile — Scrum
1.3.1 Kiếm thử phần mềm trong mô hình thác nước
Mô hình thác nước là một mô hình tuần tự được chia thành các giai đoạn khác nhau
trong hoạt động phát triển phần mềm Mỗi giai đoạn được thiết kế đề thực hiện hoạt động
cụ thể trong giai đoạn phát triển phần mềm Giai đoạn kiêm thử trong mô hình thác nước chỉ bắt đầu sau khi hệ thống được xây dựng hoản thành
Kiểm thử được thực hiện trong quá trình phát triển phần mềm
1.3.2 Kiếm thử phần mềm trong mô hình chữ V
Mô hình chữ V là một phần mở rộng của mô hình thác nước Không giống như mô
hình thác nước, trong mô hình chữ V có một giai đoạn kiểm thử tương ứng cho từng giai đoạn phát trién phần mềm Trong mô hình chữ V, kiếm thử được thực hiện song song với giai đoạn phát triên phần mềm
Kiểm thử được thực hiện như một phan cua giai doan phat trién phan mém
1.3.3 Kiếm thử phần mềm trong Agile — Scrum
Mô hình Agile — Serum không thực hiện toàn bộ yêu cầu của hệ thống vào coding và
testing một lúc mà chia ra làm nhiễu giai đoạn (sprint) khác nhau, mỗi giai đoạn sẽ làm một
số yêu cầu nhất định Cán bộ kiểm thử sẽ được tham gia dự án ngay từ đầu, đảm bảo cuối
mỗi spint có sản phâm hoàn thành cả code và test
Trong mỗi một giai đoạn phải tạo task cho code và test Một task code xong phải có Ì
test test liền sau đó Do thời gian làm ngắn ngày nên phải đảm bảo cuối sprint hoàn thành
xong được cả test
Trang 131.4 Cơ hội việc làm dành cho kiếm thử viên
Pay by Experience Level for Software Tester
Median of all compensation (including tips, bonus, and overtime) by years of experience
Hình 1-2: Mirc lwong cua Tester
0-5 yrs 5-10 yrs 10-20 yrs >20 yrs 2] Median of all compensation (including tips, bonus, and overtime) by years of experience
Hình 1-3: Mức lương của Developer
Nhìn vào hình ảnh so sánh có thê nhận ra ưu thế lương thuộc về bên lập trình viên Nhưng mức độ lương ngoài phụ thuộc vào tính chất nghiệp vụ thì còn có thể kể đến nhiều
yếu tố khác như: [3]
* Cac kỹ năng và trình độ của các kỹ năng liên quan đến công việc
- _ Kinh nghiệm làm việc của bản thân với vị trí công việc
° Mức lương hiện tại nhận được trước khi đảm nhận một công việc khác
* Tinh chat cong viéc
Trang 14* Vitri, dia diém lam việc
° - Công ty tuyển dụng
* Lợi nhuận nhận được khi làm việc
* Ky nang dam phán lương khi đi phỏng vấn công việc
Nhưng bỏ qua khía cạnh về tiền bạc, có những giả trị khác sẽ nhận lại được như
kiến thức học hỏi được trong quá trình làm việc, các mối quan hệ với đồng nghiệp, cùng các kĩ năng mềm như khả năng xử lý tình huống, kĩ năng làm việc nhóm hay tư duy vấn đề
[3]
Để tạo nên một phân mềm tốt thì cần có sự kết hợp từ lập trỉnh viên va kiểm thử viên
trong quá trình xây dựng và phát triên phần mềm [3]
Trang 15CHƯƠNG 2 CƠ SỞ LÝ THUYÉT - CÁC CÔNG CU ĐƯỢC SỬ DỤNG
Trong chương này sẽ tập trung trình bày lý thuyết về ngôn ngữ lập trình C#, ASP.NET
Core, NET Core, Entity Framework danh cho viéc lap trình web Phan kiém thir sé gidi
thiệu về Selenium cùng các công cụ được sử dụng cho việc kiểm thử chức năng web 2.1 Ngôn ngữ lập trình C Sharp
2.1.1 Giới thiệu về ngôn ngữ lập trình C Sharp
C# [4] (hay C sharp) là một ngôn ngữ lập trình đơn giản, được phát triên bởi đội ngũ
kỹ sư của Microsoft vào năm 2000 C# là ngôn ngữ lập trình hiện đại, hướng đối tượng và được xây dựng trên nền tảng của hai ngôn ngữ mạnh nhất là C++ va Java
ee
Hình 2-1: Ngôn ngữ lập trình C Sharp Trong các ứng dụng Windows truyền thống, mã nguồn chương trình được biên dịch
trực tiếp thành mã thực thi của hệ điều hành
Trong các ứng dụng sử dụng NET Framework, mã nguồn chương trình (C#, VB.NET) được biên dịch thành mã ngôn ngữ trung gian MSIL (Microsoft intermediate language)
Sau đó mã này được biên dịch bởi Common Language Runtime (CLR) đề trở thành
mã thực thi của hệ điều hành Hình bên dưới thê hiện quá trình chuyên đối MSIL code thành native code
Ngôn ngữ lập trình C Sharp
Trang 16C# compiler c#
VB.NET compiler CLR
VB.NET —————— À> MSILcode —— Native code
JIT Compiler Other NET Other compiler
language
Compile time : Runtime
Hình 2-2: Quá trình chuyên đôi MSIL code thành native code
C# với sự hỗ trợ mạnh mẽ của NET Framework giúp cho việc tạo một ứng dụng Windows Forms hay WPF (Windows Presentation Foundation), phát triển game, ứng dụng Web, ứng dụng Mobile trở nên rất dé dang
2.1.2 Đặc trưng của ngôn ngữ lập trình C Sharp
A C# là ngôn ngữ đơn giản
C# loại bỏ một vài sự phức tạp và rối rắm của những ngôn ngữ như Java và C++, bao gồm việc loại bỏ những macro, những template, đa kế thừa, và lớp cơ sở ảo (virtual base class) Ngôn ngữ C# đơn giản vì nó dựa trên nền tảng C và C++ Nếu quen thuộc với C và C+—~ hoặc thậm chí là Java, thì sẽ thấy C# khá giống vẻ diện mạo, cú pháp, biểu thức, toán
tử và những chức năng khác được lấy trực tiếp từ ngôn ngữ C và C++, nhưng nó đã được cải tiền để làm cho ngôn ngữ đơn giản hơn
B C# là ngôn ngữ hiện đại
Điều gì làm cho một ngôn ngữ hiện đại? Những đặc tính như là xử lý ngoại lệ, thu gom bộ nhớ tự động, những kiêu dữ liệu mở rộng, và bảo mật mã nguôn là những đặc tính
được mong đợi trong một ngôn ngữ hiện đại C# chứa tất cả những đặc tính trên C# là một
ngôn ngữ lập trình thuần hướng đối tượng
Lập trình hướng đối tượng (OOP: Object-oriented programming) là một phương pháp lập trình có 4 tính chất Đó là tính trừu tượng (abstraction), tính đóng gói (encapsulation), tính đa hình (polymorphism) và tính kế thừa (inheritance) C# hỗ trợ tất cả những đặc tính trên
Trang 17€, C# là một ngôn ngữ ít từ khóa
C# là ngôn ngữ sử dụng giới hạn những từ khóa Phân lớn các từ khóa được sử dụng
đề mô tả thông tin Có thê nghĩ một ngôn ngữ có nhiễu từ khóa thì sẽ mạnh hơn Điều nảy không phải sự thật, ít nhất là trong trường hợp ngôn ngữ C#, có thê tìm thấy rằng ngôn ngữ
này có thể được sử dụng đề làm bất cứ nhiệm vụ nảo
aaa
Managed Code Nullable Type
Anonymous Type Optional
Parameters Partial Class
Information More COM
Implicit Type Support
lu ear lara
* Expressions
Trang 18* Statements
¢ Attributes
C# 1.2 được phát hành cùng với Visual Studio 2003 có cải tiến hỗ trợ thêm một số thứ
như foreach, IEnumerator, IDisposable
* Covariance and contravariance
Generic: Véi generic, code trở nên gọn gang, sáng sủa hơn, cũng có thê tái sử dụng function
cho nhiều kiểu đữ liệu khác nhau
Nullable: Trong nhiều trường hợp, cần thê hiện gia tri null voi kiểu đữ liệu tham trị
như int, double v v Với I số ngôn ngữ khác, phải chuyên nó sang dạng tham chiếu như Interger, Double Với C# 2, có thể dùng kiêu nullable, khai báo bằng cách: Nullable hoặc int Rất ngắn gọn và đơn giản
Delegate: Da có thê sử dụng anonymous delegate, viết ngắn học hơn so với C# 1
Partial class: Mot partial class có thé được khai báo trong nhiều file khác nhau
Partial class được áp dụng trong Winform, class tự sinh từ Entity Framework, giúp đễ dàng thêm chức năng vào form, class mà không cần động tới những class được C# tự tạo ra
Iterator (IEnumerable): Đề duyệt từng phần tử một mảng, có thê dùng hàm foreach
lterator là một cực hình khi implement trong C# 1 Voi tir khoa yield, viéc tao Iterator
trong C# da tro nén rat dé rang
C C# 3.0 — Cải tiến trong data accsess, LINQ ra doi
Phiên bản này được phát hành cuối năm 2007 cùng với Visual Studio 2008
Các tính năng quan trọng:
¢ Auto-implemented properties
* Anonymous types
* Query expressions
Trang 19¢ Tw implement getter, setter thong qua properties + Khởi tại object va array mot cach dé dang
* Khai bao bang bién var
* Anonymous class Lambda expression: Lambda expression gitp viéc viét delegate trở nên đễ dàng hơn rất nhiều
Extension method: Query và LINQ: Đây là phiên bản C# đầu tiên LINQ ra đời Những cải tiễn như var, anonymous class, lamda expression, extension method đều lả nền tảng để xây dựng LINQ
Ứng dụng khác của LINQ: Ban đầu, LINQ duge ding dé filter, sort v v cdc object trong bộ nhớ Nhờ sự trợ giúp của expression tree, LINQ đã có l sô ứng dụng khác như: LINQ to SQL (Dich lambda expression thanh SQL, query truc tiép dudi database), LINQ
to XML, Parellel LINQ
D C# 4.0 — Thay đối nho nhỏ
* Dynamic binding
¢ Named and optional arguments
* Generic co- and contravariance
* Embedded interop types (“NoPIA”) Cải tiền nhỏ giúp code ngắn gọn hơn: Thêm named arguments va optional parameters Lap trinh voi dynamic: Day la thay đôi lớn nhất và đáng chú ý nhất trong C# Với dynamic, gid đây có thê làm việc với các object từ những ngôn ngữ dynamic như Python, Ruby, Javascript,
E C# 5.0 — Giam thiéu rac réi khi code bất đồng bộ
* Asynchronous members
* Caller info attributes
Trang 20Điểm nhắn lớn nhất của phiên bản C# 5 này chính là 2 từ khóa async và await Nhiều function
trong C# đã được hỗ trợ call async va await
2.2 Nền tảng NET
.NET [5] là một nên tảng thống nhất có khả năng tương tác với đa ngôn ngữ lập trình và
được kiến trúc bởi 2 môi trường:
Thư viện lớp lớn có tên là Framework Class Library (FCL) Môi trường cung cấp giao diện cho người dùng, kết nối cơ sở dữ liệu, mật mã, truy cập dữ liệu, truyền thông tin
mạng, các thuật toán, thiết kế web và phát triển web
Thực thi các chương trình trong môi trường phần mềm Common Language Runtime (CLR) Một máy ảo cung cấp các dịch vụ như bảo mật, quản lý bộ nhớ và xử lý các ngoại
^
lệ
.NET FRAMEWORK -NET CORE XAMARIN
Windows Forms ASP.NET Core
Hinh 2-4: Nén tang NET
.NET Framework được Microsoft đưa ra chính thức từ năm 2002 NET Framework
chỉ hoạt động trên Windows Những nền tảng ứng dụng như WPF, Winforms, ASP.NET(14) hoạt động dựa trên NET Framework
Mono là phiên bản cộng đồng nhằm mang NET đến những nên tảng ngoài Windows Mono được phát triển chủ yêu nhằm xây dựng những ứng dụng với giao diện người dùng
và được sử dụng rât rộng rãi: Unity Game, Xamarm
Cho đến năm 2013, Microsoft định hướng đi đa nền tảng và phát triển NET core .NET core hiện được sử dụng trong các ứng dụng Universal Windows platform và ASPNET Core Từ đây, C# có thể được sử dụng đề phát triển các loại ứng dụng đa nên tảng trên các hệ điều hành khác nhau (Windows, Linux, MacOS )
Trang 212.3 NET CORE
NET Core [6] là một nền tảng phát triển đa mục đích, mã nguồn mở được duy trì bởi Microsoft và cộng đồng NET trên GitHub Đó lả nền tảng chéo (hỗ trợ Windows, macOS
và Linux) và có thê được sử dụng đề xây dựng các ứng dụng thiết bị, đám mây va IoT
.NET Core hỗ trợ đầy đủ C # và F # (và C ++ / CLI kế từ 3.1; chỉ được bật trên
Windows) và hỗ trợ một phân Visual Basic NET
Có thê sử dụng các công cụ sau dé lap trinh:
Visual Studio Visual Studio Code Sublime Text
Vim Đặc điểm của NET Core:
Đa nên tảng: Chạy trên các hệ điều hành Windows, macOS và Linux
Nhất quán trên các kiến trúc: có thẻ chạy mã nguồn với cùng một hành vi trên
nhiều kiến trúc hệ thống, bao gồm x64, x86 và ARM
Các công cụ dòng lệnh: Bao gồm các công cụ dòng lệnh dễ sử dụng, có thê
được sử dụng dé phat triển cục bộ và trong các tỉnh huống tích hợp liên tục
Triển khai linh hoạt: có thể cài đặt song song (cải đặt toàn người dùng hoặc toàn hệ thống) Có thê được sử đụng với các container Docker
Tương thích: NET Core tương thích với NET Framework, Xamamn và Mono, thông qua NET Standard
Nguồn mở: Nền tảng NET Core là nguồn mở, sử dụng giấy phép MIT va
Apache 2 .NET Core la một dự án NET Foundation
Được hỗ trợ bởi Microsoft: NET Core được Mierosoft hỗ trợ, theo Hỗ trợ NET Core
Về framework, nhiều amework được xây dựng trên nên tảng NET core như: ASP.NET Core
Windows 10 Universal Windows Platform (UWP)
Tizen
Các thành phần của NET Core gồm:
CLI Tool: Công cụ CLI(Command - line -interface: Giao tiếp thông qua dòng lệnh) là bộ công cụ đề phát triển va trién khai NET core
Trang 22* CoreFX: Tập hợp các thư viện khung (framework library)
* CoreCLR (Command Language Runtime): Môi trường thực thi cua NET
core, CoreCLR sử dụng trình biên dịch trung gian dựa trên JIT Nho đó nó có
thê dịch mã IL sang mã máy của những nên tảng mà nó hỗ trợ
Hình 2-5: Thành phần của NET Core Ưu
điểm của NET Core:
* ,NET Core có nhiều ưu điểm đề trải nghiệm:
* = NET Core có thể được sử dụng cho nhiều nền tảng khác nhau như WIndows,
Linux hay Mac OS Khi ứng dụng nó với Visual Studio Code hoặc các công
cụ khác sẽ giúp phát triển ứng dụng trên các nên tảng khác nhau một cách dễ dàng
* Voi kha nang triển khai linh hoạt của minh, khi NET core két hop voi Container Docker hodc Azure Kubernates Service sẽ giúp tiết kiệm tài
nguyên đáng kê
* - Với kiến trúc Mô đun, NET Core ít tiêu tốn dung lượng bộ nhớ, tăng hiệu
suất va dé bao trì ứng dụng hơn
+ Tốc độ thực thi nhanh vả khả năng mở rộng ứng dụng cũng là một trong những ưu điểm lớn của NET core