Sitwazzjoni attwali: PHP2Shell. Żewġ vulnerabbiltajiet kritiċi ta' PHP (CVSS 9,2) jippermettu kodiċi malizzjuż mingħajr login. Patches mill-21/10/2026.X'għandu jsir issa →

Testjar tal-kodiċi PHP: PHPUnit u Pest

PHPUnit huwa l-għodda standard tat-testjar għal PHP, Pest jibni fuqha. Min għandu testijiet jista' japplika aġġornamenti tas-sigurtà u bidliet ta' verżjoni aktar malajr u b'inqas riskju.

Stat 5 min. qariGħarfien dwar PHP

Fil-qosor: PHPUnit huwa l-għodda standard biex il-kodiċi PHP jiġi ttestjat awtomatikament; Pest huwa framework li jibni fuqu b'mod iqsar ta' kitba. Bħalissa PHPUnit 13 (minn Frar 2026, minn PHP 8.4) huwa l-aktar attwali, Pest hu disponibbli fil-verżjoni 5. Testijiet awtomatiċi ma jagħlqux vulnerabbiltajiet f'PHP innifsu, imma jagħmlu l-aġġornamenti ppjanabbli: wara PHP2Shell u qabel it-tmiem tal-appoġġ għal PHP 8.2 fil-31 ta' Diċembru 2026 dan huwa l-vantaġġ deċiżiv.

Għaliex għandu jiġi ttestjat il-kodiċi PHP?

Għat-tmexxija tan-negozju l-benefiċċju jista' jinġabar f'sentenza waħda: it-testijiet jagħmlu l-bidliet orħos u aktar sikuri. Test awtomatiku jivverifika fi ftit sekondi jekk funzjoni għadhiex tagħmel dak li suppost, pereżempju jekk karrettun tax-xiri jaħsibx sewwa jew login jirrifjutax passwords ħżiena. Mingħajr testijiet, dan jivverifikah bniedem bl-idejn, jew ħadd.

Id-differenza tidher b'mod speċjali fl-aġġornamenti. Meta PHP irid jiġi aġġornat fil-pront minħabba vulnerabbiltà kritika, ħafna operaturi jisitaw għax jibżgħu minn żbalji fil-ħanut jew fil-portal tal-klijenti. B'suite ta' testijiet, l-aġġornament l-ewwel jaħdem f'ambjent tat-test, it-testijiet juru problemi, u wara jmur live.

PHPUnit: l-istandard għat-testijiet ta' PHP

PHPUnit joħroġ kull sena f'Frar f'verżjoni ewlenija ġdida. Kull verżjoni teħtieġ verżjoni minima ta' PHP u tirċievi madwar sentejn ta' korrezzjonijiet tal-iżbalji. Skont phpunit.de japplika:

PHPUnit Maħruġ Rekwiżit ta' PHP Korrezzjonijiet tal-iżbalji sa
13 06/02/2026 minn PHP 8.4 04/02/2028
12 07/02/2025 minn PHP 8.3 05/02/2027
11 02/02/2024 minn PHP 8.2 06/02/2026
10 03/02/2023 minn PHP 8.1 07/02/2025

It-tabella turi rabta prattika: proġett li għadu juża PHPUnit 10 ġeneralment għadu jaħdem ukoll fuq verżjoni qadima ta' PHP. L-għodod tat-testjar u l-verżjoni ta' PHP għandhom jitqajmu flimkien. PHPUnit normalment jiġi installat permezz ta' Composer bħala dipendenza tal-iżvilupp.

L-ewwel test b'PHPUnit

Test huwa klassi li tiret minn PHPUnit\Framework\TestCase. Il-metodi tat-test huma pubbliċi u jibdew b'test, inkella jiġu mmarkati bl-attribut #[Test]. L-eżempju jivverifika funzjoni sempliċi tal-kalkolu tal-prezz:

<?php declare(strict_types=1);

