猫でもわかるWeb開発・プログラミング猫でもわかるWeb開発・プログラミング本業エンジニアリングマネージャー。副業Webエンジニア。Web開発のヒントや、副業、日常生活のことを書きます。いうすごいタイトルの記事でした。www.utakata.workこの記事がめちゃめちゃ好評で、今でもたまに見られています。上げた時の話をします。する仕事をしていました。挙げなければなりません。系の最新にすると、deprecatedな使い方をしている箇所でWarningメッセージが出るようになります。個...これを地道に潰していきます。テストを回しながら、落ちた箇所を一つ一つ直していきます。使えないモノは使わないよう注意します。PHPUnit\Framework\Testに変わりました。共存期間(両方使える期間)があったのですが、他のクラスは何故か共存期間がありませんでした。いう乱数を発生させる関数がありますが、実はこれはバグっていました。使う乱数のseedを固定し、乱数に再現性をもたせることができるメソッドです。これで乱数を固定させてテストしているコードがあり、PHPのバージョンを上げたことで、そのテストが落ちるようになりました。指定すると、これまでの間違った挙動を維持できるようになっています。いうところがPHPっぽいですね。グローバル変数はテストケースごとにリセットされていました。リセットされなくなりました。グローバル変数を直接弄っているテストがあり、他のテストに影響を及ぼしていることがありました。これがなかなか難題で、単体でテスト回すと通るけど、通しで回すと落ちるのです。依存関係もよくわからず修正が困難を極めることもありました。以前の仕様を維持できますが、テストが激しく遅くなるのであまりおすすめしません。修正方法がわかんなかったら仕方ないですけどね...。値と比較するのヤメレ!とか言われてテストが落ちます。設定の違いが原因ですが、何故落ちているかよくわからなくて、修正終盤で疲れていた僕のプルリクタイトルがこちらです。ようなアサーションが一切ありませんでした。アサーションの無いテストは「アサーション忘れてるぞ!」と言われ、落ちるようになりました。記入しておきましょう。してよかったことアサーション忘れに気づくようになり、その他の面でもかなり使いやすくなっているのですが、一番の恩恵は高速化です。するだけでテストの時間が20分から4分程度になりました。3台あったCI環境ですが、1台ですむようになりました。stateなどによる高速化があったんだと思います。5倍の速さになりました。ユニットテストって純粋なPHPの速度依存なので、バージョン上げるだけでここまでの劇的改善となりました。PHP7が早いというのは本当だった。しなきゃいけないんですけどね。*1:"s"は多分seedのs*2:正確には、これはPHPUnitではなく、PHPのバージョンアップによるものなのですが、PHPUnitのバージョンを上げる時に初めて気づいたのでここで書いちゃってます。*3:他にも、implodeは引数の順番を入れ替えても正常に動作するなど、PHPには互換性維持のための面白い仕様がいくつかあります。https://www.php.net/manual/ja/function.implode.php*4:本番アプリケーションにPHP7を適用した際は、微妙に早くなったのですが、そこまで劇的な改善ではなく。これは結局、PHPの処理時間よりも、APIのやり取りとかのネットワーク部分だったり、PHP以外の部分の方が、レスポンス時間に占める割合が多かったからなんですよね。ユニットテストは純粋にPHPの速さですからね。スポンサーをお願いしますブログを投稿したらX(twitter)でお知らせしています。