æµè¯ä¸éæåæå¯¹æ¯è¯¦è§£ | AIçæåç¿»è¯
é®é¢ï¼https://yinwang0.wordpress.com/2013/12/27/tests-and-static-anaysis/ çå客æç« 说äºä»ä¹ï¼
åçï¼
è¿ç¯æç« ï¼âTests and Static Analysisâ ä½è çå ï¼2013å¹´12æ27æ¥åå¸ï¼ï¼ç³»ç»å°è§£éäºè½¯ä»¶æµè¯å static analysis ä¹é´çåºå«ã以䏿¯å ¨é¢çåè§£ï¼
èæ¯
ä½è å¼åäºç¨äº Python ç static analysis å·¥å · PySonarï¼ç»å¸¸è¢«é®å°ï¼âtesting å static analysis æä»ä¹åºå«ï¼âââäºæ¯åäºè¿ç¯æç« ï¼ç»åºç³»ç»æ§çåçã
1. éæ vs. å¨æç¹æ§
static analysis å tests 齿¨å¨æé«ä»£ç è´¨éï¼ä½å®ä»¬å¨æ¬è´¨ä¸ä¸åï¼static analysis ä¸è¿è¡ç¨åºï¼éæï¼ï¼è tests æ§è¡ç¨åº 并使ç¨å®é è¾å ¥ï¼å¨æï¼ã
- Static analysis å°±åç¼è¯å¨ç±»åæ£æ¥å¨ï¼type checkerï¼çæ´å¼ºå¤§çæ¬ãå®å¯ä»¥æ£æµèµæºæ³æ¼ãæ°ç»ç´¢å¼è¶ç以åå®å ¨é£é©ââæ¬è´¨ä¸æ¯æ¨ç å¯è½ åççæ åµã
- Tests å°±åâç°å®çæ´»ä¸çå°å®éªâââå®ä»¬å¨ç¹å®æ¡ä»¶ä¸è¿è¡ç¨åºå¹¶è§å¯ç»æã
Static analysis å¯ä»¥åç° tests å¯è½æ°¸è¿æ£æµä¸å°çé®é¢ï¼ä¾å¦ï¼å¯¼è´å®å ¨æ¼æ´ç夿äºä»¶é¾ï¼ï¼è tests å¯ä»¥æè· static analysis æ æ³æ£æµç bugï¼ä¾å¦ï¼èªå¨é©¾é©¶ä»ªå¨ç¹å®é«åº¦åé度ä¸äº§çéè¯¯ç»æï¼ã
2. Tests æ æ³è¯ææ£ç¡®æ§
éè¿ tests 并䏿å³çç¨åºæ¯æ£ç¡®çââå®åªæå³çä½ æ²¡æåâé常æè ¢çäºæ âãè¦æ£å¼ä¿è¯æ£ç¡®æ§ï¼ä½ éè¦ä½¿ç¨å CoqãIsabelle æ ACL2 è¿æ ·çå®çè¯æå¨è¿è¡æºæ¢°è¯æï¼è¿éè¦æ·±å»çæ°å¦ç¥è¯ï¼èä¸å¾å¾ä¸å¯è¡ã
3. 人工å³å¨çå·®å¼
Testing éè¦å¤§éçæå¨å·¥ä½ã为âæè ¢ç bugâå¦ç©ºæéè§£å¼ç¨ç¼å tests å¾ç¹çï¼èä¸å®ç°è¯å¥½ç path coverage å ä¹ä¸å¯è½ï¼å 为æ§è¡è·¯å¾çæ°ééçç¨åºè§æ¨¡åææ°å¢é¿ã
ç¸æ¯ä¹ä¸ï¼static analysis æ¯ å®å ¨èªå¨çãå®ç³»ç»å°æ¢ç´¢ææè·¯å¾ï¼æä¾è¿é«äºä»»ä½äººç±»æµè¯ç¼åè æè½è¾¾å°ç path coverageââå³ä½¿ä½¿ç¨å¯å弿¹æ³æ¥æ§å¶è¿è¡æ¶é´ã
4. ç¬¦å·æ¨ç
Tests ä½¿ç¨ å ·ä½çè¾å ¥å¼ï¼å æ¤æªæµè¯çå¼å¤ç bug å¯è½æºè¿å»ãStatic analysis æ¯ ç¬¦å·åçââå®å¯¹æ¯ä¸ªåéç ææå¯è½å¼ è¿è¡æ¨çï¼èä¸ä» ä» æ¯å ·ä½å¼ãè¿å è®¸å®æ£æµè¾¹çæ¡ä»¶ bugï¼ä¾å¦ï¼æ°ç»ç´¢å¼è¶çï¼ï¼è tests åªæå¨æ°å¥½ä½¿ç¨æ£ç¡®è¾å ¥å¼æ¶æè½æè·è¿äº bugã
5. Static Analysis ä¸çå鳿§
ä¸äº static analysis å·¥å ·è®¾è®¡å¾è¾ä¸ºä¿å®ââä¸ç¡®å®æ¶ï¼å®ä»¬ä¼è¦åâè¿éå¯è½æé®é¢âãè¿å¯è½å¯¼è´ false positivesï¼å ³äºå®é æ°¸è¿ä¸ä¼åçç bug çè¦åï¼ãStatic analysis ä¸ç大éå·¥ç¨å·¥ä½å°±æ¯éä½ false positive çã
å¦ä¸æ¹é¢ï¼tests 没æ false positivesââ妿 test 失败ï¼ç¨åºå¨é£äºæ¡ä»¶ä¸ç¡®å®å¤±è´¥äºã
6. Static Analysis çä»·å¼
Static analysis æ¯æå¼ºå¤§ç bug åç°å·¥å ·ï¼ä¸éè¦å¤§éçæå¨å³å¨ãå®å¤çæ èãç¹çç bug æè·ï¼åå¯è½å¯¼è´é£æºå æ¯æå¯¼å¼¹åå°ç空æéè§£å¼ç¨ï¼ï¼ä»è让人类æµè¯è 䏿³¨äºæ´ææºæ §åè¶£å³ç testsã
æ»ç»è¡¨æ ¼
åèæç®ï¼