use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\TestCase;

final class BruttopreisTest extends TestCase
{
    public static function preise(): array
    {
        return [
            'Normalsatz'   => [10000, 19, 11900],
            'Ermäßigt'     => [10000, 7, 10700],
            'Null bleibt Null' => [0, 19, 0],
        ];
    }

    #[DataProvider('preise')]
    public function testBruttopreisInCent(int $netto, int $satz, int $erwartet): void
    {
        $this->assertSame($erwartet, bruttopreis($netto, $satz));
    }
}

Id-Data Provider jipprovdi diversi każijiet għall-istess test. Skont id-dokumentazzjoni ta' PHPUnit irid ikun pubbliku u statiku. Il-kalkolu jsir f'ċenteżmi bħala numru sħiħ, biex ma jkun hemm l-ebda żbalji ta' arrotondament minn numri bil-punt deċimali. Is-suite tinħadem b'./vendor/bin/phpunit, jekk PHPUnit ikun installat permezz ta' Composer.

Pest: l-istess bażi, kitba iqsar

Pest, skont id-dokumentazzjoni, huwa mibni fuq PHPUnit. It-testijiet jinkitbu bħala funzjonijiet b'it() jew test() u l-aspettattivi b'expect(). Pest 5 jeħtieġ PHP 8.4. L-installazzjoni skont id-dokumentazzjoni:

composer remove phpunit/phpunit
composer require pestphp/pest --dev --with-all-dependencies
./vendor/bin/pest --init

L-istess test fil-kitba ta' Pest:

<?php
it('berechnet den Bruttopreis zum Normalsatz', function () {
    expect(bruttopreis(10000, 19))->toBe(11900);
});

It-testijiet eżistenti ta' PHPUnit il-plugin pestphp/pest-plugin-drift jittrasformahom fil-biċċa l-kbira awtomatikament. Liema kitba jagħżel tim huwa kwistjoni ta' togħma; l-importanti huwa li t-testijiet jaħdmu regolarment.

Liema tipi ta' testijiet huma utli

  1. Testijiet unitarji: jivverifikaw funzjonijiet u klassijiet individwali mingħajr database jew network.
  2. Testijiet ta' integrazzjoni: jivverifikaw l-interazzjoni mad-database, mas-sistema tal-fajls jew ma' interfaces.
  3. Testijiet funzjonali permezz ta' HTTP: isejħu paġni u formoli kif jagħmel browser.
  4. Testijiet ta' regressjoni tas-sigurtà: iżommu żbalji rranġati, pereżempju li l-output jiġi mmaskerat b'htmlspecialchars() jew li login jfalli wara password ħażina.
  5. Smoke tests wara d-deployment: ftit verifiki mgħaġġla jekk il-paġna live tirrispondix wara aġġornament.

Bħala komplement għat-testijiet, l-analiżi statika b'PHPStan u Psalm issib żbalji mingħajr ma teżegwixxi l-kodiċi.

It-testijiet bħala xibka ta' sigurtà għall-aġġornamenti u għal PHP2Shell

PHP2Shell wera kemm jista' jkun qasir iż-żmien bejn il-pubblikazzjoni u l-pressjoni għall-azzjoni: tħabbira fl-20 ta' Ottubru 2026, patches fil-21 ta' Ottubru 2026, livell ta' twissija Orange tal-BSI (l-Uffiċċju Federali Ġermaniż għas-Sigurtà tal-Informazzjoni). Min kellu suite ta' testijiet seta' japplika PHP 8.4.27 jew 8.3.36 f'ambjent tat-test, iħaddem it-testijiet u jmur live fl-istess jum. Mingħajr testijiet, spiss kien fadal biss l-għażla bejn aġġornament mhux ivverifikat u vulnerabbiltà miftuħa.

