diff --git a/core/modules/system/src/Tests/Database/DatabaseWebTestBase.php b/core/modules/system/tests/src/Functional/Database/DatabaseWebTestBase.php
similarity index 58%
rename from core/modules/system/src/Tests/Database/DatabaseWebTestBase.php
rename to core/modules/system/tests/src/Functional/Database/DatabaseWebTestBase.php
index 8fb369a376..3a23b5915d 100644
--- a/core/modules/system/src/Tests/Database/DatabaseWebTestBase.php
+++ b/core/modules/system/tests/src/Functional/Database/DatabaseWebTestBase.php
@@ -1,22 +1,23 @@
 <?php
 
-namespace Drupal\system\Tests\Database;
+namespace Drupal\Tests\system\Functional\Database;
 
 use Drupal\KernelTests\Core\Database\DatabaseTestBase;
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Base class for databases database tests.
  */
-abstract class DatabaseWebTestBase extends WebTestBase {
+abstract class DatabaseWebTestBase extends BrowserTestBase {
 
   /**
-   * Modules to enable.
-   *
-   * @var array
+   * {@inheritdoc}
    */
   public static $modules = ['database_test'];
 
+  /**
+   * {@inheritdoc}
+   */
   protected function setUp() {
     parent::setUp();
 
diff --git a/core/modules/system/src/Tests/Database/FakeRecord.php b/core/modules/system/tests/src/Functional/Database/FakeRecord.php
similarity index 83%
rename from core/modules/system/src/Tests/Database/FakeRecord.php
rename to core/modules/system/tests/src/Functional/Database/FakeRecord.php
index fce136684e..d51dbd0300 100644
--- a/core/modules/system/src/Tests/Database/FakeRecord.php
+++ b/core/modules/system/tests/src/Functional/Database/FakeRecord.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\system\Tests\Database;
+namespace Drupal\Tests\system\Functional\Database;
 
 /**
  * Fetches into a class.
diff --git a/core/modules/system/src/Tests/Database/SelectPagerDefaultTest.php b/core/modules/system/tests/src/Functional/Database/SelectPagerDefaultTest.php
similarity index 80%
rename from core/modules/system/src/Tests/Database/SelectPagerDefaultTest.php
rename to core/modules/system/tests/src/Functional/Database/SelectPagerDefaultTest.php
index a264d33ea6..83d390c3ac 100644
--- a/core/modules/system/src/Tests/Database/SelectPagerDefaultTest.php
+++ b/core/modules/system/tests/src/Functional/Database/SelectPagerDefaultTest.php
@@ -1,6 +1,7 @@
 <?php
 
-namespace Drupal\system\Tests\Database;
+namespace Drupal\Tests\system\Functional\Database;
+
 use Symfony\Component\HttpFoundation\Request;
 
 /**
@@ -34,13 +35,13 @@ public function testEvenPagerQuery() {
 
     for ($page = 0; $page <= $num_pages; ++$page) {
       $this->drupalGet('database_test/pager_query_even/' . $limit, ['query' => ['page' => $page]]);
-      $data = json_decode($this->getRawContent());
+      $data = json_decode($this->getSession()->getPage()->getContent());
 
       if ($page == $num_pages) {
         $correct_number = $count - ($limit * $page);
       }
 
-      $this->assertEqual(count($data->names), $correct_number, format_string('Correct number of records returned by pager: @number', ['@number' => $correct_number]));
+      $this->assertCount($correct_number, $data->names, format_string('Correct number of records returned by pager: @number', ['@number' => $correct_number]));
     }
   }
 
@@ -68,13 +69,13 @@ public function testOddPagerQuery() {
 
     for ($page = 0; $page <= $num_pages; ++$page) {
       $this->drupalGet('database_test/pager_query_odd/' . $limit, ['query' => ['page' => $page]]);
-      $data = json_decode($this->getRawContent());
+      $data = json_decode($this->getSession()->getPage()->getContent());
 
       if ($page == $num_pages) {
         $correct_number = $count - ($limit * $page);
       }
 
-      $this->assertEqual(count($data->names), $correct_number, format_string('Correct number of records returned by pager: @number', ['@number' => $correct_number]));
+      $this->assertCount($correct_number, $data->names, format_string('Correct number of records returned by pager: @number', ['@number' => $correct_number]));
     }
   }
 
@@ -97,7 +98,7 @@ public function testInnerPagerQuery() {
     $ages = $outer_query
       ->execute()
       ->fetchCol();
-    $this->assertEqual($ages, [25, 26, 27, 28], 'Inner pager query returned the correct ages.');
+    $this->assertEquals([25, 26, 27, 28], $ages, 'Inner pager query returned the correct ages.');
   }
 
   /**
@@ -118,14 +119,13 @@ public function testHavingPagerQuery() {
     $ages = $query
       ->execute()
       ->fetchCol();
-    $this->assertEqual($ages, ['George', 'Ringo'], 'Pager query with having expression returned the correct ages.');
+    $this->assertEquals(['George', 'Ringo'], $ages, 'Pager query with having expression returned the correct ages.');
   }
 
   /**
    * Confirms that every pager gets a valid, non-overlapping element ID.
    */
   public function testElementNumbers() {
-
     $request = Request::createFromGlobals();
     $request->query->replace([
       'page' => '3, 2, 1, 0',
@@ -140,7 +140,7 @@ public function testElementNumbers() {
       ->limit(1)
       ->execute()
       ->fetchField();
-    $this->assertEqual($name, 'Paul', 'Pager query #1 with a specified element ID returned the correct results.');
+    $this->assertEquals('Paul', $name, 'Pager query #1 with a specified element ID returned the correct results.');
 
     // Setting an element smaller than the previous one
     // should not overwrite the pager $maxElement with a smaller value.
@@ -152,7 +152,7 @@ public function testElementNumbers() {
       ->limit(1)
       ->execute()
       ->fetchField();
-    $this->assertEqual($name, 'George', 'Pager query #2 with a specified element ID returned the correct results.');
+    $this->assertEquals('George', $name, 'Pager query #2 with a specified element ID returned the correct results.');
 
     $name = db_select('test', 't')
       ->extend('Drupal\Core\Database\Query\PagerSelectExtender')
@@ -161,8 +161,7 @@ public function testElementNumbers() {
       ->limit(1)
       ->execute()
       ->fetchField();
-    $this->assertEqual($name, 'John', 'Pager query #3 with a generated element ID returned the correct results.');
-
+    $this->assertEquals('John', $name, 'Pager query #3 with a generated element ID returned the correct results.');
   }
 
 }
diff --git a/core/modules/system/src/Tests/Database/SelectTableSortDefaultTest.php b/core/modules/system/tests/src/Functional/Database/SelectTableSortDefaultTest.php
similarity index 87%
rename from core/modules/system/src/Tests/Database/SelectTableSortDefaultTest.php
rename to core/modules/system/tests/src/Functional/Database/SelectTableSortDefaultTest.php
index 97a676b162..363d8e6cd2 100644
--- a/core/modules/system/src/Tests/Database/SelectTableSortDefaultTest.php
+++ b/core/modules/system/tests/src/Functional/Database/SelectTableSortDefaultTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\system\Tests\Database;
+namespace Drupal\Tests\system\Functional\Database;
 
 /**
  * Tests the tablesort query extender.
@@ -27,7 +27,7 @@ public function testTableSortQuery() {
 
     foreach ($sorts as $sort) {
       $this->drupalGet('database_test/tablesort/', ['query' => ['order' => $sort['field'], 'sort' => $sort['sort']]]);
-      $data = json_decode($this->getRawContent());
+      $data = json_decode($this->getSession()->getPage()->getContent());
 
       $first = array_shift($data->tasks);
       $last = array_pop($data->tasks);
@@ -55,7 +55,7 @@ public function testTableSortQueryFirst() {
 
     foreach ($sorts as $sort) {
       $this->drupalGet('database_test/tablesort_first/', ['query' => ['order' => $sort['field'], 'sort' => $sort['sort']]]);
-      $data = json_decode($this->getRawContent());
+      $data = json_decode($this->getSession()->getPage()->getContent());
 
       $first = array_shift($data->tasks);
       $last = array_pop($data->tasks);
@@ -72,16 +72,18 @@ public function testTableSortQueryFirst() {
    * are correct.
    */
   public function testTableSortDefaultSort() {
+    $assert = $this->assertSession();
+
     $this->drupalGet('database_test/tablesort_default_sort');
 
     // Verify that the table was displayed. Just the header is checked for
     // because if there were any fatal errors or exceptions in displaying the
     // sorted table, it would not print the table.
-    $this->assertText(t('Username'));
+    $assert->pageTextContains(t('Username'));
 
     // Verify that the header links are built properly.
-    $this->assertLinkByHref('database_test/tablesort_default_sort');
-    $this->assertPattern('/\<a.*title\=\"' . t('sort by Username') . '\".*\>/');
+    $assert->linkByHrefExists('database_test/tablesort_default_sort');
+    $assert->responseMatches('/\<a.*title\=\"' . t('sort by Username') . '\".*\>/');
   }
 
 }
diff --git a/core/modules/system/src/Tests/Database/TemporaryQueryTest.php b/core/modules/system/tests/src/Functional/Database/TemporaryQueryTest.php
similarity index 93%
rename from core/modules/system/src/Tests/Database/TemporaryQueryTest.php
rename to core/modules/system/tests/src/Functional/Database/TemporaryQueryTest.php
index d0dce74e46..3f276723e4 100644
--- a/core/modules/system/src/Tests/Database/TemporaryQueryTest.php
+++ b/core/modules/system/tests/src/Functional/Database/TemporaryQueryTest.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Drupal\system\Tests\Database;
+namespace Drupal\Tests\system\Functional\Database;
 
 /**
  * Tests the temporary query functionality.
@@ -10,9 +10,7 @@
 class TemporaryQueryTest extends DatabaseWebTestBase {
 
   /**
-   * Modules to enable.
-   *
-   * @var array
+   * {@inheritdoc}
    */
   public static $modules = ['database_test'];
 
@@ -28,7 +26,7 @@ public function countTableRows($table_name) {
    */
   public function testTemporaryQuery() {
     $this->drupalGet('database_test/db_query_temporary');
-    $data = json_decode($this->getRawContent());
+    $data = json_decode($this->getSession()->getPage()->getContent());
     if ($data) {
       $this->assertEqual($this->countTableRows('test'), $data->row_count, 'The temporary table contains the correct amount of rows.');
       $this->assertFalse(db_table_exists($data->table_name), 'The temporary table is, indeed, temporary.');
diff --git a/core/modules/system/src/Tests/DrupalKernel/ContainerRebuildWebTest.php b/core/modules/system/tests/src/Functional/DrupalKernel/ContainerRebuildWebTest.php
similarity index 63%
rename from core/modules/system/src/Tests/DrupalKernel/ContainerRebuildWebTest.php
rename to core/modules/system/tests/src/Functional/DrupalKernel/ContainerRebuildWebTest.php
index c87e3ad8eb..828b92f289 100644
--- a/core/modules/system/src/Tests/DrupalKernel/ContainerRebuildWebTest.php
+++ b/core/modules/system/tests/src/Functional/DrupalKernel/ContainerRebuildWebTest.php
@@ -1,15 +1,15 @@
 <?php
 
-namespace Drupal\system\Tests\DrupalKernel;
+namespace Drupal\Tests\system\Functional\DrupalKernel;
 
-use Drupal\simpletest\WebTestBase;
+use Drupal\Tests\BrowserTestBase;
 
 /**
  * Ensures that the container rebuild works as expected.
  *
  * @group DrupalKernel
  */
-class ContainerRebuildWebTest extends WebTestBase {
+class ContainerRebuildWebTest extends BrowserTestBase {
 
   /**
    * {@inheritdoc}
@@ -20,36 +20,40 @@ class ContainerRebuildWebTest extends WebTestBase {
    * Sets a different deployment identifier.
    */
   public function testSetContainerRebuildWithDifferentDeploymentIdentifier() {
+    $assert = $this->assertSession();
+
+    // Ensure the parameter is not set.
     $this->drupalGet('<front>');
-    $this->assertHeader('container_rebuild_indicator', FALSE);
+    $assert->responseHeaderEquals('container_rebuild_indicator', NULL);
 
     $this->writeSettings(['settings' => ['deployment_identifier' => (object) ['value' => 'new-identifier', 'required' => TRUE]]]);
 
     $this->drupalGet('<front>');
 
-    $this->assertHeader('container_rebuild_indicator', 'new-identifier');
+    $assert->responseHeaderEquals('container_rebuild_indicator', 'new-identifier');
   }
 
   /**
    * Tests container invalidation.
    */
   public function testContainerInvalidation() {
+    $assert = $this->assertSession();
 
     // Ensure that parameter is not set.
     $this->drupalGet('<front>');
-    $this->assertHeader('container_rebuild_test_parameter', FALSE);
+    $assert->responseHeaderEquals('container_rebuild_test_parameter', NULL);
 
     // Ensure that after setting the parameter, without a container rebuild the
     // parameter is still not set.
     $this->writeSettings(['settings' => ['container_rebuild_test_parameter' => (object) ['value' => 'rebuild_me_please', 'required' => TRUE]]]);
 
     $this->drupalGet('<front>');
-    $this->assertHeader('container_rebuild_test_parameter', FALSE);
+    $assert->responseHeaderEquals('container_rebuild_test_parameter', NULL);
 
     // Ensure that after container invalidation the parameter is set.
     \Drupal::service('kernel')->invalidateContainer();
     $this->drupalGet('<front>');
-    $this->assertHeader('container_rebuild_test_parameter', 'rebuild_me_please');
+    $assert->responseHeaderEquals('container_rebuild_test_parameter', 'rebuild_me_please');
   }
 
 }
diff --git a/core/tests/Drupal/KernelTests/Core/Database/FetchTest.php b/core/tests/Drupal/KernelTests/Core/Database/FetchTest.php
index e55590e7ed..67f227d6df 100644
--- a/core/tests/Drupal/KernelTests/Core/Database/FetchTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Database/FetchTest.php
@@ -4,7 +4,7 @@
 
 use Drupal\Core\Database\RowCountException;
 use Drupal\Core\Database\StatementInterface;
-use Drupal\system\Tests\Database\FakeRecord;
+use Drupal\Tests\system\Functional\Database\FakeRecord;
 
 /**
  * Tests the Database system's various fetch capabilities.
@@ -69,12 +69,11 @@ public function testQueryFetchArray() {
    */
   public function testQueryFetchClass() {
     $records = [];
-    $result = db_query('SELECT name FROM {test} WHERE age = :age', [':age' => 25], ['fetch' => 'Drupal\system\Tests\Database\FakeRecord']);
+    $result = db_query('SELECT name FROM {test} WHERE age = :age', [':age' => 25], ['fetch' => FakeRecord::class]);
     foreach ($result as $record) {
       $records[] = $record;
-      if ($this->assertTrue($record instanceof FakeRecord, 'Record is an object of class FakeRecord.')) {
-        $this->assertIdentical($record->name, 'John', '25 year old is John.');
-      }
+      $this->assertInstanceOf(FakeRecord::class, $record, 'Record is an object of class FakeRecord.');
+      $this->assertIdentical($record->name, 'John', '25 year old is John.');
     }
 
     $this->assertIdentical(count($records), 1, 'There is only one record.');
