我做過(guò)開(kāi)發(fā),也做過(guò)測(cè)試; 現(xiàn)在說(shuō)說(shuō)兩者之間的區(qū)別還有一些其他的想法;

  開(kāi)發(fā)的過(guò)程是:

  ● 功能設(shè)計(jì),或者是理解你要做出來(lái)的是什么功能,用戶到時(shí)候是怎么使用這些功能的

  ● 開(kāi)發(fā)設(shè)計(jì),完成這個(gè)功能需要哪些模塊,數(shù)據(jù)流(dataflow)是怎么樣的,Workflow是怎么樣的;哪些模塊是可以調(diào)用現(xiàn)成的API,哪些需要自己來(lái)寫(xiě);

  ● 編碼,編譯(build),調(diào)試,測(cè)試

  比如我要寫(xiě)個(gè)Android上面的記事本,可以把數(shù)據(jù)傳輸?shù)皆粕,也可以下載下來(lái),但是不一定很頻繁;不需要實(shí)時(shí)同步;這樣我如果換手機(jī)可以把數(shù)據(jù)下載下來(lái),避免數(shù)據(jù)的丟失,或者遷移的麻煩;

  這些功能一旦確定下來(lái)以后,要思考的事情是,放到哪個(gè)云上(快盤(pán),微盤(pán)還是Dropbox等等),怎么放(文件傳輸?shù)姆椒,用Http,還是Email,還是ftp,或者自己寫(xiě)Socket);有哪些現(xiàn)成的API可以用,比如Java的httpclient的Jar包可以使用,有哪些需要自己寫(xiě),比如文件上傳過(guò)程需要把文件讀出來(lái)編程Java Stream,需要研究哪些技術(shù),文件上傳的Http Post方法等等;由于訪問(wèn)的安全性問(wèn)題,都使用了OpenID,那我需要研究一下OpenID(oAuth)如何使用等等;

  接下來(lái)是編碼,編譯,調(diào)試,測(cè)試; 這個(gè)時(shí)候也是需要測(cè)試來(lái)參與的;

  開(kāi)發(fā)對(duì)測(cè)試的期望是, 為了提高效率,希望每次的改動(dòng)的驗(yàn)證可以很快完成;所以如果測(cè)試可以參與一些API的測(cè)試;那么開(kāi)發(fā)的效率可以上去;開(kāi)發(fā)也希望測(cè)試多去了解功能是如何實(shí)現(xiàn)的;

  開(kāi)發(fā)完以后,希望測(cè)試可以在不同的場(chǎng)景去使用,及早的發(fā)現(xiàn)問(wèn)題;清晰的溝通這些問(wèn)題;

  開(kāi)發(fā)其實(shí)花80%的時(shí)間在研究前期的技術(shù),還有是調(diào)試,而對(duì)于調(diào)試,因?yàn)?0%的模塊是比較穩(wěn)定的,所以其實(shí)調(diào)試的是20%的代碼,希望的時(shí)候這部分代碼的調(diào)試不會(huì)影響到其他模塊,所以單元測(cè)試也好,API的測(cè)試也好都是很有必要的;

  測(cè)試的過(guò)程:

  ● 理解產(chǎn)品的功能,用戶的場(chǎng)景

  ● 開(kāi)發(fā)測(cè)試用例,從多個(gè)角度去使用產(chǎn)品

  ● 新功能測(cè)試,系統(tǒng)測(cè)試,性能測(cè)試,壓力測(cè)試等等

  ● 自動(dòng)化測(cè)試,提高測(cè)試效率

  ● file bug,理解bug產(chǎn)生的原因

  測(cè)試對(duì)開(kāi)發(fā)的期望是,提高可測(cè)試性,比如更多的log信息,出錯(cuò)的信息是有意義的(其實(shí)這個(gè)對(duì)開(kāi)發(fā)也是有好處的),有新的改動(dòng)能夠通知測(cè)試;對(duì)測(cè)試而言,了解到的信息越多,越能發(fā)現(xiàn)更多的bug;如果開(kāi)發(fā)可以告訴測(cè)試如何去debug的方法,然后測(cè)試可以自己debug,幫助開(kāi)發(fā)解決一些相對(duì)簡(jiǎn)單的bug,那么測(cè)試和開(kāi)發(fā)的合作很和諧。