Skip to content

Zeroplex 生活隨筆

軟體開發、伺服器和生活瑣事

小 縮小字型大小。 中 重設字型大小。 大 放大字型大小。

標籤: Testing

軟體測試的經驗分享

Posted on 2020 年 10 月 26 日2021 年 3 月 12 日 By 日落 在〈軟體測試的經驗分享〉中尚無留言

最近同事在拼 unit test,就將以前撰寫測試的一些經驗整理出來分享。 

我不是專業的測試工程師,只是好死不死需要自幹 unit test,簡報中若有錯誤或是過時的地方,歡迎留言討論。整理後一起更新到簡報上!

以下做一些筆記:
  • s7:現在比較沒特別在分白箱和黑箱了,比較篇方法,如:TDD
  • s16:測試不只要用正確的資料做測試,也要拿錯誤的資料來跑
  • s25:每個 test framework or library 都有各自的特色,挑需要、順手的使用即可
  • s66:不要把測試搞得太複雜啊,到最後還要為測試程式建立另外的測試 XD
  • s68:不管是原始碼或是測試,都是越簡單越不容易出錯
  • s69:Google 這邊有篇「撰寫無法測試的程式」可參考
  • s80:SOLID 僅是用於物件導向程式語言;方法可參考但不一定要完全遵守
  • 公司在找工程師 XD
Tags:Testing, 軟體測試

注意 PHPUnit 的 fixture 行為

Posted on 2019 年 6 月 28 日2021 年 3 月 12 日 By 日落 在〈注意 PHPUnit 的 fixture 行為〉中尚無留言

理論上,各個 test case 不應該互相影響,所以 PHPUnit 設計的 fixtures 像是 setUp() 和 tearDown() 都會在各個 test case 前後執行。

簡單做個測試:

<?php

use PHPUnitFrameworkTestCase;

class LibTest extends TestCase
{
    public function setUp(): void
    {
        $this->data = null;
    }

    public function tearDown(): void
    {
        $this->data = null;
    }

    public function testOne()
    {
        $this->data = 123;
        $this->assertEquals(123, $this->data);

        return $this->data;
    }

    /**
     * @depends testOne
     */
    public function testTwo($data)
    {
        $this->assertEquals(123, $this->data);
    }
}

// -----

PHPUnit 8.2.3 by Sebastian Bergmann and contributors.

.F

即使在 test case 加上 @depends 標記,fixture 也會運作,所以若是要讓下一個 test case 繼續使用的測試值,都必須用 return 的方式傳值。

—-

另外,Laravel 提供的 testing tools 也有相同的行為。例如:「RefreshDatabase」,在 test case 執行結束以後就會把資料清空,因此如果要對 DB 做多像檢查,就必須在同一個 test case 中建立多個 assertions (個人不喜歡這樣做),不然即使加上 @depends,DB 中的資料也會被 refresh 掉。

Tags:Laravel, PHP, Testing

其他

關於我  (About me)

小額贊助

  文章 RSS Feed

  留言 RSS Feed

Apache AWS Bash C/C++ Docker FreeBSD GCP Git Google Java JavaScript Laravel Linux Microsoft MSSQL MySQL Nginx PHP PHPUnit PostgreSQL Python Qt Ubuntu Unix Vim Web Windows WordPress XD 作業系統 分享 好站推薦 專題 攝影 新奇搞笑 新聞 旅遊 生活雜記 程式設計 網路架站 網頁設計 資訊學習 資訊安全 遊戲 音樂


創用 CC 授權條款
本著作係採用創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款授權.