乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      隨想錄(做自己代碼的測(cè)試工程師)

       心不留意外塵 2016-04-15

      from http://blog.csdn.net/feixiaoxing/article/details/40480189

        聯(lián)系信箱:feixiaoxing @163.com 


          很多工程師都有一個(gè)不好的習(xí)慣,因?yàn)榇蠖鄶?shù)it工程師都喜歡寫代碼,但是不喜歡測(cè)試代碼。在他們眼里,把功能做出來是一件很牛逼的事情,而軟件測(cè)試則是一件低級(jí)、價(jià)值量不高的事情。事實(shí)上是否真的如此呢,恐怕未必。姑且不談你寫的這份代碼是否真的會(huì)給用戶或者消費(fèi)者帶來價(jià)值,但是一份極其不穩(wěn)定甚至?xí)r常崩潰的軟件,肯定不會(huì)帶來什么好感,這也就意味著公司投資你作了這個(gè)勞動(dòng)很可能是個(gè)無用功。這個(gè)問題其實(shí)不光小公司有,大公司也是如此。


      (1)很多朋友沒有代碼質(zhì)量意識(shí)。一份軟件的價(jià)值,一方面體現(xiàn)在是否可以滿足客戶的需求,另一方面也體現(xiàn)在它是否可以穩(wěn)定長(zhǎng)久地運(yùn)行。代碼運(yùn)行的時(shí)間越長(zhǎng)、越穩(wěn)定和健壯,這樣才能最大程度保留代碼的價(jià)值。


      (2)測(cè)試工程師遠(yuǎn)沒有開發(fā)工程師了解代碼的健康程度。很多公司的測(cè)試工程師只是按照黑盒的方法對(duì)軟件進(jìn)行測(cè)試,這些測(cè)試的內(nèi)容包括了功能、易用性、邊界測(cè)試、兼容性、性能等等,但是這些測(cè)試都沒有開發(fā)者自己寫的單元測(cè)試重要。大多數(shù)單元測(cè)試可以在第一時(shí)間發(fā)現(xiàn)問題、解決問題,而不是等到測(cè)試的時(shí)候來進(jìn)行解決。如果開發(fā)者覺得代碼哪寫的好像有問題,那么十有八九有問題。只是個(gè)時(shí)間問題而已。


      (3)好代碼是不停修改和重構(gòu)得來的。之前看了很多的代碼,這包括vxworks、gcc、linux、mysql等等,它們中的很多代碼從上個(gè)世紀(jì)八九十年代就已經(jīng)存在了,到今天還在修改。有的是重新調(diào)整流程,有的是為了適配新的cpu,還有的是為了兼容新的設(shè)備特性。所以說,一份健康的代碼需要反復(fù)的測(cè)試、反復(fù)的重構(gòu)、反復(fù)的運(yùn)行,沒有什么是一層不變的。在服務(wù)器上運(yùn)行的很多系統(tǒng)代碼,不知道經(jīng)過了多少次推倒重來的修改,經(jīng)過了多少次作者的代碼檢查,估計(jì)只有真正經(jīng)歷的人才知道。


      (4)現(xiàn)有的工具可以極大地幫助我們進(jìn)行代碼的各種測(cè)試,我有一篇文章談到了這些工具。比如說,CUnit可以幫助我們進(jìn)行單元測(cè)試;splint可以進(jìn)行代碼的靜態(tài)檢查;valgrind可以進(jìn)行代碼的泄漏測(cè)試;gcov可以進(jìn)行覆蓋率的測(cè)試;gprof可以進(jìn)行代碼性能的統(tǒng)計(jì)測(cè)試;gdb的watch功能可以直接幫助我們檢查數(shù)據(jù)是否越界;core dump可以幫助我們保存程序的相關(guān)內(nèi)存信息,為我們逆向調(diào)試提供了方便。當(dāng)然,上面說的都是linux上面的工具,大家可以根據(jù)自己的環(huán)境,看看有沒有什么合適的工具幫到自己提高一下代碼的質(zhì)量。


      (5)有些錯(cuò)誤是隨機(jī)的,但是有一定的概率性。這就要求我們對(duì)相關(guān)數(shù)據(jù)的輸入、輸出進(jìn)行記錄和處理。實(shí)現(xiàn)這個(gè)功能不難,用fprintf和fscanf就可以做到,下面是我自己寫的一份簡(jiǎn)單代碼,算是拋磚引玉之用,

      1. #include <stdio.h>  
      2.   
      3. #define NAME "log.txt"  
      4.   
      5. int main(int argc, char* argv[]) {  
      6.   
      7.     FILE* file;  
      8.     char buf[32];  
      9.     int data;  
      10.     unsigned int udata;  
      11.     char str;  
      12.     unsigned int hex;  
      13.   
      14.     // generate log txt file  
      15.   
      16.     file = fopen(NAME, "rt");   
      17.     if(NULL == file){  
      18.   
      19.         file = fopen(NAME, "w");  
      20.         fprintf(file, "%d\n", 10);  
      21.         fprintf(file, "%u\n", -1);  
      22.         fprintf(file, "%s %c 0x%x\n", "china", 'c', 0x12345678);  
      23.         fclose(file);  
      24.   
      25.         return 1;  
      26.     }  
      27.   
      28.     // read file   
      29.   
      30.     fseek(file, 0, SEEK_SET);  
      31.     fscanf(file, "%d\n", &data);  
      32.     fscanf(file, "%u\n", &udata);  
      33.     fscanf(file, "%s %c 0x%x\n", buf, &str, &hex);  
      34.     fclose(file);  
      35.   
      36.     // output content to the screen  
      37.   
      38.     printf("%d\n", data);  
      39.     printf("%u\n", udata);  
      40.     printf("%s %c 0x%x\n", buf, str, hex);  
      41.   
      42.     return 1;  
      43. }  

      (6)對(duì)于代碼中的日志、打印、告警要進(jìn)行分開處理。有的時(shí)候,代碼運(yùn)行很長(zhǎng)時(shí)間才會(huì)發(fā)生錯(cuò)誤,那么除了core dump和代碼入庫記錄之外,你能看的就是打印日志了,所以寫一份自己的print函數(shù)也是很有必要的。因?yàn)閾Q成自己的print函數(shù)后,這些log你可以顯示出來,也可以保存到文件里面,同時(shí)也可以是一個(gè)空函數(shù),真是太方便了。

      1. #include <stdarg.h>  
      2.   
      3. void printk(char* fmt)  
      4. {  
      5.     va_list args;  
      6.     char buffer[256];  
      7.   
      8.     va_start(args, fmt);  
      9.     vsnprintf(buffer, 256, fmt, args);  
      10.     va_end(args);  
      11.   
      12.     printf("%s", buffer);  
      13. }  

          上面的觀點(diǎn)是我最近一段時(shí)間的感受,歡迎大家來交流。



        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多