Il-benefiċċju huwa saħansitra akbar meta tinbidel il-verżjoni ewlenija. Għal PHP 8.1 u eqdem m'hemm l-ebda aġġornament uffiċjali aktar, u PHP 8.2 jintemm fil-31 ta' Diċembru 2026, kif tispjega l-paġna PHP End-of-Life. Eżekuzzjoni tat-testijiet kontra l-verżjoni fil-mira turi kmieni liema funzjonijiet skaduti jridu jiġu sostitwiti. Tagħmel sens pipeline ta' CI li tħaddem testijiet kontra diversi verżjonijiet ta' PHP, flimkien ma' ħarsa lejn Release Candidates bħal PHP 8.6.0, imma qatt fil-produzzjoni.

Suġġeriment

Ikteb test għal kull żball tas-sigurtà rranġat fl-applikazzjoni tagħkom. B'hekk tiżguraw li l-istess żball ma jirritornax b'bidla aktar tard.

Kif jgħin PHP SOS konkretament?

Fil-migrazzjoni minn PHP 8.1 u eqdem u fl-aġġornamenti kontinwi nappoġġjaw hekk:

  • Evalwazzjoni tal-istokk: Liema testijiet hemm, liema verżjoni ta' PHP u PHPUnit jaħdmu, fejn jonqsu testijiet għal proċessi kritiċi?
  • Noħolqu kopertura minima: Flimkien mat-tim tal-iżvilupp tagħkom jew mal-aġenzija tagħkom insaħħu l-login, il-formoli u l-flussi tal-ordnijiet bit-testijiet.
  • Nittestjaw l-aġġornamenti: Verżjonijiet ġodda ta' PHP l-ewwel jaħdmu f'ambjent tat-test kontra s-suite.
  • Niddokumentaw ir-riżultat: Tirċievu r-riżultati tat-testijiet u l-istati tal-verżjonijiet bħala prova għall-pass tal-patch jew tal-migrazzjoni.

Mistoqsijiet frekwenti

Liema verżjoni ta' PHPUnit għandi bżonn?

Dan jiddependi mill-verżjoni ta' PHP tagħkom. PHPUnit 13 jeħtieġ PHP 8.4, PHPUnit 12 PHP 8.3 u PHPUnit 11 PHP 8.2. It-tabella attwali tinsab fuq phpunit.de taħt il-verżjonijiet appoġġati.

Pest huwa sostitut għal PHPUnit?

Pest, skont id-dokumentazzjoni tiegħu stess, huwa mibni fuq PHPUnit u joffri mod iqsar ta' kitba. Testijiet eżistenti ta' PHPUnit jistgħu fil-biċċa l-kbira jinbidlu awtomatikament bil-plugin Drift, ftit minnhom iridu jiġu aġġustati bl-idejn.

It-testijiet jgħinu kontra vulnerabbiltajiet f'PHP innifsu?

Mhux direttament. Vulnerabbiltajiet bħal PHP2Shell jinsabu fl-interpretatur u jingħalqu b'aġġornament ta' PHP. It-testijiet madankollu jiżguraw li tistgħu tapplikaw dan l-aġġornament malajr, mingħajr biża' ta' żbalji mhux innotati fl-applikazzjoni.

Kemm testijiet huma biżżejjed?

M'hemm l-ebda numru fiss. Huwa raġonevoli li l-ewwel jiġu koperti l-flussi kritiċi għan-negozju: login, ordnijiet, formoli, interfaces. Wara dan il-kopertura tat-testijiet tikber ma' kull bidla u kull żball irranġat.

Sorsi

Kuntatt immedjat

Kull siegħa tgħodd. Iktbu lilna issa.

Iddeskrivu fil-qosor is-sistema, il-verżjoni ta' PHP u dak li osservajtu. Nikkuntattjawkom, niċċaraw is-sitwazzjoni u naħdmu mill-bogħod sakemm l-inċident jingħalaq u jiġi ddokumentat.

Għajnuna immedjata