Software Testing

بواسطة: Udacity

Overview

When writing software, destruction can be just as valuable as creation. Learn how to catch bugs and break software as you discover different testing methods that will help you build better software.

Syllabus

  • Domains, Ranges, Oracles, and Kinds of Testing
    • How to think about the different elements of software testing.
  • Code Coverage
    • How to find parts of a program that need more testing.
  • Random Testing
    • How to automatically generate test cases that break code in unexpected ways.
  • Advanced Random Testing
    • How to engineer a sophisticated random test case generator.
  • Consequences
    • How to deal with lots of bugs, how to take a big input that triggers a bug and make it smaller, how to report a bug, and more!
  • Conclusion

Taught by

John Regehr

Software Testing
الذهاب الي الدورة

Software Testing

بواسطة: Udacity

  • Udacity
  • مجانية
  • الإنجليزية
  • متاح شهادة
  • متاح في أي وقت
  • intermediate
  • N/A
8.1.2PHP Version1.17sRequest Duration2MBMemory UsageGET ar/الدورات/{slug}Route
    • Booting (763ms)
    • Application (403ms)
    • 1 x Booting (65.29%)
      763.23ms
      1 x Application (34.47%)
      402.97ms
      14 templates were rendered
      • public.courses.show (resources/views/public/courses/show.blade.php)3bladefile
        Params
        0
        course
        1
        links
        2
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.courses.partials.details (resources/views/public/courses/partials/details.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.layouts.main (resources/views/public/layouts/main.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.meta (resources/views/public/layouts/partials/meta.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.navbar (resources/views/public/layouts/partials/navbar.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.links (resources/views/public/auth/profile/partials/links.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.layouts.partials.flash-session (resources/views/public/layouts/partials/flash-session.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      uri
      GET ar/الدورات/{slug}
      middleware
      web, localize:ar
      controller
      App\Http\Controllers\CourseController@show
      as
      ar.courses.show
      namespace
      prefix
      /ar
      where
      file
      app/Http/Controllers/CourseController.php:17-35
      6 statements were executed10.86ms
      • select * from `courses` where `slug_ar` = 'software-testing' limit 1
        9.34ms/app/Http/Controllers/CourseController.php:20corspedia
        Metadata
        Bindings
        • 0. software-testing
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:20
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • update `courses` set `visitors` = `visitors` + 1, `courses`.`updated_at` = '2025-07-28 15:26:36' where `id` = 619
        650μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-07-28 15:26:36
        • 1. 619
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:21
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `topic_id`, `slug_en`, `slug_ar` from `subjects` where `subjects`.`id` in (77)
        210μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `slug_en`, `slug_ar` from `topics` where `topics`.`id` in (1)
        180μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 25. /app/Http/Controllers/CourseController.php:23
        • 26. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 27. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 28. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 29. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `providers` where `providers`.`id` in (6) and `providers`.`deleted_at` is null
        210μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `html_files` where `html_files`.`id` = 613 limit 1
        270μs/app/Models/Course.php:84corspedia
        Metadata
        Bindings
        • 0. 613
        Backtrace
        • 21. /app/Models/Course.php:84
        • 28. view::public.courses.show:29
        • 30. /vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:125
        • 31. /vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php:58
        • 32. /vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php:72
      App\Models\HtmlFile
      1
      App\Models\Provider
      1
      App\Models\Topic
      1
      App\Models\Subject
      1
      App\Models\Course
      1
        _token
        xrQ3sY9Tf93KBhVMHahiNKzLzph5dnSRMAH4EHLd
        locale
        ar
        _previous
        array:1 [ "url" => "https://www.corspedia.com/ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/softwa...
        _flash
        array:2 [ "old" => [] "new" => [] ]
        PHPDEBUGBAR_STACK_DATA
        []
        path_info
        /ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/software-testing
        status_code
        200
        
        status_text
        OK
        format
        html
        content_type
        text/html; charset=UTF-8
        request_query
        []
        
        request_request
        []
        
        request_headers
        0 of 0
        array:24 [ "cf-ipcountry" => array:1 [ 0 => "US" ] "cf-connecting-ip" => array:1 [ 0 => "216.73.216.107" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "x-forwarded-for" => array:1 [ 0 => "216.73.216.107" ] "sec-fetch-site" => array:1 [ 0 => "none" ] "accept" => array:1 [ 0 => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" ] "user-agent" => array:1 [ 0 => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" ] "upgrade-insecure-requests" => array:1 [ 0 => "1" ] "sec-ch-ua-platform" => array:1 [ 0 => ""Windows"" ] "sec-ch-ua-mobile" => array:1 [ 0 => "?0" ] "sec-ch-ua" => array:1 [ 0 => ""Chromium";v="130", "HeadlessChrome";v="130", "Not?A_Brand";v="99"" ] "cache-control" => array:1 [ 0 => "no-cache" ] "pragma" => array:1 [ 0 => "no-cache" ] "sec-fetch-dest" => array:1 [ 0 => "document" ] "cf-ray" => array:1 [ 0 => "9665654fdd4536c8-YYZ" ] "accept-encoding" => array:1 [ 0 => "gzip, br" ] "priority" => array:1 [ 0 => "u=0, i" ] "sec-fetch-user" => array:1 [ 0 => "?1" ] "sec-fetch-mode" => array:1 [ 0 => "navigate" ] "cf-visitor" => array:1 [ 0 => "{"scheme":"https"}" ] "host" => array:1 [ 0 => "www.corspedia.com" ] "content-length" => array:1 [ 0 => "" ] "content-type" => array:1 [ 0 => "" ] ]
        request_server
        0 of 0
        array:50 [ "USER" => "www-data" "HOME" => "/var/www" "HTTP_CF_IPCOUNTRY" => "US" "HTTP_CF_CONNECTING_IP" => "216.73.216.107" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_X_FORWARDED_FOR" => "216.73.216.107" "HTTP_SEC_FETCH_SITE" => "none" "HTTP_ACCEPT" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" "HTTP_USER_AGENT" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" "HTTP_UPGRADE_INSECURE_REQUESTS" => "1" "HTTP_SEC_CH_UA_PLATFORM" => ""Windows"" "HTTP_SEC_CH_UA_MOBILE" => "?0" "HTTP_SEC_CH_UA" => ""Chromium";v="130", "HeadlessChrome";v="130", "Not?A_Brand";v="99"" "HTTP_CACHE_CONTROL" => "no-cache" "HTTP_PRAGMA" => "no-cache" "HTTP_SEC_FETCH_DEST" => "document" "HTTP_CF_RAY" => "9665654fdd4536c8-YYZ" "HTTP_ACCEPT_ENCODING" => "gzip, br" "HTTP_PRIORITY" => "u=0, i" "HTTP_SEC_FETCH_USER" => "?1" "HTTP_SEC_FETCH_MODE" => "navigate" "HTTP_CF_VISITOR" => "{"scheme":"https"}" "HTTP_HOST" => "www.corspedia.com" "REDIRECT_STATUS" => "200" "SERVER_NAME" => "corspedia.com" "SERVER_PORT" => "443" "SERVER_ADDR" => "141.95.147.152" "REMOTE_USER" => "" "REMOTE_PORT" => "63298" "REMOTE_ADDR" => "172.69.214.88" "SERVER_SOFTWARE" => "nginx/1.18.0" "GATEWAY_INTERFACE" => "CGI/1.1" "HTTPS" => "on" "REQUEST_SCHEME" => "https" "SERVER_PROTOCOL" => "HTTP/2.0" "DOCUMENT_ROOT" => "/var/www/corspedia/public" "DOCUMENT_URI" => "/index.php" "REQUEST_URI" => "/ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/software-testing" "SCRIPT_NAME" => "/index.php" "CONTENT_LENGTH" => "" "CONTENT_TYPE" => "" "REQUEST_METHOD" => "GET" "QUERY_STRING" => "" "SCRIPT_FILENAME" => "/var/www/corspedia/public/index.php" "PATH_INFO" => "" "FCGI_ROLE" => "RESPONDER" "PHP_SELF" => "/index.php" "REQUEST_TIME_FLOAT" => 1753716395.7439 "REQUEST_TIME" => 1753716395 ]
        request_cookies
        []
        
        response_headers
        0 of 0
        array:5 [ "content-type" => array:1 [ 0 => "text/html; charset=UTF-8" ] "cache-control" => array:1 [ 0 => "no-cache, private" ] "date" => array:1 [ 0 => "Mon, 28 Jul 2025 15:26:36 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IlUyQThjaFB5aG9UMXNaZnpLeGFxOGc9PSIsInZhbHVlIjoiTzZWWHlhWktaN0o3UGxZVkwzWTAyMnFsZk5TMWprUFU4ZkVoY0tCVk5RYnRhL3R1ZDRkUW1wVXpNbk1HN3cwZzVuRHVjeUdCeXdENE5iMmpZSTVtZG41UmJsalExSjVkQnJTT0RmdEk0c05LdXFreG9jbGVkU2I5WWw4Z0tPQ1IiLCJtYWMiOiI4MTU5NTczMWVlMDg5MTFhNDc4ZDJlZTI0ZjRmNWRjMzRhMzVlMzU4MTdmYWJlYWQ1NjZiZWM2ZjRiNTczMGQ2IiwidGFnIjoiIn0%3D; expires=Mon, 28 Jul 2025 17:26:36 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6IlUyQThjaFB5aG9UMXNaZnpLeGFxOGc9PSIsInZhbHVlIjoiTzZWWHlhWktaN0o3UGxZVkwzWTAyMnFsZk5TMWprUFU4ZkVoY0tCVk5RYnRhL3R1ZDRkUW1wVXpNbk1HN3cwZzVuRHVje" 1 => "laravel_session=eyJpdiI6Ikc0TFRPeHluV3VwKytCMlVKMHRjOGc9PSIsInZhbHVlIjoiRmUrMkhWa2I3azVpNVJGV2dIaHV3MWJpSThoOXJuZjk1SjlwTUFkV1VHV1hWZEx4UDlVMFh4aS92Mml2NEk1TC9JRWJocTMzQndiSjZBcmhWa3BsR3UvZWwyVTgwSU0xb0hMblpjNlFWR2ZNeGc0RU5ibnJVam0wZkdmdFVrS24iLCJtYWMiOiI0OGY4ZTM1YTRhYTYxNzBmOTQzYTcyYjIwYzVjYzY1YWU1Zjc3MjUzNDk3OTMwOGVhZjc1ZjA0ZjcxYjlhNWUzIiwidGFnIjoiIn0%3D; expires=Mon, 28 Jul 2025 17:26:36 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6Ikc0TFRPeHluV3VwKytCMlVKMHRjOGc9PSIsInZhbHVlIjoiRmUrMkhWa2I3azVpNVJGV2dIaHV3MWJpSThoOXJuZjk1SjlwTUFkV1VHV1hWZEx4UDlVMFh4aS92Mml2NEk1TC9J" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IlUyQThjaFB5aG9UMXNaZnpLeGFxOGc9PSIsInZhbHVlIjoiTzZWWHlhWktaN0o3UGxZVkwzWTAyMnFsZk5TMWprUFU4ZkVoY0tCVk5RYnRhL3R1ZDRkUW1wVXpNbk1HN3cwZzVuRHVjeUdCeXdENE5iMmpZSTVtZG41UmJsalExSjVkQnJTT0RmdEk0c05LdXFreG9jbGVkU2I5WWw4Z0tPQ1IiLCJtYWMiOiI4MTU5NTczMWVlMDg5MTFhNDc4ZDJlZTI0ZjRmNWRjMzRhMzVlMzU4MTdmYWJlYWQ1NjZiZWM2ZjRiNTczMGQ2IiwidGFnIjoiIn0%3D; expires=Mon, 28-Jul-2025 17:26:36 GMT; path=/XSRF-TOKEN=eyJpdiI6IlUyQThjaFB5aG9UMXNaZnpLeGFxOGc9PSIsInZhbHVlIjoiTzZWWHlhWktaN0o3UGxZVkwzWTAyMnFsZk5TMWprUFU4ZkVoY0tCVk5RYnRhL3R1ZDRkUW1wVXpNbk1HN3cwZzVuRHVje" 1 => "laravel_session=eyJpdiI6Ikc0TFRPeHluV3VwKytCMlVKMHRjOGc9PSIsInZhbHVlIjoiRmUrMkhWa2I3azVpNVJGV2dIaHV3MWJpSThoOXJuZjk1SjlwTUFkV1VHV1hWZEx4UDlVMFh4aS92Mml2NEk1TC9JRWJocTMzQndiSjZBcmhWa3BsR3UvZWwyVTgwSU0xb0hMblpjNlFWR2ZNeGc0RU5ibnJVam0wZkdmdFVrS24iLCJtYWMiOiI0OGY4ZTM1YTRhYTYxNzBmOTQzYTcyYjIwYzVjYzY1YWU1Zjc3MjUzNDk3OTMwOGVhZjc1ZjA0ZjcxYjlhNWUzIiwidGFnIjoiIn0%3D; expires=Mon, 28-Jul-2025 17:26:36 GMT; path=/; httponlylaravel_session=eyJpdiI6Ikc0TFRPeHluV3VwKytCMlVKMHRjOGc9PSIsInZhbHVlIjoiRmUrMkhWa2I3azVpNVJGV2dIaHV3MWJpSThoOXJuZjk1SjlwTUFkV1VHV1hWZEx4UDlVMFh4aS92Mml2NEk1TC9J" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "xrQ3sY9Tf93KBhVMHahiNKzLzph5dnSRMAH4EHLd" "locale" => "ar" "_previous" => array:1 [ "url" => "https://www.corspedia.com/ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/software-testing" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]