1. 程式人生 > >測試與優化bugbugbugbug

測試與優化bugbugbugbug

自己 調優 test rand 操作 per 程序 返回 new

單元測試

      ?? 211606318  林鋥寒 
      ??211606335   吳沂章

附一張至誠的朝陽美照(? ω ?)
技術分享圖片

設計單元測試的思路

  • 對每一個方法的代碼塊進行測試,返回測試結果並和預期結果進行比對

  • 對源代碼進行相應的重構,以適應測試代碼的調用,且不影響源代碼的正常運行

構造測試數據的思路

  • 通過assertEquals進行對比,可以得出測試是否成功
  • 測試要調用的方法需為public類型,否則無法測試
  • 如需調用源代碼的全局變量需要將其修改為public類型
@Test
    public void testAdd() {
        
        assertEquals(4, new MathExam6335().add(2,2,1)); 
    }
    
    @Test
    public void testSub_0() {
        
        assertEquals(2, new MathExam6335().sub(2,4,1)); 
    }

    @Test
    public void testSub_1() {
        assertEquals(0, new MathExam6335().sub(2,2,1));
    }


    @Test
    public void testMul_0() {
        assertEquals(4, new MathExam6335().mul(2,2,1));
    }
    
    @Test
    public void testMul_1() {
        assertEquals(0, new MathExam6335().mul(0,2,1));
    }


    @Test
    public void testDiv_0() { 
        assertEquals("1", new MathExam6335().div(3,3,1));
    }
    
    @Test
    public void testDiv_1() {
        assertEquals("0", new MathExam6335().div(0,3,1));
    }
    
    @Test
    public void testDiv_3() {
        assertEquals("1...1", new MathExam6335().div(3,2,1));
    }
  • 測試代碼的覆蓋率截圖

技術分享圖片

結構優化

UML類圖

技術分享圖片

程序流程圖

技術分享圖片

重構解析

  • 重構了3年級題目生成方法中 操作數操作符 的隨機生成

  • 在代碼中隨機生成 操作數操作符 的地方很多,有很大的資源浪費,重構處這兩處方法可以很好的改善代碼的重復率

  • 重構後方法的作用:
    • 操作符——operator()
      • 返回一個隨機符號
    • 操作數——operand()
      • 返回一個隨機數字

性能調優

優化前效能分析截圖

技術分享圖片

性能瓶頸

  • 代碼冗余,繁雜
  • 代碼內的個方法塊互相依賴性較高,不利於以後擴展

優化方案

  • 將重復的代碼重構成一個方法,減少資源重復
  • 將代碼塊重新封裝,減少依賴性

優化後效能分析截圖

技術分享圖片

總結

  • 這次代碼感覺自己有很多的知識點不會,導致代碼優化有點困難,經過兩天兩夜的奮戰,讓我們看到了提交作業的希望(至誠的朝陽),對於自己來說,也算是學到了一點東西!??

測試與優化bugbugbugbug