189 4.1 Implementasi Sistem
Tahapan implementasi sistem adalah tahap menerjemahkan kebutuhan dalam pembangunan perangkat lunak ke dalam representasi aplikasi sesuai dengan hasil analisis dan perancangan sistem. Setelah implementasi sistem dilakukan maka sistem telah dapat dioperasikan dan selanjutnya dapat dilakukan pengujian.
4.1.1 Implementasi Perangkat Lunak Pembangun
Perangkat lunak yang dipakai dalam pembangunan aplikasi pada penelitian ini adalah sebagai berikut.
Tabel 4.1 Implementasi Perangkat Lunak Pembangun
No Perangkat Lunak Spesifikasi
1 Sistem Operasi Windows 10 Home 64Bit
2 Tool Pembangun Perangkat Lunak Android
Android Studio versi 3.1.3
3 Tool Pembangun Perangkat Lunak Web
Sublime Text versi 3
4.1.2 Implementasi Perangkat Keras Pembangun
Perangkat keras yang dipakai dalam pembangunan aplikasi pada penelitian ini adalah sebagai berikut.
Tabel 4.2 Implementasi Perangkat Keras Pembangun
No Perangkat Keras Spesifikasi
1 Processor Intel(R) Core(TM) i5-3317U CPU @ 1.70GHz (4 CPUs), ~1.7GHz
2 Memory 8192 MB RAM
3 Harddisk 500 GB
4.1.3 Implementasi Perangkat Lunak Pengujian
Perangkat lunak pengujian merupakan perangkat lunak yang dipakai pada saat pengujian sistem. Adapun perangkat lunak yang digunakan pada pembangunan aplikasi pada penelitian ini adalah sebagai berikut.
Tabel 4.3 Implementasi Perangkat Lunak Pengujian
No Perangkat Lunak Spesifikasi
1 Sistem Operasi Android Marshmallow 6.01
4.1.4 Implementasi Perangkat Keras Pengujian
Perangkat keras pengujian merupakan perangkat keras yang dipakai pada saat pengujian sistem. Adapun perangkat keras yang digunakan pada pembangunan aplikasi pada penelitian ini adalah sebagai berikut.
Tabel 4.4 Implementasi Perangkat Keras Pengujian
No Perangkat Keras Spesifikasi
1 Processor Octa-core 1.4 Ghz
2 RAM 2 GB
3 Internal Storage 16 GB
4 Layar 5 inch
4.1.5 Implementasi Basis Data
Implementasi basis data merupakan gambaran pembuatan basis data pembangunan aplikasi pada penelitian ini. Basis data yang diterapkan pada penelitian ini menggunakan bahasa SQL. Berikut pada tabel 4.5 adalah implemtasi basis data pada penelitian ini.
Tabel 4.5 Implementasi Basis Data
No Nama Tabel Perintah
1 Tabel Akun CREATE TABLE `akun` ( `pk_akun` int(8) NOT NULL, `nama` varchar(60) NOT NULL, `alamat` varchar(255) NOT NULL, `telepon` varchar(16) NOT NULL, `username` varchar(60) NOT NULL, `password`
No Nama Tabel Perintah
varchar(60) NOT NULL, `akses` varchar(16) NOT NULL, `lat_terkini` double NOT NULL, `lng_terkini` double NOT NULL, `fcm` varchar(255) NOT NULL )
2 Tabel Anggota
CREATE TABLE `anggota` ( `pk_anggota` int(11) NOT NULL, `nama` varchar(100) NOT NULL, `telepon` varchar(16) NOT NULL, `alamat` varchar(255) NOT NULL )
3 Tabel Kendaraan
CREATE TABLE `kendaraan` ( `pk_kendaraan` int(8) NOT NULL, `merk` varchar(60) NOT NULL, `tipe` varchar(60) NOT NULL, `no` varchar(16) NOT NULL ) 4 Tabel spj CREATE TABLE `spj` ( `pk_spj` int(11) NOT NULL,
`fk_akun_kbo` int(11) NOT NULL, `fk_akun_drv` int(11) NOT NULL, `fk_tps` int(11) NOT NULL, `fk_tpa` int(11) NOT NULL, `fk_kendaraan` int(11) NOT NULL, `waktu_berangkat` time NOT NULL, `waktu_sampai` time NOT NULL, `tanggal` date NOT NULL, `timbangan_sampah` varchar(16) NOT NULL, `bukti_tps` varchar(255) NOT NULL, `status_sampah_tps` varchar(60) NOT NULL, `keterangan_tps` varchar(255) NOT NULL, `status` int(4) NOT NULL, `radius_tps` int(2) NOT NULL, `radius_tpa` int(2) NOT NULL ) 5 Tabel
spj_anggota
CREATE TABLE `spj_anggota` ( `pk_spj_anggota` int(11) NOT NULL, `fk_spj` int(11) NOT NULL, `fk_anggota` int(11) NOT NULL )
6 Tabel TPA CREATE TABLE `tpa` ( `pk_tpa` int(11) NOT NULL, `fk_akun` int(11) NOT NULL, `nama` varchar(120) NOT NULL, `alamat` varchar(255) NOT NULL, `lat` double NOT NULL, `lng` double NOT NULL )
No Nama Tabel Perintah
7 Tabel TPS CREATE TABLE `tps` ( `pk_tps` int(11) NOT NULL, `fk_akun` int(8) NOT NULL, `nama` varchar(60) NOT NULL, `alamat` varchar(255) NOT NULL, `wilayah` varchar(255) NOT NULL, `kecamatan` varchar(120) NOT NULL, `lat` double NOT NULL, `lng` double NOT NULL )
4.1.6 Implementasi Antarmuka
Implementasi antarmuka mempunyai tujuan untuk mengubah hasil analisis menjadi bentuk nyata. Antarmuka adalah bagian penting dari pembangunan aplikasi mobile android. Berikut pada tabel 4.6 merupakan daftar implementasi antarmuka dari system mobile penelitian ini.
Tabel 4.6 Implementasi Antarmuka Sistem Mobile
No Nama Antarmuka Deskripsi Nama File
1 Halaman Login Menampilkan halaman login pengguna.
FragmentFront.java
2 Halaman Utama Menampilkan halaman utama aplikasi.
ActivityMain.java
3 Halaman Daftar Penugasan
Menampilkan halaman yang menampilkan daftar penugasan driver.
FragmentMainSub1.java
4 Halaman Navigasi Driver
Menampilkan halaman yang menampilkan menu navigasi driver.
FragmentB.java
5 Halaman
Pelacakan Driver
Menampilkan halaman yang menampilkan menu pelacakan driver.
FragmentC.java
6 Halaman
Konfirmasi TPS
Menampilkan halaman yang menampilkan menu
No Nama Antarmuka Deskripsi Nama File untuk konfirmasi pengangkutan di TPS 7 Halaman Konfirmasi TPA Menampilkan halaman yang menampilkan menu untuk konfirmasi pengangkutan sampah ke TPA.
FragmentD.java
Berikut pada tabel 4.7 adalah implementasi antarmuka system web dari penelitian ini.
Tabel 4.7 Implementasi Antarmuka Sistem Web
No Nama Antarmuka Deskripsi Nama File
1 Halaman Login Menampilkan halaman
login pengguna. Front.php 2 Halaman Dashboard Menampilkan halaman utama web. Dashboard.php
3 Halaman Akun Menampilkan halaman akun.
Akun.php
4 Halaman TPS Menampilkan halaman TPS.
TPS.php
5 Halaman TPA Menampilkan halaman TPA. TPA.php 6 Halaman Kendaraan Menampilkan halaman Kendaraan. Kendaraan.php
7 Halaman Crew Menampilkan halaman Crew.
Anggota.php
8 Halaman SPJ Menampilkan halaman SPJ.
4.1.7 Implementasi Teknologi
Implementasi teknologi mempunyai tujuan untuk menerapkan teknologi-teknologi untuk membantu pengguna dalam pengunaan aplikasi. Teknologi berperan penting untuk mempermudah pengguna serta menginkatkan keamanan pada aplikasi. Berikut merupakan implementasi teknologi dari penelitian ini.
1. Google Maps API
Berikut adalah implementasi Google Maps API pada aplikasi.
1. public AssistantMapsLocation(Context context, MapFragment mapFragment) {
2. this.context = context;
3.
4. //google map request
5. mapFragment.getMapAsync(this);
6. mGoogleApiClient = new GoogleApiClient.Builder(context)
7. .addApi(LocationServices.API) 8. .addConnectionCallbacks(this) 9. .addOnConnectionFailedListener(this) 10. .build(); 11. mGoogleApiClient.connect(); 12.
13. mLocationManager = (LocationManager) context.getSystemService(Co ntext.LOCATION_SERVICE);
14.
15.
16. Criteria criteria = new Criteria();
17. provider = mLocationManager.getBestProvider(criteria, false);
18.
19.
20. if (ActivityCompat.checkSelfPermission(context, Manifest.permiss ion.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && Activi tyCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_ LOCATION) != PackageManager.PERMISSION_GRANTED) { 21. return; 22. } 23. locationCache = mLocationManager.getLastKnownLocation(provider); 24.
25. //builder alert dialog
26. AlertDialog.Builder builder = new AlertDialog.Builder(context);
27. builder.setCancelable(false);
28. builder.setMessage("GPS tidak tersedia, silahkan aktifkan GPS.") ;
29. builder.setPositiveButton("Aktifkan",null);
30.
31. }
32.
33. //location request
34. @Override
35. public void onConnected(@Nullable Bundle bundle) {
37. mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCUR ACY);
38. mLocationRequest.setInterval(2000 * 10);
39.
40. if (ActivityCompat.checkSelfPermission(context, Manifest.permiss ion.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && Activi tyCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_ LOCATION) != PackageManager.PERMISSION_GRANTED) {
41. return;
42. }
43. LocationServices.FusedLocationApi.requestLocationUpdates(mGoogle ApiClient, mLocationRequest, this);
2. Google Maps Direction API
Berikut adalah implementasi Google Maps Direction API pada aplikasi.
1. //direction api request
2. public interface AssitantGoogleDirectionInterface{
3. @GET("/maps/api/directions/json")
4. Call<ResponseBody> draw(@Query("origin") String origin,
5. @Query("destination") String dest ination,
6. @Query("waypoints") String waypoi nts,
7. @Query("mode") String mode,
8. @Query("key") String key);
9. }
10.
11.
12. Callback callback;
13. public interface Callback{
14. void polyline(List<LatLng> line);
15. void distance(double distance,String textDistance);
16. }
17.
18. public void draw(LatLng a, LatLng b, List<LatLng> waypoints, Callback ca llback){
19. this.callback = callback;
20. String start = a.latitude+","+a.longitude;
21. String finish = b.latitude+","+b.longitude;
22. get().draw(start,finish,waypontToString(waypoints),"driving","AIzaSy DZ1o0dmokmzcROPZ7ciNO8PsfI0Zv_vPI")
23. .enqueue(new CloudNetwork.CallbackProgress<ResponseBody>(con text, new retrofit2.Callback<ResponseBody>() {
24. @Override
25. public void onResponse(Call<ResponseBody> call, Response <ResponseBody> response) { 26. try { 27. responseBody = response.body().string(); 28. buildDistance(); 29. buildPolyline(); 30. } catch (IOException e) { 31. e.printStackTrace(); 32. } 33. 34. 35. } 36. 37. @Override
38. public void onFailure(Call<ResponseBody> call, Throwable t) { 39. 40. } 41. })); 42. } 43.
44. //convert waypoint to latlong
45. private String waypontToString(List<LatLng> list ){
46. if(list== null) new ArrayList<LatLng>();
47. StringBuilder str = new StringBuilder();
49. for (int i=0;i<list.size();i++){ 50. str.append(list.get(i).latitude); 51. str.append(","); 52. str.append(list.get(i).longitude); 53. if(i != list.size()-1) str.append("|"); 54. } 55. } 56. return str.toString(); 57. } 58.
59. private List<LatLng> decodePoly(String encoded) {
60.
61. List<LatLng> poly = new ArrayList<LatLng>();
62. int index = 0, len = encoded.length();
63. int lat = 0, lng = 0;
64.
65. while (index < len) {
66. int b, shift = 0, result = 0;
67. do {
68. b = encoded.charAt(index++) - 63;
69. result |= (b & 0x1f) << shift;
70. shift += 5;
71. } while (b >= 0x20);
72. int dlat = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
73. lat += dlat; 74. 75. shift = 0; 76. result = 0; 77. do { 78. b = encoded.charAt(index++) - 63;
79. result |= (b & 0x1f) << shift;
80. shift += 5;
81. } while (b >= 0x20);
82. int dlng = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
83. lng += dlng;
84.
85. LatLng p = new LatLng( (((double) lat / 1E5)),
86. (((double) lng / 1E5) )); 87. poly.add(p); 88. } 89. 90. return poly; 91. } 92. 93. //build polyline
94. private void buildPolyline(){
95. try {
96.
97. JSONObject jsonObject = new JSONObject(responseBody);
98. JSONArray routeArray = jsonObject.getJSONArray("routes");
99. JSONObject routes = routeArray.getJSONObject(0);
100. JSONObject overviewPolylines = routes.getJSONObject("over view_polyline");
101. String encodedString = overviewPolylines.getString("point s");
102. List<LatLng> list = decodePoly(encodedString);
103.
3. Firebase Cloud Messaging
Berikut adalah implementasi Firebase Cloud Messaging pada aplikasi.
1. public class AssistantFCM {
2.
3. //fcm request
4. public static final String AUTHORIZATION ="key=AAAAKJ7oeyE:APA91bElW
JI-FjbgJaDQviNOfBj68I2-2veOrEF-2Tx4dQoEwetiC7g0vLtZy1ieqbxjwKFhV-M41w1D6KK4PM14m7vX1S7jMjVy9gwmx4e05_uiQipGEw3l1nPYHCHnoYX3ZTO2Uugj";
5. public static final String CONTENT_TYPE = "application/json";
6.
7. public final static String BASE_URL = "https://fcm.googleapis.com";
8.
9.
10.
11. String responseBody;
12.
13. private static Retrofit retrofit = null;
14.
15.
16. public AssistantFCM(){
17.
18. }
19. public AssistantFCMInterface get() {
20.
21. retrofit = new Retrofit.Builder()
22. .baseUrl(BASE_URL)
23. .addConverterFactory(ScalarsConverterFactory.create())
24. .addConverterFactory(GsonConverterFactory.create())
25. .build();
26.
27. return retrofit.create(AssistantFCMInterface.class);
28. }
29.
30.
31. public interface AssistantFCMInterface{
32. @POST("/fcm/send")
33. Call<Void> serviceSend(@Header("Authorization") String auth,
34. @Header( "Content-Type") String ct,
35. @Body String json);
36.
37.
38. }
39.
40. //build message
41. public static String buildMessage(String token, String stringTitle, String stringBody) throws JSONException {
42. JSONObject object = new JSONObject();
43. object.put("body",stringBody);
44. object.put("title",stringTitle);
45.
46.
47. JSONObject objectContainer = new JSONObject();
48. objectContainer.put("to",""+token);
49. objectContainer.put("notification",object);
51. return objectContainer.toString();
52.
53. }
54. }
55. public class MyFirebaseMessagingService extends FirebaseMessagingService {
56. private static final String TAG = "MyFirebaseMsgService";
57. @Override
58. public void onMessageReceived(RemoteMessage remoteMessage) {
59. Log.d(TAG, "From: " + remoteMessage.getFrom());
60. 61. 62. if(new SessionAccount(getApplicationContext()).isThere()){ 63. if(new SessionAccount(getApplicationContext()).getTypeAccoun t().contentEquals(remoteMessage.getNotification().getTitle())){ 64. showNotification(remoteMessage.getNotification().getBody ()); 65. } 66. } 67. } 68. 69. //notification sending
70. private void showNotification(String messageBody) {
71. Intent intent = new Intent(this, ActivityMain.class);
72. intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
73. PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
74. PendingIntent.FLAG_ONE_SHOT);
75. String channelId = "fcm_default_channel";
76.
77. NotificationCompat.Builder notificationBuilder =
78. new NotificationCompat.Builder(this, channelId)
79. .setSmallIcon(R.drawable.ic_notif_br)
80. .setColor(Color.parseColor("#4285F4"))
81. .setContentTitle("Bandung Resik")
82. .setContentText(messageBody)
83. .setStyle(new NotificationCompat.BigTextStyle(). bigText("Bandung Resik"))
84. .setStyle(new NotificationCompat.BigTextStyle(). bigText(messageBody)) 85. .setAutoCancel(false) 86. .setDefaults(DEFAULT_ALL) 87. .setDefaults(DEFAULT_SOUND) 88. .setPriority(NotificationManager.IMPORTANCE_HIGH ) 89. .setContentIntent(pendingIntent); 90. 91. NotificationManager notificationManager = 92. (NotificationManager) getSystemService(Context.NOTIFICAT ION_SERVICE); 93.
94. notificationManager.notify(0 /* ID of notification */, notificat ionBuilder.build());
95. }
4. Geofence
Berikut adalah implementasi Geofence pada aplikasi.
1. public class AssistantGeofenceService extends IntentService{
2. final static String TAG = "AssistantGeofenceService";
3. public AssistantGeofenceService() { 4. super("AssistantGeofenceService"); 5. } 6. 7. 8. @SuppressLint("LongLogTag") 9. @Override
10. protected void onHandleIntent(@Nullable Intent intent) {
11. GeofencingEvent event = GeofencingEvent.fromIntent(intent);
12.
13. //geofence setup
14. if (event != null) {
15. if (event.hasError()) {
16. Log.i(TAG,"ERROR :"+event.getErrorCode());
17. } else {
18. int transition = event.getGeofenceTransition();
19. if (transition == Geofence.GEOFENCE_TRANSITION_ENTER || 20. transition == Geofence.GEOFENCE_TRANSITION_DWELL || 21. transition == Geofence.GEOFENCE_TRANSITION_EXIT) { 22.
23. for (Geofence geofence : event.getTriggeringGeofence s()) { 24. onEnteredGeofences(geofence.getRequestId(),trans ition); 25. } 26. 27. } 28. } 29. } 30. } 31. 32. //geofence event
33. private void onEnteredGeofences(String requestId, int transition) {
34. EventBus.getDefault().post(new MessageEvent(requestId,transition ));
35. Log.i(TAG,"onEnteredGeofences "+requestId);
36. }
37.
38. public class MessageEvent {
39.
40. public String requestId;
41. public int transition;
42.
43.
44. public MessageEvent(String requestId,int transition) {
45. this.requestId = requestId;
46. this.transition = transition;
47. }
49.
50. }
51. }
5. QR Code
Berikut adalah implementasi QR Code pada aplikasi.
1. @Override
2. protected void onCreate(@Nullable Bundle savedInstanceState) {
3. super.onCreate(savedInstanceState);
4.
5. //declar typeface
6. typefaceRegular = Typeface.createFromAsset(getAssets(), "roboto_ regular.ttf");
7. typefaceBold = Typeface.createFromAsset(getAssets(), "roboto_bol d.ttf");
8.
9.
10. //declar canvas
11. canvasCoordinator = new CanvasCoordinator(this);
12. canvasAppBar = new CanvasAppBar(this);
13. canvasToolbar = new CanvasToolbar(this);
14. canvasWall = new CanvasWall(this);
15. 16. //order canvas 17. canvasAppBar.addView(canvasToolbar); 18. canvasCoordinator.addView(canvasAppBar); 19. canvasCoordinator.addView(canvasWall); 20. 21. //QRCode setup 22. buildCanvas(); 23. 24. Bundle b = getIntent().getExtras(); 25. if(b!=null){ 26. PK_SPJ = b.getInt("pk_spj"); 27. FCM = b.getString("fcm");
28. NO_SPJ = b.getString("no_spj");
29. FROM = b.getString("from");
30.
31. }
32. mScannerView = new ZXingScannerView(this);
33. mScannerView.setLayoutParams(new RelativeLayout.LayoutParams(Rel ativeLayout.LayoutParams.MATCH_PARENT,RelativeLayout.LayoutParams.MATCH_ PARENT));
34.
35. List<BarcodeFormat> barcodeFormats = new ArrayList<BarcodeFormat >(); 36. barcodeFormats.add(BarcodeFormat.QR_CODE); 37. mScannerView.setFormats(barcodeFormats); 38. canvasWall.addView(mScannerView); 39. 40. 41. } 42.
43. private void buildCanvas() {
45. canvasToolbar.setTitle("Verifikasi Kode"); 46. 47. canvasToolbar.setTypeface(typefaceRegular); 48. canvasToolbar.setContentInsetStartWithNavigation(0); 49. canvasToolbar.setContentInsetsAbsolute(0,0); 50. canvasToolbar.setContentInsetsRelative(0,0); 51. 52. canvasWall.setId(R.id.fragment);
53. CoordinatorLayout.LayoutParams canvasWallLayout = new Coordinato rLayout.LayoutParams(CoordinatorLayout.LayoutParams.MATCH_PARENT,
54. CoordinatorLayout.LayoutParams.MATCH_PARENT);
55. canvasWallLayout.setBehavior(new AppBarLayout.ScrollingViewBehav ior()); 56. 57. canvasWall.setLayoutParams(canvasWallLayout); 58. 59. 60. canvasToolbar.setTypeface(typefaceBold); 61. 62. setSupportActionBar(canvasToolbar); 63. getSupportActionBar().setDisplayShowHomeEnabled(true); 64. getSupportActionBar().setDisplayHomeAsUpEnabled(true); 65. 66. 67. setContentView(canvasCoordinator); 68. 69. 70. 71. } 72. 73. 74. @Override
75. public boolean onOptionsItemSelected(MenuItem item) {
76. if (item.getItemId() == android.R.id.home) {
77. finish();
78. }
79. return super.onOptionsItemSelected(item);
80. }
81.
82. @Override
83. public void onResume() {
84. super.onResume();
85. mScannerView.setResultHandler(this); // Register ourselves as a handler for scan results.
86. mScannerView.startCamera(); // Start camera on resume
87. }
88.
89. @Override
90. public void onPause() {
91. super.onPause();
92. mScannerView.stopCamera(); // Stop camera on pause
93. }
94.
95. public void theFinish(){
96. Intent intent = new Intent();
97. intent.putExtra("pk_spj",PK_SPJ);
98. intent.putExtra("fcm",FCM);
99. intent.putExtra("no_spj",NO_SPJ);
100. intent.putExtra("from",FROM);
101. setResult(RESULT_OK,intent);
103. }
104. public void theFinishFail(){
105. setResult(3);
106. finish();
107. }
108. @Override
109. public void handleResult(Result rawResult) {
110. // Do something with the result here
111. 112. 113. if(md5(NO_SPJ).toUpperCase().contentEquals(rawResult.getTe xt().toString().toUpperCase())){ 114. theFinish(); 115. }else{ 116. theFinishFail(); 117. } 118. 119. 120.
121. // If you would like to resume scanning, call this method below:
122. // mScannerView.resumeCameraPreview(this);
123. }
124. Toast toast = null;
125. public void showToast(String text){
126. if(toast!=null){
127. toast.cancel();
128. }
129. toast = Toast.makeText(ActivityF.this,text,Toast.LENGTH_L ONG);
130. toast.show();
131. }
132.
133. public static final String md5(final String s) {
134. final String MD5 = "MD5";
135. try {
136. // Create MD5 Hash
137. MessageDigest digest = java.security.MessageDigest
138. .getInstance(MD5);
139. digest.update(s.getBytes());
140. byte messageDigest[] = digest.digest();
141.
142. // Create Hex String
143. StringBuilder hexString = new StringBuilder();
144. for (byte aMessageDigest : messageDigest) {
145. String h = Integer.toHexString(0xFF & aMessageDig est); 146. while (h.length() < 2) 147. h = "0" + h; 148. hexString.append(h); 149. } 150. return hexString.toString(); 151. 152. } catch (NoSuchAlgorithmException e) { 153. e.printStackTrace(); 154. } 155. return ""; 156. } 157. }
4.2 Pengujian Sistem
Pengujian merupakan upaya mencari kesalahan atau kekurangan pada perangkat lunak yang lunak yang akan diuji. Pengujian digunakan untuk mengetahui apakah perangkat lunak yang dibangun sudah memenuhi kriteria sesuai dengan tujuan perancangan perangkat lunak tersebut. Metode pengujian ini terdiri dari dua tahap yaitu pengujian alpha dan beta.
4.2.1 Pengujian Alpha
Pengujian Alpha merupakan pengujian fungsional diadakan di lingkungan pembangun oleh sekumpulan pengguna yang akan menggunakan perangkat lunaknya. Pihak pembangun mendampingi serta mencatat kesalahan-kesalahan maupun permasalahan yang dirasakan oleh pengguna. Pengujian alpha yang dilakukan pada perangkat lunak dibagi menjadi beberapa bagian, yaitu skenario pengujian, kasus, hasil pengujian, dan kesimpulan pengujian.
4.2.1.1 Skenario Pengujian
Skenario pengujian memaparkan fungsional-fungsional perangkat lunak yang akan diuji. Adapun skenario pengujian fungsional yang dilakukan terdiri dari dua buah sistem yaitu web dan mobile.
1. Skenario Pengujian Sistem Web
Pada pengujian ini semua fitur pada sistem web yang dibangun akan diuji menggunakan metode black box. Berikut pada tabel 4.8 adalah skenario pengujian sistem web yang akan diuji.
Tabel 4.8 Skenario Pengujian Sistem Web
Nama Fungsional Poin Pengujian Jenis Pengujian Login Admin Input data login Blackbox
Validasi data login Blackbox
Tambah Akun Input data user Blackbox
Validasi data input Blackbox
Nama Fungsional Poin Pengujian Jenis Pengujian Validasi data input Blackbox
Tambah TPS Input data TPS Blackbox
Validasi data input Blackbox
Ubah TPS Input data TPS Blackbox
Validasi data input Blackbox
Tambah TPA Input data TPA Blackbox
Validasi data input Blackbox
Ubah TPA Input data TPA Blackbox
Validasi data input Blackbox
Tambah Kru Input data Kru Blackbox
Validasi data input Blackbox
Ubah Kru Input data Kru Blackbox
Validasi data input Blackbox
Tambah Kendaraan Input data Kendaraan Blackbox
Validasi data input Blackbox
Ubah Kendaraan Input data Kendaraan Blackbox
Validasi data input Blackbox
2. Skenario Pengujian Sistem Mobile
Pada pengujian ini semua fitur pada perangkat lunak mobile yang dibangun akan diuji menggunakan metode black box. Berikut pada tabel 4.9 adalah skenario pengujian sistem mobile yang akan diuji.
Tabel 4.9 Skenario Pengujian Sistem Mobile
Nama Fungsional Poin Pengujian Jenis Pengujian Login KBO Input data login KBO Blackbox
Validasi data login KBO Blackbox
Tambah SPJ Input data SPJ Blackbox
Nama Fungsional Poin Pengujian Jenis Pengujian Login Driver Input data login Driver Blackbox
Validasi data login
Driver
Blackbox
Login Petugas TPS Input data login Petugas TPS
Blackbox
Validasi data login
Petugas TPS
Blackbox
Konfirmasi
Pengangkutan di TPS
Input data pengakutan di TPS
Blackbox
Konfirmasi data pengangkutan di TPS
Blackbox
Login Petugas TPA Input data login Petugas TPS
Blackbox
Validasi data login
Petugas TPS
Blackbox
Konfirmasi
Pengangkutan ke TPA
Input data pengakutan ke TPA
Blackbox
Konfirmasi data pengangkutan ke TPA
Blackbox
4.2.1.2 Kasus dan Hasil Pengujian
Kasus dan hasil pengujian berisi kasus-kasus yang dapat ditemui dalam penggunaan setiap fungsional sistem serta hasil pengujian dari kasus-kasus tersebut. Pengujian ini dilakukan secara black box dengan hanya memperhatikan masukan ke dalam sistem dan keluaran dari sistem tersebut. Berikut adalah pemaparan dari setiap poin pengujian yang terdapat pada skenario pengujian sistem
a. Kasus dan Hasil Pengujian Sistem Web
Pengujian ini berisi kasus dan hasil pengujian dari scenario pengujian pada sistem web. Berikut adalah pemaparan setiap poin pengujian fungsional sistem
web.
1. Pengujian Login Admin
Berikut pada Tabel 4.10 adalah hasil pengujian fungsionalitas login admin pada kasus data benar, data salah, dan data kosong.
Tabel 4.10 Pengujian Login Admin Kasus dan Hasil Uji (Data Benar)
Data Masukan Harapan Pengamatan Kesimpulan Username: admin Password: 12345 Masuk ke halaman utama Berhasil masuk ke halaman utama ( ) Diterima ( ) Ditolak
Kasus dan Hasil Uji (Data Salah)
Data Masukan Harapan Pengamatan Kesimpulan Username: admin
Password: 123
Gagal masuk ke halaman utama
Login gagal dan
tetap di halaman
login
( ) Diterima ( ) Ditolak
Kasus dan Hasil Uji (Data Kosong)
Data Masukan Harapan Pengamatan Kesimpulan Username: admin
Password:
Gagal masuk ke halaman utama
Login gagal dan
tetap di halaman
login
( ) Diterima ( ) Ditolak
2. Pengujian Tambah Akun
Berikut pada Tabel 4.11 adalah hasil pengujian fungsionalitas tambah akun pada kasus data benar, dan data kosong.
Tabel 4.11 Pengujian Tambah Akun Kasus dan Hasil Uji (Data Benar)
Data Masukan Harapan Pengamatan Kesimpulan Nama: Hangga Saputra Alamat : Bandung Telepon: 089699490069 Username: hangga Password: 12345 Berhasil menambahkah akun Berhasil menambahkan akun, data baru muncul
( ) Diterima ( ) Ditolak
Kasus dan Hasil Uji (Data Kosong)
Data Masukan Harapan Pengamatan Kesimpulan Nama: Hangga Saputra Alamat : Bandung Telepon: 089699490069 Username: hangga Password: Gagal menambahkan akun Penambahan gagal, tidak muncul data baru
( ) Diterima ( ) Ditolak
3. Pengujian Ubah Akun
Berikut pada Tabel 4.12 adalah hasil pengujian fungsionalitas ubah akun pada kasus data benar, dan data kosong.
Tabel 4.12 Pengujian Ubah Akun Kasus dan Hasil Uji (Data Benar)
Data Masukan Harapan Pengamatan Kesimpulan Nama: Hangga Saputra Alamat : Bandung Telepon: 089699490069 Username: hangga Password: 12346 Berhasil mengubah data akun Data akun berubah sesuai masukan ( ) Diterima ( ) Ditolak
Kasus dan Hasil Uji (Data Kosong)
Data Masukan Harapan Pengamatan Kesimpulan Nama: Hangga Saputra Alamat : Bandung Telepon: 089699490069 Username: hangga Password: Gagal mengubah akun
Data akun tidak berubah
( ) Diterima ( ) Ditolak
4. Pengujian Tambah TPS
Berikut pada Tabel 4.13 adalah hasil pengujian fungsionalitas tambah TPS pada kasus data benar, dan data kosong.
Tabel 4.13 Pengujian Tambah TPS Kasus dan Hasil Uji (Data Benar)
Data Masukan Harapan Pengamatan Kesimpulan Nama TPS: Orari Alamat : Leumah Neundeut Wilayah: Bandung Utara Kecamatan: Sukasari Latitude: -6.88077 Longitude: 107.579187 Berhasil menambahkah TPS Berhasil menambahkan TPS, data baru muncul ( ) Diterima ( ) Ditolak
Kasus dan Hasil Uji (Data Kosong)
Data Masukan Harapan Pengamatan Kesimpulan Nama TPS: Orari Alamat : Leumah Neundeut Wilayah: Bandung Utara Kecamatan: Sukasari Latitude: -6.88077 Longitude: Gagal menambahkan TPS Penambahan gagal, tidak muncul data baru
( ) Diterima ( ) Ditolak
5. Pengujian Ubah TPS
Berikut pada Tabel 4.14 adalah hasil pengujian fungsionalitas ubah TPS pada kasus data benar, dan data kosong.
Tabel 4.14 Pengujian Ubah TPS Kasus dan Hasil Uji (Data Benar)
Data Masukan Harapan Pengamatan Kesimpulan Nama TPS: Orari Alamat : Leumah Neundeut Wilayah: Bandung Utara Kecamatan: Sukasari Latitude: -6.88078 Longitude: 107.579187 Berhasil mengubah TPS Data berubah sesuai data masukan ( ) Diterima ( ) Ditolak
Kasus dan Hasil Uji (Data Kosong)
Data Masukan Harapan Pengamatan Kesimpulan Nama TPS: Orari Alamat : Leumah Neundeut Wilayah: Bandung Utara Kecamatan: Sukasari Latitude: -6.88077 Longitude: Gagal mengubah data TPS Penambahan gagal, tidak muncul data baru
( ) Diterima ( ) Ditolak
6. Pengujian Tambah TPA
Berikut pada Tabel 4.15 adalah hasil pengujian fungsionalitas tambah TPA pada kasus data benar, dan data kosong.
Tabel 4.15 Pengujian Tambah TPA Kasus dan Hasil Uji (Data Benar)
Data Masukan Harapan Pengamatan Kesimpulan Nama TPA: Orari
Alamat : Sarimukti, Cipatat, Kab. Bandung Barat Latitude: -6.80039 Longitude: 107.348716 Berhasil menambahkah TPA Berhasil menambahkan TPA, data baru muncul
( ) Diterima ( ) Ditolak
Kasus dan Hasil Uji (Data Kosong)
Data Masukan Harapan Pengamatan Kesimpulan Nama TPA: Orari
Alamat : Sarimukti, Cipatat, Kab. Bandung Barat Latitude: -6.80039 Longitude: Gagal menambahkan TPA Penambahan gagal, tidak muncul data baru
( ) Diterima ( ) Ditolak
7. Pengujian Ubah TPA
Berikut pada Tabel 4.16 adalah hasil pengujian fungsionalitas ubah TPA pada kasus data benar, dan data kosong.
Tabel 4.16 Pengujian Ubah TPA Kasus dan Hasil Uji (Data Benar)
Data Masukan Harapan Pengamatan Kesimpulan Nama TPA: Orari
Alamat : Sarimukti, Cipatat, Kab. Bandung Barat Latitude: -6.80039 Longitude: 107.348714 Berhasil mengubah TPA Data berubah sesuai inputan ( ) Diterima ( ) Ditolak
Kasus dan Hasil Uji (Data Kosong)
Data Masukan Harapan Pengamatan Kesimpulan Nama TPA: Orari
Alamat : Sarimukti, Cipatat, Kab. Bandung Barat Latitude: -6.80039 Longitude: Gagal mengubah TPA
Data TPA tidak berubah
( ) Diterima ( ) Ditolak
8. Pengujian Tambah Kru
Berikut pada Tabel 4.17 adalah hasil pengujian fungsionalitas tambah kru pada kasus data benar, dan data kosong.
Tabel 4.17 Pengujian Tambah Kru Kasus dan Hasil Uji (Data Benar)
Data Masukan Harapan Pengamatan Kesimpulan Nama: Agus Alamat : Bandung Telepon : 085221434323 Berhasil menambahkah Kru Berhasil menambahkan Kru, data baru muncul
( ) Diterima ( ) Ditolak
Kasus dan Hasil Uji (Data Kosong)
Data Masukan Harapan Pengamatan Kesimpulan Nama: Agus Alamat : Telepon : Gagal menambahkan Kru Penambahan gagal, tidak muncul data baru
( ) Diterima ( ) Ditolak
9. Pengujian Ubah Kru
Berikut pada Tabel 4.18 adalah hasil pengujian fungsionalitas ubah kru pada kasus data benar, dan data kosong.
Tabel 4.18 Pengujian Ubah Kru Kasus dan Hasil Uji (Data Benar)
Data Masukan Harapan Pengamatan Kesimpulan Nama: Agus Alamat : Bandung Telepon : 085221434323 Berhasil menambahkah Kru Berhasil menambahkan Kru, data baru muncul
( ) Diterima ( ) Ditolak
Kasus dan Hasil Uji (Data Kosong)
Data Masukan Harapan Pengamatan Kesimpulan Nama:
Alamat : Telepon :
Gagal mengubah Kru
Data Kru tidak brubah
( ) Diterima ( ) Ditolak
10. Pengujian Tambah Kendaraan
Berikut pada Tabel 4.19 adalah hasil pengujian fungsionalitas tambah kendaraan pada kasus data benar, dan data kosong.
Tabel 4.19 Pengujian Tambah Kendaraan Kasus dan Hasil Uji (Data Benar)
Data Masukan Harapan Pengamatan Kesimpulan Merk: Hino Tipe: LH No TNKB: D8242C Berhasil menambahkah Kendaraan Berhasil menambahkan Kendaraan, data baru muncul ( ) Diterima ( ) Ditolak
Kasus dan Hasil Uji (Data Kosong)
Data Masukan Harapan Pengamatan Kesimpulan Merk: Hino Tipe: LH No TNKB: Gagal menambahkan Kendaraan Penambahan gagal, tidak muncul data baru
( ) Diterima ( ) Ditolak
11. Pengujian Ubah Kendaraan
Berikut pada Tabel 4.20 adalah hasil pengujian fungsionalitas ubah kendaraan pada kasus data benar, dan data kosong.
Tabel 4.20 Pengujian Ubah Kendaraan Kasus dan Hasil Uji (Data Benar)
Data Masukan Harapan Pengamatan Kesimpulan Merk: Hino Tipe: LH No TNKB: D8242B Berhasil mengubah Kendaraan Data berubah sesuai masukan ( ) Diterima ( ) Ditolak
Kasus dan Hasil Uji (Data Kosong)
Data Masukan Harapan Pengamatan Kesimpulan Merk: Hino Tipe: LH No TNKB: Gagal mengubah Kendaraan Data tidak berubah ( ) Diterima ( ) Ditolak
b. Kasus dan Hasil Pengujian Sistem Mobile
Pengujian ini berisi kasus dan hasil pengujian dari scenario pengujian pada sistem mobile. Berikut adalah pemaparan setiap poin pengujian fungsional sistem
mobile.
1. Pengujian Login KBO
Berikut pada Tabel 4.21 adalah hasil pengujian fungsionalitas login KBO pada kasus data benar, data salah, dan data kosong.
Tabel 4.21 Pengujian Login KBO Kasus dan Hasil Uji (Data Benar)
Data Masukan Harapan Pengamatan Kesimpulan Username: hangga Password: 12345 Masuk ke halaman utama Berhasil masuk ke halaman utama ( ) Diterima ( ) Ditolak
Kasus dan Hasil Uji (Data Salah)
Data Masukan Harapan Pengamatan Kesimpulan Username:
hangga
Password: 1234
Gagal masuk ke halaman utama
Login gagal dan
tetap di halaman
login
( ) Diterima ( ) Ditolak
Kasus dan Hasil Uji (Data Kosong)
Data Masukan Harapan Pengamatan Kesimpulan Username:
hangga Password:
Gagal masuk ke halaman utama
Login gagal dan tetap di halaman login
( ) Diterima ( ) Ditolak
2. Pengujian Tambah SPJ
Berikut pada Tabel 4.22 adalah hasil pengujian fungsionalitas tambah SPJ pada kasus data benar, dan data kosong.
Tabel 4.22 Pengujian Tambah SPJ Kasus dan Hasil Uji (Data Benar)
Data Masukan Harapan Pengamatan Kesimpulan TPS: Leumah Neundeut TPA: Sarimukti Driver: Andik Kru: Agus, Ahmad, Asep Kendaraan: D8242C Berhasil tambah SPJ SPJ baru berhasil dibuat dan muncul di daftar SPJ
( ) Diterima ( ) Ditolak
Kasus dan Hasil Uji (Data Kosong)
Data Masukan Harapan Pengamatan Kesimpulan TPS: Leumah Neundeut TPA: Sarimukti Driver: Andik Kru: Agus, Ahmad, Asep Kendaraan:
Gagal tambah SPJ Muncul pesan data tidak lengkap, SPJ gagal dibuat
( ) Diterima ( ) Ditolak
3. Pengujian Login Driver
Berikut pada Tabel 4.23 adalah hasil pengujian fungsionalitas login driver pada kasus data benar, data salah, dan data kosong.
Tabel 4.23 Pengujian Login Driver Kasus dan Hasil Uji (Data Benar)
Data Masukan Harapan Pengamatan Kesimpulan Username: andik Password: 12345 Masuk ke halaman utama Berhasil masuk ke halaman utama ( ) Diterima ( ) Ditolak
Kasus dan Hasil Uji (Data Salah)
Data Masukan Harapan Pengamatan Kesimpulan Username: andik
Password: 1234
Gagal masuk ke halaman utama
Login gagal dan
tetap di halaman
login
( ) Diterima ( ) Ditolak
Kasus dan Hasil Uji (Data Kosong)
Data Masukan Harapan Pengamatan Kesimpulan Username:
hangga Password:
Gagal masuk ke halaman utama
Login gagal dan
tetap di halaman
login
( ) Diterima ( ) Ditolak
4. Pengujian Login Petugas TPS
Berikut pada Tabel 4.24 adalah hasil pengujian fungsionalitas login petugas TPS pada kasus data benar, data salah, dan data kosong.
Tabel 4.24 Pengujian Login Petugas TPS Kasus dan Hasil Uji (Data Benar)
Data Masukan Harapan Pengamatan Kesimpulan Username: aan Password: 12345 Masuk ke halaman utama Berhasil masuk ke halaman utama ( ) Diterima ( ) Ditolak
Kasus dan Hasil Uji (Data Salah)
Data Masukan Harapan Pengamatan Kesimpulan Username: aan
Password: 1234
Gagal masuk ke halaman utama
Login gagal dan
tetap di halaman
login
( ) Diterima ( ) Ditolak
Kasus dan Hasil Uji (Data Kosong)
Data Masukan Harapan Pengamatan Kesimpulan Username:
hangga Password:
Gagal masuk ke halaman utama
Login gagal dan
tetap di halaman
login
( ) Diterima ( ) Ditolak
5. Pengujian Konfirmasi Pengangkutan di TPS
Berikut pada Tabel 4.25 adalah hasil pengujian fungsionalitas konfirmasi pengangkutan di TPS pada kasus data benar, dan data kosong.
Tabel 4.25 Pengujian Konfirmasi Pengangkutan di TPS Kasus dan Hasil Uji (Data Benar)
Data Masukan Harapan Pengamatan Kesimpulan Status: Sisa Keterangan: 1 rit Konfirmasi berhasil Konfirmasi berhasil, staus diteruskan ke TPA ( ) Diterima ( ) Ditolak
Kasus dan Hasil Uji (Data Kosong)
Data Masukan Harapan Pengamatan Kesimpulan Status:
Keterangan:
Konfirmasi gagal Muncul pesan data tidak lengkap
( ) Diterima ( ) Ditolak
6. Pengujian Login Petugas TPA
Berikut pada Tabel 4.26 adalah hasil pengujian fungsionalitas login petugas TPA pada kasus data benar, data salah, dan data kosong.
Tabel 4.26 Pengujian Login Petugas TPA Kasus dan Hasil Uji (Data Benar)
Data Masukan Harapan Pengamatan Kesimpulan Username: sulaeman Password: 12345 Masuk ke halaman utama Berhasil masuk ke halaman utama ( ) Diterima ( ) Ditolak
Kasus dan Hasil Uji (Data Salah)
Data Masukan Harapan Pengamatan Kesimpulan Username:
sulaeman Password: 1234
Gagal masuk ke halaman utama
Login gagal dan
tetap di halaman
login
( ) Diterima ( ) Ditolak
Kasus dan Hasil Uji (Data Kosong)
Data Masukan Harapan Pengamatan Kesimpulan Username:
hangga Password:
Gagal masuk ke halaman utama
Login gagal dan
tetap di halaman
login
( ) Diterima ( ) Ditolak
7. Pengujian Konfirmasi Pengangkutan ke TPA
Berikut pada Tabel 4.27 adalah hasil pengujian fungsionalitas konfirmasi penangkutan ke TPA pada kasus data benar, dan data kosong.
Tabel 4.27 Pengujian Konfirmasi Pengangkutan ke TPA Kasus dan Hasil Uji (Data Benar)
Data Masukan Harapan Pengamatan Kesimpulan Berat: 10 ton Konfirmasi
berhasil Konfirmasi berhasil, status pengangkutan selesai ( ) Diterima ( ) Ditolak
Kasus dan Hasil Uji (Data Kosong)
Data Masukan Harapan Pengamatan Kesimpulan Berat: Konfirmasi gagal Muncul pesan
data tidak lengkap
( ) Diterima ( ) Ditolak
4.2.1.3 Kesimpulan Pengujian Alpha
Berdasarkan hasil pengujian perangkat lunak yang dilakukan, maka dapat disimpulkan bahwa aplikasi yang telah dibangun sudah baik. Aplikasi dapat berjalan sesuai harapan baik dari segi validasi maupun proses penanganan kesalahan.
4.2.2 Pengujian Beta
Pengujian beta merupakan pengujian yang dilaksanakan oleh pengguna yang nantinya akan menggunakan sistem. Hal ini dilaksanakan untuk bisa mengetahui sampai mana aplikasi yang dibangun bisa meringankan dan menyelesaikan masalah yang telah dijelaskan pada identifikasi masalah.
4.2.2.1 Skenario Pengujian Beta
Pada pengujian beta dilakukan wawancara kepada pengguna pada saat pengguna menguji aplikasi yang telah dibuat. Adapun pertanyaan-pertanyaan yang akan diajukan pada wawancara adalah sebagi berikut.
Tabel 4.28 Pertanyaan KBO
No Pertanyaan
1 Apakah dengan adanya aplikasi ini dapat memudahkan anda dalam pembuatan surat tugas pengangkutan sampah?
2 Apakah dengan adanya aplikasi ini dapat meningkatkan pengawasan terhadap driver saat pengangkutan sampah?
3 Apakah dengan adanya aplikasi ini dapat mempermudah penentuan penjadwalan pengangkutan sampah?
4 Apakah penggunaan aplikasi ini mudah dipahami?
4.2.2.2 Hasil Pengujian Beta
Wawancara dilakukan kepada Kepala Bagian Operasional PD. Kebersihan Kota Bandung. Berikut adalah jawaban dari hasil wawancara tersebut.
1. Apakah dengan adanya aplikasi ini dapat memudahkan anda dalam pembuatan surat tugas pengangkutan sampah?
Berdasarkan hasil wawancara kepada Kepala Bagian Operasional PD. Kebersihan Kota Bandung, beliau berpendapat bahwa dengan adanya aplikasi ini pembuatan surat tugas menjadi lebih mudah dan juga memudahkan stakeholder dalam memonitoring kinerja pengangkutan.
2. Apakah dengan adanya aplikasi ini dapat meningkatkan pengawasan terhadap driver saat pengangkutan sampah?
Berdasarkan hasil wawancara kepada Kepala Bagian Operasional PD. Kebersihan Kota Bandung, pengawasan driver menjadi lebih mudah karena dengan adanya fitur pelacakan, lokasi driver dapat dipantau secara langsung.
3. Apakah dengan adanya aplikasi ini dapat mempermudah penentuan penjadwalan pengangkutan sampah?
Berdasarkan hasil wawancara kepada Kepala Bagian Operasional PD. Kebersihan Kota Bandung, dengan adanya laporan pengangkutan maka dapat dilakukan penadwalan kembali sisa sampah yang belum terangkut. Hanya saja diharapkan pengolahan data kembali untuk penjadwalan otomatis.
4. Apakah penggunaan aplikasi ini mudah dipahami?
Berdasarkan wawancara kepada Kepala Bagian Operasional PD. Kebersihan Kota Bandung, beliau berpendapat bahwa penggunaan aplikasi sudah sangat mudah dipahami. Hanya saja beliau menambahkan saran untuk menambahkan fitur penambahan rute terbaik dan juga fitur fingerprint agar proses pengangkutan tidak mudah dicurangi.
4.2.2.3 Kesimpulan Pengujian Beta
Berdasarkan hasil wawancara pada pengujian beta, maka dapat disimpulkan bahwa aplikasi ini telah berhasil mempermudah pembuatan surat tugas pengangkutan sampah serta meningkatkan pengawasan terhadap driver. Selain itu aplikasi ini juga sudah cukup membantu dalam penjadwalan pengangkutan sampah, akan tetapi masih kurang dari yang diharapkan yaitu berupa pemantauan dan notifikasi real-time sampah yang sudah penuh.