yoklateknik mülakat

Backend Php Testing Tooling Mülakat Soruları

75 doğrulanmış Backend Php Testing Tooling mülakat sorusu — cevaplarıyla çöz, açıklamalarıyla öğren, gerçek simülasyonda kendini test et.

Gerçek simülasyonu dene →

Örnek sorular

Php Testing ToolingZorluk 1
PHPUnit'te bir test sınıfı, assertion metotlarını ve test yaşam döngüsünü (setUp/tearDown, runner tarafından keşif) elde etmek için geleneksel olarak hangi base sınıfı extend eder?
  • a\PHPUnit\Framework\TestSuite
  • b\PHPUnit\Framework\TestCase
  • c\PHPUnit\Framework\Assert
  • d\PHPUnit\Runner\BaseTestRunner
Açıklama:TestCase, tanıdık assert* metotlarını ve setUp/tearDown yaşam döngüsünü sağlar; test runner'ın her test metodu için keşfedip instantiate ettiği şey de budur. Assert yalnızca assertion'lara sahiptir, yaşam döngüsü/keşif mekanizması yoktur; TestSuite testleri gruplar; BaseTestRunner framework namespace'inin bir parçası değildir.
Php Testing ToolingZorluk 1
PHPUnit test sınıfında setUp() ne için kullanılır?
  • aHer test metodundan sonra çalışır, genellikle temizlik işleri için kullanılır.
  • bTest runner'a yeni bir test case kaydeder.
  • cTüm test sınıfı için bir kez çalışır, tüm test metotları arasında durum paylaştırır.
  • dHER test metodundan önce çalışır, ortak başlatma mantığının her testte tekrarlanmasını önler.
Açıklama:setUp(), sınıftaki her tek test metodundan önce çağrılır; bu sayede her test, başlatma kodunu her metotta tekrarlamadan taze ve öngörülebilir bir başlangıç noktasına sahip olur. Her testten sonra temizlik yapmak tearDown()'ın işidir, setUp()'ın değil; ayrıca sınıf başına bir kez çalışan bir hook da değildir — bu, testlerin birbirinin durumuna karışmasına izin verirdi.
Php Testing ToolingZorluk 1
PHPUnit test sınıfında tearDown() ne için kullanılır?
  • aHER test metodundan sonra çalışır; genellikle setUp()'ın oluşturduğu kaynakları veya durumu sıfırlar.
  • bYalnızca test metodu yakalanmamış bir exception fırlatırsa çalışır.
  • cTüm test sınıfı bittikten sonra bir kez çalışır, global bağlantıları kapatmak için.
  • dHer test metodundan önce, setUp()'tan hemen sonra çalışır.
Açıklama:tearDown(), her test metodundan sonra (başarılı/başarısız fark etmeksizin) çalışır; setUp()'ın kurduğu kaynakları serbest bırakmak veya durumu sıfırlamak için doğal yerdir, böylece testler birbirinden bağımsız kalır. Başarısızlığa bağlı değildir, sınıf başına bir kez çalışan bir hook değildir ve testten önce çalışmaz.
Php Testing ToolingZorluk 1
class MathTest extends \PHPUnit\Framework\TestCase
{
    public function testIsEven(): void
    {
        $this->assertTrue(is_int(4 / 2));
    }
}

Bu test çalıştığında ne olur?
  • aBaşarısız olur, çünkü assertTrue() bir ifade değil, literal bir true değeri gerektirir.
  • bTypeError fırlatır, çünkü is_int() assertTrue() içinde kullanılamaz.
  • cGeçer, çünkü 4 / 2 tam sayı 2'ye eşittir ve is_int(2) true'dur.
  • dBaşarısız olur, çünkü / operatörleri ne olursa olsun PHP'de her zaman float döner.
Açıklama:PHP'de / operatörü, her iki işlenen de int ise ve bölüm tam bölünüyorsa int döner; 4 / 2 bir int olan 2'ye eşittir, dolayısıyla is_int(2) true'dur ve assertTrue(true) geçer. assertTrue() yalnızca literal değil, herhangi bir boolean ifadeyi de kabul eder; burada TypeError söz konusu değildir.
Php Testing ToolingZorluk 1
function findUser(array $users, string $id): ?array
{
    foreach ($users as $u) {
        if ($u['id'] === $id) {
            return $u;
        }
    }
    return null;
}

class UserLookupTest extends \PHPUnit\Framework\TestCase
{
    public function testMissingUser(): void
    {
        $result = findUser([], 'u1');
        $this->assertNull($result);
    }
}

Boş bir $users dizisi verildiğinde, bu test neyi kontrol eder?
  • afindUser'ın false döndüğünü, çünkü PHP fonksiyonları varsayılan olarak hata durumunda false döner.
  • bDizi boş olduğunda findUser'ın null döndüğünü ve testin geçtiğini.
  • cDizi boş olduğunda findUser'ın bir exception fırlattığını ve exception fırlatılmadığı için testin başarısız olduğunu.
  • dfindUser'ın boş bir [] dizisi döndürdüğünü ve assertNull'ın []'i null olarak kabul ettiğini.
Açıklama:Boş bir $users dizisiyle foreach döngüsü hiç çalışmaz, dolayısıyla findUser return null; satırına düşer. assertNull($result), $result'ın tam olarak null olduğunu kontrol eder ki burada durum budur, test geçer. PHP'de 'hata durumunda false dön' gibi örtük bir kural yoktur, bu fonksiyon hiçbir zaman exception fırlatmaz ve [], assertNull tarafından null sayılmaz.
Php Testing ToolingZorluk 1
Bir projenin giriş script'i require __DIR__ . '/vendor/autoload.php'; ile başlıyor. Bu satır aslında size ne kazandırır?
  • aComposer'ın autoloader'ını kaydeder; sınıflar composer.json'daki eşlemelere (ör. PSR-4) göre ihtiyaç anında yüklenir.
  • bPHPUnit test runner'ını başlatır ve phpunit.xml yapılandırmasını yükler.
  • ccomposer.json'da listelenen projenin tüm bağımlılıklarını indirir ve kurar.
  • dProjedeki her PHP sınıf dosyasını önceden belleğe manuel olarak yükler.
Açıklama:vendor/autoload.php, Composer'ın ürettiği bir dosyadır; require etmek, sınıf/namespace isimlerini dosyalara nasıl eşleyeceğini bilen bir autoload fonksiyonu kaydeder (PSR-4, classmap vb. üzerinden) ve her sınıf dosyasını yalnızca o sınıf gerçekten kullanıldığında tembelce yükler. PHPUnit ile özel bir ilgisi yoktur, hiçbir şey kurmaz (bu composer install'ın işi) ve tüm dosyaları önceden yüklemez.

3300 soruluk Backend bankasında kendini sına.

Mülakata başla