草圖:就是使用紙和筆去手繪這個界面草圖,以便快速的和產(chǎn)品經(jīng)理以及其他同事進(jìn)行討論,在進(jìn)行想法具體化。
我們看到的這張圖實(shí)際上他畫的相當(dāng)規(guī)整,它已經(jīng)是一個完整的產(chǎn)品架構(gòu)圖。但是我們工作中的話可能只是信手拈來,草草的畫上幾筆,這些都沒關(guān)系,草圖強(qiáng)調(diào)的就是能快速地將想法具體化,然后和其他同事進(jìn)行討論。
低保真原型圖:就是在草圖的基礎(chǔ)上,通過計算機(jī)的幫助,由簡單的線框和文字去繪制這個界面。當(dāng)然,低保真原型不能只是簡單的看,還要進(jìn)行一些簡單的交互操作。用白話來講就是動態(tài),可以簡單地進(jìn)行體驗(yàn)一下這個設(shè)計,盡可能的發(fā)現(xiàn)一些問題。去進(jìn)行一定的修改。
我們看到的這張圖實(shí)際上他畫的相當(dāng)規(guī)整,它已經(jīng)是一個完整的產(chǎn)品架構(gòu)圖。但是我們工作中的話可能只是信手拈來,草草的畫上幾筆,這些都沒關(guān)系,草圖強(qiáng)調(diào)的就是能快速地將想法具體化,然后和其他同事進(jìn)行討論。
低保真原型圖:就是在草圖的基礎(chǔ)上,通過計算機(jī)的幫助,由簡單的線框和文字去繪制這個界面。當(dāng)然,低保真原型不能只是簡單的看,還要進(jìn)行一些簡單的交互操作。用白話來講就是動態(tài),可以簡單地進(jìn)行體驗(yàn)一下這個設(shè)計,盡可能的發(fā)現(xiàn)一些問題。去進(jìn)行一定的修改。
高保真原型圖:就是先在這個線框圖的基礎(chǔ)上進(jìn)行視覺設(shè)計,在將這個視覺設(shè)計稿呢制作成可進(jìn)行交互操作的原型。這個效果很可能都能和最后的那個產(chǎn)品相差無幾,甚至你可以在你的手機(jī)上進(jìn)行模擬的操作。
高保真原型呢一般用于交付給開發(fā)與測試那邊。開發(fā)人員將按照高保真原型進(jìn)行開發(fā)。測試人員將以高保真原型為基準(zhǔn),對開發(fā)人員交付的產(chǎn)品進(jìn)行測試。
所以大家可以看到,在設(shè)計流程中,設(shè)計師首先要通過草圖與產(chǎn)品經(jīng)理以及其他同事進(jìn)行討論,以確定產(chǎn)品的設(shè)計方向。之后再做一個低保真原型來進(jìn)行打磨設(shè)計。在之后會制作高保真原型來交付給開發(fā)和測試人員。
所以設(shè)計師的整個這個設(shè)計工作都是一個和其他角色進(jìn)行溝通的一個過程。而我們剛才提到的設(shè)計的三個步驟也是圍繞溝通而展開的。
(二)為什么要畫原型
減少修改成本,便于溝通討論
畫原型最大的目的呢,是為了減少后期修改成本,用一個低成本的原型去體驗(yàn)去討論,去修改,盡量避免開發(fā)好了再去修改。第二呢,一個可交互的原型更方便和其他人去進(jìn)行溝通和討論,所謂一圖勝千文。所以圖片比文字的溝通效果要好很多。那么,如果說是原型,或者可以交互的原型,它的溝通效果就要比圖片要好很多。
所以,需要強(qiáng)調(diào)的是,原型只不過是一個設(shè)計工具,設(shè)計的思想才是真正的核心所在。所以,在學(xué)好工具的基礎(chǔ)上,應(yīng)該多花時間在設(shè)計思路的學(xué)習(xí)上。
三、開發(fā)
接下來就到了程序員編寫程序的三個步驟了。(關(guān)于開發(fā),在這里不做詳述)
1、app軟件開發(fā)大功能模塊代碼編寫
2、app軟件開發(fā)大概的界面模塊編寫
3、把大概的界面和功能連接后,app軟件開發(fā)的大致demo就出來了
4、demo自己試用和體驗(yàn)幾遍后,根據(jù)情況修改
5、沒有大錯誤后,0.9版本可以嘗試尋找beta用戶
6、根據(jù)測試用戶的反饋,重復(fù) 前三個步驟
四、測試
測試工程師,一般就是從用戶角度出發(fā),檢測開發(fā)工程師做的東西是不是符合產(chǎn)品的需求,或是用戶體檢好不好?不要求有太專業(yè)的知識,但是要細(xì)心,對產(chǎn)品敏感。所以有很多不是計算機(jī)專業(yè)的人員照樣可以做測試工程師,因?yàn)槲覀兊漠a(chǎn)品需要不同的人來說嘛。
也有比較專業(yè)的白盒或是灰盒測試,這就要求測試人員會些兒編程技術(shù)了,但是要求不太高,不必會某種語言的高級編程,普通應(yīng)用或是代碼段能看懂就行。問題要考慮全面,細(xì)致,有原則,不能跟著開發(fā)和產(chǎn)品走,這是測試人員的要求。
(一)軟件測試的測試流程有:
制定測試計劃——編輯測試用例——執(zhí)行測試用例——發(fā)現(xiàn)并提交BUG——開發(fā)組修正BUG——對已修正BUG進(jìn)行返測——修正完成的BUG將狀態(tài)置為已關(guān)閉,未正確修正的BUG重新激活.
(二)規(guī)范的測試流程
需求分析:需求分析由產(chǎn)品人員制定,他們要做的不是一份簡單的文檔,而是細(xì)化每一個功能的細(xì)節(jié),每一個按鈕的位置,對于稍大或復(fù)雜一點(diǎn)的需求都進(jìn)行建模。
需求評審:這里會叫上所有參與項目人員進(jìn)行,開發(fā)人員、測試人員、QA人員。測試人員提出需求,開發(fā)人員考慮功能實(shí)現(xiàn)的方案與可行性、當(dāng)然開發(fā)負(fù)責(zé)也是要參與的。測試人員主要是對需求的理解提出疑問,以便才能根據(jù)需求寫用例。QA人員是最終對軟件質(zhì)量進(jìn)行驗(yàn)證的人,所以也需求了解需求
開發(fā)人員編寫排期:開發(fā)人員需求根據(jù)需求功能點(diǎn)進(jìn)行排期。然后將開計劃轉(zhuǎn)交給測試人員。
測試計劃排期:測試人員根據(jù)開發(fā)計劃,對測試具體測試時間,也就是開發(fā)功能完成后的時間,進(jìn)行幾輪測試等。然后,把項目的開發(fā)與測試計劃發(fā)送給各部門負(fù)責(zé)人及參與項目的所有人員。
編寫測試用例:根據(jù)詳細(xì)的需求分檔,開始進(jìn)行用例的編寫。
用例評審:在用例進(jìn)行評審之間,先以郵件形式將用例發(fā)送給相關(guān)人員,以便他們事先了解用例對哪些功能進(jìn)行驗(yàn)證以及驗(yàn)證的細(xì)節(jié)。
然后,測試人員組進(jìn)行用例評審,開發(fā)人員對用例與實(shí)際功能不符合有哪些,產(chǎn)品人員對會通過用例對功能的具體實(shí)現(xiàn)進(jìn)行把握等等。
提交基線:開發(fā)人員完成所有功能后,會對自己的功能進(jìn)行一個自測。自測完成后提交測試人員進(jìn)行基線。
(三)具體測試流程:
開發(fā)人員對于基到測試線的功能進(jìn)行測式,發(fā)現(xiàn)的問題通過缺陷管理工具進(jìn)行反饋,開發(fā)人員對問題進(jìn)行修復(fù),然后,準(zhǔn)備第二輪基。
測試人員完成第一輪測試后,需要寫測試結(jié)論,發(fā)到相關(guān)人員。然后對基線后的第二輪進(jìn)行測試,第二輪會對第一輪中發(fā)現(xiàn)的問題進(jìn)行重點(diǎn)回歸。
測試通過:經(jīng)過兩到三輪或四輪的測試后,直到?jīng)]發(fā)現(xiàn)新的問題,或暫時無法解決,或不緊急的問題。通過上級確認(rèn),可以通過。編寫測試報告與驗(yàn)收方案。
驗(yàn)收方案是交由QA進(jìn)行驗(yàn)證的。在現(xiàn)公司的流程中是將測試與QA分開的,測試人員重點(diǎn)關(guān)注的是功能是否可以正常運(yùn)行。QA關(guān)注的是整個流程的質(zhì)量以及最終用戶的質(zhì)量。有些公司QA與測試是不區(qū)分的,但這對測試的要求會更高,除了關(guān)心功能,還需要關(guān)心整體流程與質(zhì)量。
流程分析:這個流程是規(guī)范的,測試真正融入了整個流程,而且還擔(dān)任了很重的角色,從而也有效的保證了軟件產(chǎn)品的整體質(zhì)量。
那么這個流程是不是完美的呢?不,這個項目流程太強(qiáng)化各種文檔。我們來看測試的工作內(nèi)容,測試計劃、測試用例、測試結(jié)論、測試報告、驗(yàn)收方案、問題的提交跟蹤。其實(shí),我們真用于測試的時間是非常少的,在一周的時間,也許只有一天或不到一天的時間是在進(jìn)行測試的。測試人員只有在測試的時候才會體現(xiàn)出他的價值。而大部分工作卻不能體現(xiàn)他的價值。
當(dāng)然,我這里會省略與測試主流程無關(guān)的東西,真正的測試工作中瑣事很多。
(四)敏捷測試流程
前面講的第一種流程,還是第二種流程都是瀑布式的,嚴(yán)格來說第一種簡陋的都不能稱為瀑布式,對于一個三個月的項目說,產(chǎn)品把需求分析完了給開發(fā),然后產(chǎn)品就沒事兒了;開發(fā)開發(fā)完成之后給測試,然后開發(fā)人員也不忙了。
測試完成之后上線。那么在產(chǎn)品分析的階段,開發(fā)和測試都是沒事干的(這里只對單一項目)。
開發(fā)階段,產(chǎn)品和測試也基本沒事兒。同樣在測試階段,產(chǎn)品與開發(fā)也是沒什么事兒的。
敏捷測試的一個核心是迭代,在每個時間點(diǎn)上,所有項目人員都是有事可做的。
1、下面是我理解中的敏捷測試流程圖:
第一階段:通過上面的流程圖,對于一個月的需求分析,在敏捷中,可能三五天就確定下來。這個需求定得會很模糊,但整體框架確定。產(chǎn)品對其中某一模塊功能確認(rèn),開發(fā)人員開始對確認(rèn)的功能編碼,開發(fā)人員編碼的過程中,測試進(jìn)行功能分解,因?yàn)楦鶕?jù)模糊的需求很難寫出具體的用例,所以,只能盡量對功能進(jìn)行分析得細(xì)些,標(biāo)注需要驗(yàn)證的內(nèi)容。
第二階段:開發(fā)完成后交給測試人員進(jìn)行測試,開發(fā)人員繼續(xù)開發(fā)新的功能。那么測試人員發(fā)現(xiàn)的問題怎么辦呢?會從開發(fā)團(tuán)隊中抽出一個人員來用于解決測試發(fā)現(xiàn)的問題。但開發(fā)進(jìn)度并沒有因?yàn)闇y試而停止。
流程分析:在這個流程中弱化了文檔,強(qiáng)調(diào)了各個人員的溝通,通過這種迭代的方式,三個月的項目,可以能兩個月和兩個半月就會完成。
但這種流程并非完美,加入一個功能在需求分析階段就是錯誤的,因?yàn)樗且粋€迭代漸進(jìn)的過程。也只能一路錯下去。
2、對測試問題的處理
上面的圖更能清晰看出對問題的處理過程。
第一塊面板中是開發(fā)人員未實(shí)現(xiàn)的功能,第二塊面板中是開發(fā)完成功能,測試人員對其進(jìn)行測試,發(fā)現(xiàn)不通過的就放回未開發(fā)的面板中,測試通過的將放到第三塊面板中。