












Preview text:
lOMoAR cPSD| 58702377 1. Thêm thể loại - Mã nguồn chương trình
public function postGenre(Request $request){ 1. $genre = new Genre; 2.
$genre->genre_name = $request->genre; 3.
if($genre->genre_name == " "){ 4.
session()->flash('error','Tên thể loại không được để trống') 5. return redirect()->back(); } 6. $genre->save(); 7.
session()->flash('success', 'Thêm thể loại thành công!'); 8.
return redirect()->back(); } 1.1.
Kiểm thử dòng điều khiển.
- Xây dựng sơ đồ thị dòng điều khiển
- Xác định ca kiểm kiểm thử đối với độ đo C1 TC Đường đi TC1 1,2,3,4,5 lOMoAR cPSD| 58702377 TC2 1,2,3,6,7,8
- Các ca kiểm thử v độ đo C1 TC Đầu vào Đầu ra mong đợi Đầu ra thực tế TC1 genre_name = “ ”
Hiển thị thông báo “Tên thể
Hiển thị thông báo “Tên thể loại
loại không được để trống”.
không được để trống”. TC2 genre_name = “Hài
Hiển thị thông báo “Thêm
Hiển thị thông báo “Thêm thể kịch” thể loại thành công”. loại thành công”.
- Xác định ca kiểm thử với độ đo C2 Điểm quyết định Điều kiện Đúng Sai 3
genre->$genre_name = “ ” TC1 TC2
- Các ca kiểm thử v độ đo C2 TC Đầu vào Đầu ra mong đợi Đầu ra thực tế TC1 genre_name = “ ”
Hiển thị thông báo “Tên thể
Hiển thị thông báo “Tên thể loại
loại không được để trống”.
không được để trống”. TC2 genre_name = “Hài
Hiển thị thông báo “Thêm
Hiển thị thông báo “Thêm thể kịch” thể loại thành công”. loại thành công”. 1.2.
Kiểm thử dòng dữ liệu 2. Thêm tài khoản.
- Mã nguồn chương trình: lOMoAR cPSD| 58702377
public function postAddUser(Request $request){
// Kiểm tra độ dài và định dạng username 1.
$username = $request->username; 2.
if ($user->username == "") { 3.
session()->flash('error', 'Username không được để trống'); 4. return redirect()->back(); } 5.
if (preg_match('/[\d\s\W]/', $username)) { 6.
session()->flash('error', 'Định dạng không hợp lệ.'); 7. return redirect()->back(); } 8.
if (strlen($username) < 6 || strlen($username) > 30) { 9.
session()->flash('error', 'Username phải chứa từ 6 đến 30 kí tự.'); 10. return redirect()->back(); }
// Kiểm tra name không chứa số 11. $name = $request->name; 12.
if (preg_match('/[0-9\W]/', $name)) { 13.
session()->flash('error', 'Định dạng không hợp lệ.'); 14.
return redirect()->back(); } lOMoAR cPSD| 58702377
// Kiểm tra định dạng email 15. $email = $request->email; 16.
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { 17.
session()->flash('error', 'Email không đúng định dạng.'); 18. return redirect()->back(); }
// Kiểm tra định dạng phone 19.
$phoneNumber = $request->phone_number; 20.
if (!preg_match('/^[0-9]{10}$/', $phoneNumber)) { 21.
session()->flash('error', 'Số điện thoại phải gồm 10 chữ số và không được chứa ký tự khác.'); 22.
return redirect()->back(); }
// Kiểm tra định dạng mật khẩu 23.
$user->password = bcrypt($request->password); 24.
if ($user->password == "") { 25.
session()->flash('error', 'Mật khẩu không được để trống'); 26.
return redirect()->back(); } 27.
$password = $request->password; 28.
if (strlen($password) > 72 || preg_match('/\s/', $password)) { 29.
session()->flash('error', 'Mật khẩu phải có độ dài tối đa 35 kí tự và không
được chứa khoảng trắng.'); 30.
return redirect()->back(); } 31. $user = new User; 32.
$user->username = $username; 33. $user->name = $name; 34. $user->email = $email; 35.
$user->phone_number = $phoneNumber; 36.
$user->password = bcrypt($request->password); 37. $user->save(); 38.
session()->flash('success', 'Thêm tài khoản thành công!'); 39.
return redirect('admin/user'); } 2.2.
- Xây dựng sơ đồ thị dòng điều khiển lOMoAR cPSD| 58702377
- Xác định ca kiểm kiểm thử đối với độ đo C1 TC Đường đi TC1 1,2,3,4 TC2 1,2,5,6,7 TC3 1,2,5,8,9,10 TC4 1,2,5,8,11,12,13,14 TC5 1,2,4,8,11,12,15,16,17,18 TC6
1,2,4,8,11,12,15,16,19,20,21,22 TC7
1,2,4,8,11,12,15,16,19,20,23,24,25,26 TC8
1,2,4,8,11,12,15,16,19,20,23,24,27,28,29,30 TC9
1,2,4,8,11,12,15,16,19,20,23,24,27,28,31,32…39 - Độ đo kiểm thử C1 TT Đầu vào Đầu ra mong đợi Đầu ra thực tế Ghi chú TC1 Username= Hiển thị thông báo: Hiển thị thông báo: T Passworld = 12323 “Username không được “Username không được Name = Tien để trống”. để trống”. Phone = 0123456789 Mail=okeek@gmal.com lOMoAR cPSD| 58702377 TC2 Username=abc$$@
Hiển thị thông báo lỗi
Hiển thị thông báo lỗi T Passworld = 12323 “Username không đúng “Username không đúng Name = Tien định dạng”. định dạng”. Phone = 0123456789 Mail= okeze1@gmal.com TC3 Username= a
Hiển thị thông báo lỗi
Hiển thị thông báo lỗi T Passworld = 12323
“Username phải có độ dài “Username phải có độ Name = Tien tối thiểu 6 kí tự”.
dài từ 6 đến 30 kí tự”. Phone = 0123456789 Mail= okeeke@gmal.com TC4 Username= abc123
Hiển thị thông báo lỗi
Hiển thị thông báo lỗi T Passworld = 123231 “Định dạng tên không “Định dạng tên không Name = Tien123 hợp lệ”. hợp lệ”. Phone = 0123456789 Mail= keeke@gmal.com TC5 Username= abc123
Hiển thị thông báo lỗi
Hiển thị thông báo lỗi T Passworld = 123231
“Email không đúng định
“Email không đúng định Name = Tien dạng”. dạng”. Phone = 0123456789 Mail= okke@@gmal.com TC6 Username= abc123
Hiển thị thông báo lỗi Hiển thị thông báo T Passworld = 123231 “SĐT không hợp lệ”.
lỗi:”Số điện thoại phải Name = Tien
gồm 10 chữ số và không Phone = 012345678999
được chứa ký tự khác” Mail= okeee@gmal.com TC7 Username= abc123 Hiển thị thông báo: Hiển thị thông báo: T Passworld =123..(35k.tu)
“Mật khẩu không được
“Mật khẩu không được Name = Tien123 vượt quá 35 kí tự”. vượt quá 35 kí tự và Phone = 0123456789 chứa khoảng trắng”. Mail= oeeke@gmal.com TC8 Username= abc123 Hiển thị thông báo: Hiển thị thông báo: T Passworld =
“Mật khẩu không được
“Mật khẩu không được Name = Tien để trống”. để trống”. Phone = 0123456789 Mail= okeke@gmal.com TC9 Username= abc123 1,Hiển thị thông báo: 1,Hiển thị thông báo: T Passworld = 123456 “Thêm tài khoản thành “Thêm tài khoản thành Name = Tien công”. công”. Phone = 0981234568 2,Trở về màn hình form 2,Trở về màn hình Mail= okeke@gmal.com “admin/user” form:“admin/user” - Độ đo kiểm thử C2 TT Đầu vào Đẩu ra mong đợi Đầu ra thực tế Ghi chú lOMoAR cPSD| 58702377 TC1 Username= Hiển thị thông báo: Hiển thị thông báo: T Passworld = 12323 “Username không được “Username không được Name = Tien để trống”. để trống”. Phone = 0123456789 Mail=okeek@gmal.com TC2 Username=abc$$@
Hiển thị thông báo lỗi
Hiển thị thông báo lỗi T Passworld = 12323 “Username không đúng “Username không đúng Name = Tien định dạng”. định dạng”. Phone = 0123456789 Mail= okeze1@gmal.com TC3 Username= a
Hiển thị thông báo lỗi
Hiển thị thông báo lỗi T Passworld = 12323
“Username phải có độ dài “Username phải có độ Name = Tien tối thiểu 6 kí tự”.
dài từ 6 đến 30 kí tự”. Phone = 0123456789 Mail= okeeke@gmal.com TC4 Username= abc123
Hiển thị thông báo lỗi
Hiển thị thông báo lỗi T Passworld = 123231 “Định dạng tên không “Định dạng tên không Name = Tien123 hợp lệ”. hợp lệ”. Phone = 0123456789 Mail= okeeke@gmal.com TC5 Username= abc123
Hiển thị thông báo lỗi
Hiển thị thông báo lỗi T Passworld = 123231
“Email không đúng định
“Email không đúng định Name = Tien dạng”. dạng”. Phone = 0123456789 Mail= okke@@gmal.com TC6 Username= abc123
Hiển thị thông báo lỗi Hiển thị thông báo T Passworld = 123231 “SĐT không hợp lệ”.
lỗi:”Số điện thoại phải Name = Tien
gồm 10 chữ số và không Phone = 012345678999
được chứa ký tự khác” Mail= okeeke@gmal.com TC7 Username= abc123
Hiển thị thông báo lỗi
Hiển thị thông báo lỗi F Passworld = 123231 “mail không được để
“Email không đúng định Name = Tien trống”. dạng”. Phone = 0123456789 Mail= TC8 Username= abc123 Hiển thị thông báo: Hiển thị thông báo: T Passworld=123..(35k.tu)
“Mật khẩu không được
“Mật khẩu không được Name = Tien123 vượt quá 35 kí tự”. vượt quá 35 kí tự và Phone = 0123456789 chứa khoảng trắng”. Mail= oeeke@gmal.com TC9 Username= abc123 Hiển thị thông báo: Hiển thị thông báo: T Passworld = 123 23 1
“Mật khẩu không được
“Mật khẩu không được Name = Tien chứa khoảng trắng”. vượt quá 35 kí tự và Phone = 0123456789 chứa khoảng trắng”. Mail= okeeke@gmal.com lOMoAR cPSD| 58702377 TC10 Username= abc123 Hiển thị thông báo: Hiển thị thông báo: T Passworld =
“Mật khẩu không được
“Mật khẩu không được Name = Tien để trống”. để trống”. Phone = 012345678999 Mail= okeeke@gmal.com TC11 Username= abc123 Hiển thị thông báo: Hiển thị thông báo T Passworld = 123456
“Số điện thoại không
lỗi:”Số điện thoại phải Name = Tien được để trống”.
gồm 10 chữ số và không Phone =
được chứa ký tự khác Mail= eeke@gmal.com TC12 Username= abc123
Hiển thị thông báo: “Tên
Hiển thị thông báo lỗi F Passworld = 123456
hiển thị không được để “Định dạng tên không Name = trống”. hợp lệ”. Phone = 0123456789 Mail= okeeke@gmal.com TC13 Username= abc123
Hiển thị thông báo lỗi Hiển thị thông báo T Passworld = 123456 “SĐT không hợp lệ”.
lỗi:”Số điện thoại phải Name =
gồm 10 chữ số và không Phone = 012345A89
được chứa ký tự khác” Mail= okeeke@gmal.com - Sinh đường đi TT Đường đi Đầu vào Đầu ra mong đợi Đầu ra thực tế 1 1, 2 ,3 Username=ad
Hiển thị thông báo lỗi
Hiển thị thông báo lỗi
“username phải có độ “username phải có độ
dài tối thiểu 6 ký tự”.
dài tối thiểu 6 ký tự”. 2 1,2,5,6 Name = T13n Hiển thị thông báo: Hiển thị thông báo: “Name không được “Name không được chứa số”. chứa số”. 3 1,2,5,6,9,10 Email=o!tr0j@gmai.com
Hiển thị thông báo lỗi
Hiển thị thông báo lỗi “Email không đúng
“Email không đúng định định dạng”. dạng”. 4 1,2,5,6,9,10 Passworld = null
Hiển thị thông báo lỗi
Hiển thị thông báo lỗi 13,14 “Mật khẩu không
“Mật khẩu không được được trống”. trống”. 5 1,2,5,6,9,10 Username=admin1 Hiển thị thông báo: Hiển thị thông báo: 13,14,16…23 Passworld = 12323 “Thêm tài khoản “Thêm tài khoản thành Name = Tien1 thành công”. công”. Mail= ok ok123@gmal.com 3. Thêm phim sắp chiếu. - Mã nguồn chương trình lOMoAR cPSD| 58702377
public function addUpcomingMovie(Request $request) { 1.
$tenPhim = $request->input('ten_phim'); 2.
$theLoai = $request->input('the_loai'); 3.
$ngayRaMat = $request->input('ngay_ra_mat'); 4.
$poster = $request->input('poster'); 5.
if (empty($tenPhim) || strlen($tenPhim) > 255 ||
containsSpecialChars($tenPhim)) { 6.
return redirect('/them-phim')->with('error', 'Tên phim không hợp lệ.'); } 7. if (empty($theLoai)) { 8.
return redirect('/them-phim')->with('error', 'Vui lòng chọn thể loại.'); } 9.
if (!isValidDate($ngayRaMat) || strtotime($ngayRaMat) < strtotime(now()- >toDateString())) { 10.
return redirect('/them-phim')->with('error', 'Ngày ra mắt không hợp lệ.'); } 11.
if (empty($poster) || !isValidPosterURL($poster)) { 12.
return redirect('/them-phim')->with('error', 'Liên kết poster không hợp lệ.'); } 13. $movie = new UpcomingMovie; 14.
$movie->ten_phim = $tenPhim; 15.
$movie->the_loai = $theLoai; 16.
$movie->ngay_ra_mat = $ngayRaMat; 17. $movie->poster = $poster; 18. $movie->save(); 19.
return redirect('/danh-sach-phim')->with('success',
'Phim đã được thêm thành công!'); } 3.1
- Xây dựng sơ đồ thị dòng điều khiển lOMoAR cPSD| 58702377 TC Đường đi TC1 1,2,3,4,5,6 TC2 1,2,3,4,5,7,8 TC3 1,2,3,4,5,7,9,10 TC4 1,2,3,4,5,7,9,11,12 TC5 1,2,3,4,5,7,,9,11,13…19
- Các ca kiểm thử với độ đo C1 TC Đầu vào Đầu ra mong đợi Đầu ra thực tế TC1
ten_phim = “” the_loai = “Hành
Hiển thị thông báo:”Tên Hiển thị thông báo
động” ngay_ra_mat = 12/12/2023 phim không được để :”Tên phim không poster = trống”. hợp lệ”. /img/upcoming/hellof.jpg TC2 ten_phim = “Hello oto ”
Hiển thị thông báo:”Vui Hiển thị thông báo the_loai = “” long chọn thể loại”. :”Vui long chọn thể
ngay_ra_mat = 12/12/2023 poster loại”. = /img/upcoming/hellof.jpg TC3
ten_phim = “” the_loai = “Hành
Hiển thị thông báo:”Tên Hiển thị thông báo
động” ngay_ra_mat = 12/12/2023 phim không được để :”Tên phim không poster = trống”. hợp lệ”. /img/upcoming/hellof.jpg lOMoAR cPSD| 58702377 TC4 ten_phim = “Hello Friend”
Hiển thị thông báo:”Liên Hiển thị thông báo
the_loai = “Hành động” kết poster không hợp :”Liên kết poster ngay_ra_mat = 12/12/2023 lệ”. không hợp lệ”.
poster = /png/upcoming/hello.txt TC5 ten_phim = “Hello Friend” Hiển thị thông báo Hiển thị thông
the_loai = “Hành động” :”Phim đã được báo:”Phim đã được
ngay_ra_mat = 12/12/2023 poster thêm thành công”. thêm thành công”. = /img/upcoming/hellof.jpg
- Xác đinh các ca kiểm thử ứng với độ đo C2 Điểm quyết định Điều kiện Đúng Sai 5
empty($tenPhim) || strlen($tenPhim) > 255 TC1 TC2 7 empty($theLoai) TC2 TC3 9
(!isValidDate($ngayRaMat) || strto 琀椀 TC3 TC4 me($ngayRaMat) 11
empty($poster) || !isValidPosterURL($poster)) TC4 TC5 1
public function postMovie(Request $request){ 2
$requiredFields = ['title', 'genre', 'year', 'decription',
'rating', 'duration', 'poster_image', 'director', 'country']; 3
foreach ($requiredFields as $field) { 4
if (empty($request->$field)) { 5
session()->flash('error', 'Vui lòng điền đầy đủ thông tin.'); 6 return redirect()->back(); } } 7 $title = $request->title; 8
if (strlen($title) > 255) { 9
session()->flash('error', 'Tiêu đề không được dài quá 255 kí tự'); 10 return redirect()- >back(); }
11 $year = (int)$request->year; lOMoAR cPSD| 58702377 12
if ($year < 1900 || $year > 2023 || !is_numeric($request- >year)) { 13
session()->flash('error', 'Năm phát hành không hợp lệ.'); 14 return redirect()->back(); } 15
$duration = (int)$request->duration; 16
if ($duration <= 0 || !is_numeric($request->duration)) { 17 session()->flash('error', 'Thời
lượng không hợp lệ.'); 18 return redirect()->back(); } 19
$director = $request->director; 20
if (preg_match('/[0-9!@#$%^&*(),.?":{}|<>]/', $director)) { 21 session()->flash('error', 'Tên
đạo diễn không hợp lệ.'); 22 return redirect()->back(); } 23
$country = $request->country; 24
if (preg_match('/[0-9!@#$%^&*(),.?":{}|<>]/', $country)) { 25 session()->flash('error',
'Quốc gia không hợp lệ.'); 26 return redirect()->back(); } 27
$rating = (float)$request->rating; 28
if ($rating < 0 || $rating > 10 || !is_numeric($request- >rating)) { 29
session()->flash('error', 'Điểm xếp hạng không hợp lệ.'); 30 return redirect()->back(); } 31 $movie = new Movie; 32 $movie->title = $title; 33
$movie->genre_id = $request->genre; 34
$movie->year = $year; 35 $movie->decription = $$request->description;
36 $movie->rating = $rating; lOMoAR cPSD| 58702377 37
$movie->duration = $duration; 38
$movie->poster_image = $request->posterImage; 39
$movie->director = $director; 40
$movie->country = $country; 41
$movie->save(); 42 session()->flash('success', 'Thêm phim thành công!'); 43
return redirect('/admin/movie'); }
1. session()->flash('success', 'Thêm tài khoản thành công!');
2. return redirect('admin/user'); $user = new User;
$user->username = $username;
$user->name = $name; $user->email = $email; $user = new User;
$user->username = $username; $user->name = $name; $user->email = $email;
$user->phone_number = $phoneNumber;
$user->password = bcrypt($request->password); $user->save();