相對軟件開發(fā)理論的成熟度來講,測試?yán)碚撨€非常的稚嫩。(當(dāng)然,和工業(yè)開發(fā)理論比較,軟件開發(fā)理論也是非常的稚嫩。)測試行業(yè)的興起,將會有很大一部分取決于測試?yán)碚摰某墒於取?BR> 現(xiàn)在的測試(技術(shù)和管理)還有一些問題是沒有定論的,也是我在一直思考的問題(也許這些問題已經(jīng)有人解決,小生孤僻寡聞而已),下面將這些問題作一個總結(jié),以期望能在以后找到解答。
1.測試的終點在哪里?
作為一個工程過程,無法清晰的定義活動的結(jié)束準(zhǔn)則,就像在大海中航行的船只,沒有自己的目的地,是一件很可怕的事情。測試就是這么一條沒有目標(biāo)的船。
最合適的測試結(jié)束的準(zhǔn)則應(yīng)該是缺陷數(shù)控制在一個可以接受的范圍內(nèi)。但是在實際的過程中,是永遠(yuǎn)無法知道未發(fā)現(xiàn)的缺陷的數(shù)量的,雖然會有方法可以估計出未知缺陷的數(shù)目,可是其準(zhǔn)確性和所付出的成本使其的可行性并不高。所以雖然這個準(zhǔn)則最合適,但是并不實用。
另外一個測試結(jié)束準(zhǔn)則是以過程為衡量標(biāo)準(zhǔn)。按照測試過程走完了相應(yīng)的步驟,完成了該作的工作,就算測試完成。這種測試結(jié)束準(zhǔn)則和沒有準(zhǔn)則沒有什么兩樣,根本沒有達(dá)到驗收的目的。換句話說,該結(jié)束準(zhǔn)則有一個假設(shè),這個假設(shè)就是已定義的測試過程是完全有效的,在這種情況下,才能采用這個準(zhǔn)則來結(jié)束掉測試活動。所以這個準(zhǔn)則雖然不是很準(zhǔn)確,卻是最常見的測試結(jié)束的準(zhǔn)則。
還有一個也是很常見的準(zhǔn)則,就是時間線結(jié)束準(zhǔn)則。到了dead line了,不管怎么樣,就算結(jié)束。這種準(zhǔn)則也會經(jīng)常在一些不規(guī)范的公司遇到。個人認(rèn)為這種準(zhǔn)則對測試的危害,遇到組織里是以這個準(zhǔn)則來結(jié)束測試的話,測試質(zhì)量只能靠上帝來保佑了。
綜上所述,如果能夠定義出一個既能作為客觀的評價標(biāo)準(zhǔn),又比較容易實施的測試結(jié)束準(zhǔn)則的話,是將會對測試?yán)碚摰某墒煊猩钸h(yuǎn)的影響。
2.如何評價測試員的優(yōu)劣
作為測試活動的行為主體,測試員的優(yōu)劣直接影響測試活動的優(yōu)劣??墒侨绾尾拍茉u價測試員的優(yōu)劣呢?
不能以發(fā)現(xiàn)缺陷的數(shù)量去衡量測試員的水平,這樣做只能將測試引到以發(fā)現(xiàn)表面的缺陷為主的活動。
不能編寫的文檔的數(shù)量時間比去衡量測試員的水平。
不能以被接受的缺陷數(shù)去衡量測試員的水平
優(yōu)秀的測試員能見微知著;
優(yōu)秀的測試員有獨特的思維方法,能不斷創(chuàng)新測試方法;
優(yōu)秀的測試員能清晰的將缺陷描述清楚,并能說服開發(fā)人員改正;
優(yōu)秀的測試員能從用最小的信息獲得對系統(tǒng)的理解;
優(yōu)秀的測試員需要思維靈活,知識全面。
這些都是定性的分析,有很大的主觀因素在里面,如果能有一種方法,能將這些與結(jié)果掛鉤,進(jìn)行量化,將會對測試方面的人力資源管理有很大的幫助。
3.如何體現(xiàn)測試的價值
測試作為開發(fā)的一個服務(wù)部門,能不能很好的體現(xiàn)自己的價值,這將是以后測試能不能良性的發(fā)展的一個重要因素。
體現(xiàn)測試的價值有很多的難點,下面我逐一說明:
1.測試的成果多是無形資產(chǎn),很難衡量。產(chǎn)品質(zhì)量和企業(yè)形象這類資產(chǎn)可以說是測試能產(chǎn)生的最直接結(jié)果,但是這種資產(chǎn),將會很難度量。測試能產(chǎn)生的第二類成果是提高開發(fā)的能力,也同樣屬于難以衡量的結(jié)果。
2.被識別的測試成果很容易被忽略是測試的價值。一提到優(yōu)秀的軟件,很多人首先想到的就是高超的程序設(shè)計,嫻熟的編程技巧,成熟的軟件過程,很少人想到是經(jīng)過了嚴(yán)格而全面的測試。測試總是生存在這個被遺忘的角落。
3.過多的體現(xiàn)測試的價值會造成開發(fā)和測試的對立。測試能產(chǎn)生的最直觀的結(jié)果就是缺陷,而缺陷恰恰是證明了開發(fā)的不足(雖然說是對事不對人,但是誰有能看到自己寫的程序被人吹毛求疵,還拿結(jié)果來作為其工作成果而保證不大動肝火呢?)過多的強調(diào)測試價值,會讓敵對的情緒滋生,所以明智的產(chǎn)品經(jīng)理,往往會弱化測試的功效,而趨向于建立起一種平衡。
所以,現(xiàn)階段測試價值的體現(xiàn),往往決定于對測試的態(tài)度,測試的價值也只有在他的心中能有所體現(xiàn)。這種不能得到大多數(shù)人廣泛認(rèn)同的局面,明顯是不利于建立測試的權(quán)威性和其它人員對測試活動的支持的。找到恰當(dāng)?shù)捏w現(xiàn)測試價值的方法,是困擾測試經(jīng)理和對測試有良好認(rèn)識的產(chǎn)品經(jīng)理的一個大問題。
4.有關(guān)測試模式的思考
對測試模式的想法完全起源于設(shè)計模式。既然能夠把復(fù)雜的體系結(jié)構(gòu)設(shè)計能抽象,總結(jié)成這么一套東西,為什么不能對測試活動也如是觀之呢?
現(xiàn)在我對模式的理解還不是很深,也沒有很多的測試經(jīng)驗,所以到現(xiàn)在為止,只能抽象成一種模式,我將其命名為包含模式(include)
模塊A中引用模塊B作為A的子功能,這時的測試方法應(yīng)該是先測試B模塊,然后再將B模塊中的任何一個路徑作為A的一部分來測試A模塊,這時B模塊中的任何一條路徑,已經(jīng)被同化成等價類(雖然在B模塊的測試中,它們可能不屬于同一個等價類)
(這只是一種思維構(gòu)想,希望能夠拋磚引玉,能將這個體系完善起來)
5.測試與開發(fā)的關(guān)系
測試到底和開發(fā)處在怎么樣的一個關(guān)系下才能夠較好的產(chǎn)生測試應(yīng)該達(dá)到的效果呢?
測試部門獨立于開發(fā)部門。這種模式可能源于傳統(tǒng)制造行業(yè)的QC和生產(chǎn)部門的分開。其目的是為了保證測試過程和測試結(jié)果的客觀性和有效性。這種模式相當(dāng)于把測試和開發(fā)分成兩個涇渭分明的活動,并沒有過多的考慮兩種活動之間的互為補益。在這種模式下,很可能演變成測試和開發(fā)之間的對立,或者增加測試和開發(fā)之間的溝通成本。
邊測試,邊開發(fā)。這是XP的輕量級開發(fā)過程所倡導(dǎo)的,現(xiàn)在的測試驅(qū)動開發(fā)理論就是符合了這種模式。采用先設(shè)計測試,再進(jìn)行開發(fā),當(dāng)開發(fā)的軟件通過了所有的測試,軟件就完成了。這種方式其實并沒有規(guī)避自己測試自己代碼所產(chǎn)生的局限性問題,只是將思維的順序作了些改變,降低了思維定式對軟件開發(fā)產(chǎn)生缺陷的影響。
測試部門屬于研發(fā)中心,但獨立于項目組。這種模式保證了測試與項目組之間的最終目標(biāo)的一致性(高質(zhì)量的軟件產(chǎn)品),能有效的降低溝通成本,又能保證測試人員有一定的獨立性,不會過分的受產(chǎn)品經(jīng)理的控制,避免測試失效現(xiàn)象產(chǎn)生。但在這種情況下,相比兩個部門獨立,測試的結(jié)果有可能不會被項目組所重視,需要頻繁的進(jìn)行協(xié)調(diào),才能及時處理缺陷。
1.測試的終點在哪里?
作為一個工程過程,無法清晰的定義活動的結(jié)束準(zhǔn)則,就像在大海中航行的船只,沒有自己的目的地,是一件很可怕的事情。測試就是這么一條沒有目標(biāo)的船。
最合適的測試結(jié)束的準(zhǔn)則應(yīng)該是缺陷數(shù)控制在一個可以接受的范圍內(nèi)。但是在實際的過程中,是永遠(yuǎn)無法知道未發(fā)現(xiàn)的缺陷的數(shù)量的,雖然會有方法可以估計出未知缺陷的數(shù)目,可是其準(zhǔn)確性和所付出的成本使其的可行性并不高。所以雖然這個準(zhǔn)則最合適,但是并不實用。
另外一個測試結(jié)束準(zhǔn)則是以過程為衡量標(biāo)準(zhǔn)。按照測試過程走完了相應(yīng)的步驟,完成了該作的工作,就算測試完成。這種測試結(jié)束準(zhǔn)則和沒有準(zhǔn)則沒有什么兩樣,根本沒有達(dá)到驗收的目的。換句話說,該結(jié)束準(zhǔn)則有一個假設(shè),這個假設(shè)就是已定義的測試過程是完全有效的,在這種情況下,才能采用這個準(zhǔn)則來結(jié)束掉測試活動。所以這個準(zhǔn)則雖然不是很準(zhǔn)確,卻是最常見的測試結(jié)束的準(zhǔn)則。
還有一個也是很常見的準(zhǔn)則,就是時間線結(jié)束準(zhǔn)則。到了dead line了,不管怎么樣,就算結(jié)束。這種準(zhǔn)則也會經(jīng)常在一些不規(guī)范的公司遇到。個人認(rèn)為這種準(zhǔn)則對測試的危害,遇到組織里是以這個準(zhǔn)則來結(jié)束測試的話,測試質(zhì)量只能靠上帝來保佑了。
綜上所述,如果能夠定義出一個既能作為客觀的評價標(biāo)準(zhǔn),又比較容易實施的測試結(jié)束準(zhǔn)則的話,是將會對測試?yán)碚摰某墒煊猩钸h(yuǎn)的影響。
2.如何評價測試員的優(yōu)劣
作為測試活動的行為主體,測試員的優(yōu)劣直接影響測試活動的優(yōu)劣??墒侨绾尾拍茉u價測試員的優(yōu)劣呢?
不能以發(fā)現(xiàn)缺陷的數(shù)量去衡量測試員的水平,這樣做只能將測試引到以發(fā)現(xiàn)表面的缺陷為主的活動。
不能編寫的文檔的數(shù)量時間比去衡量測試員的水平。
不能以被接受的缺陷數(shù)去衡量測試員的水平
優(yōu)秀的測試員能見微知著;
優(yōu)秀的測試員有獨特的思維方法,能不斷創(chuàng)新測試方法;
優(yōu)秀的測試員能清晰的將缺陷描述清楚,并能說服開發(fā)人員改正;
優(yōu)秀的測試員能從用最小的信息獲得對系統(tǒng)的理解;
優(yōu)秀的測試員需要思維靈活,知識全面。
這些都是定性的分析,有很大的主觀因素在里面,如果能有一種方法,能將這些與結(jié)果掛鉤,進(jìn)行量化,將會對測試方面的人力資源管理有很大的幫助。
3.如何體現(xiàn)測試的價值
測試作為開發(fā)的一個服務(wù)部門,能不能很好的體現(xiàn)自己的價值,這將是以后測試能不能良性的發(fā)展的一個重要因素。
體現(xiàn)測試的價值有很多的難點,下面我逐一說明:
1.測試的成果多是無形資產(chǎn),很難衡量。產(chǎn)品質(zhì)量和企業(yè)形象這類資產(chǎn)可以說是測試能產(chǎn)生的最直接結(jié)果,但是這種資產(chǎn),將會很難度量。測試能產(chǎn)生的第二類成果是提高開發(fā)的能力,也同樣屬于難以衡量的結(jié)果。
2.被識別的測試成果很容易被忽略是測試的價值。一提到優(yōu)秀的軟件,很多人首先想到的就是高超的程序設(shè)計,嫻熟的編程技巧,成熟的軟件過程,很少人想到是經(jīng)過了嚴(yán)格而全面的測試。測試總是生存在這個被遺忘的角落。
3.過多的體現(xiàn)測試的價值會造成開發(fā)和測試的對立。測試能產(chǎn)生的最直觀的結(jié)果就是缺陷,而缺陷恰恰是證明了開發(fā)的不足(雖然說是對事不對人,但是誰有能看到自己寫的程序被人吹毛求疵,還拿結(jié)果來作為其工作成果而保證不大動肝火呢?)過多的強調(diào)測試價值,會讓敵對的情緒滋生,所以明智的產(chǎn)品經(jīng)理,往往會弱化測試的功效,而趨向于建立起一種平衡。
所以,現(xiàn)階段測試價值的體現(xiàn),往往決定于對測試的態(tài)度,測試的價值也只有在他的心中能有所體現(xiàn)。這種不能得到大多數(shù)人廣泛認(rèn)同的局面,明顯是不利于建立測試的權(quán)威性和其它人員對測試活動的支持的。找到恰當(dāng)?shù)捏w現(xiàn)測試價值的方法,是困擾測試經(jīng)理和對測試有良好認(rèn)識的產(chǎn)品經(jīng)理的一個大問題。
4.有關(guān)測試模式的思考
對測試模式的想法完全起源于設(shè)計模式。既然能夠把復(fù)雜的體系結(jié)構(gòu)設(shè)計能抽象,總結(jié)成這么一套東西,為什么不能對測試活動也如是觀之呢?
現(xiàn)在我對模式的理解還不是很深,也沒有很多的測試經(jīng)驗,所以到現(xiàn)在為止,只能抽象成一種模式,我將其命名為包含模式(include)
模塊A中引用模塊B作為A的子功能,這時的測試方法應(yīng)該是先測試B模塊,然后再將B模塊中的任何一個路徑作為A的一部分來測試A模塊,這時B模塊中的任何一條路徑,已經(jīng)被同化成等價類(雖然在B模塊的測試中,它們可能不屬于同一個等價類)
(這只是一種思維構(gòu)想,希望能夠拋磚引玉,能將這個體系完善起來)
5.測試與開發(fā)的關(guān)系
測試到底和開發(fā)處在怎么樣的一個關(guān)系下才能夠較好的產(chǎn)生測試應(yīng)該達(dá)到的效果呢?
測試部門獨立于開發(fā)部門。這種模式可能源于傳統(tǒng)制造行業(yè)的QC和生產(chǎn)部門的分開。其目的是為了保證測試過程和測試結(jié)果的客觀性和有效性。這種模式相當(dāng)于把測試和開發(fā)分成兩個涇渭分明的活動,并沒有過多的考慮兩種活動之間的互為補益。在這種模式下,很可能演變成測試和開發(fā)之間的對立,或者增加測試和開發(fā)之間的溝通成本。
邊測試,邊開發(fā)。這是XP的輕量級開發(fā)過程所倡導(dǎo)的,現(xiàn)在的測試驅(qū)動開發(fā)理論就是符合了這種模式。采用先設(shè)計測試,再進(jìn)行開發(fā),當(dāng)開發(fā)的軟件通過了所有的測試,軟件就完成了。這種方式其實并沒有規(guī)避自己測試自己代碼所產(chǎn)生的局限性問題,只是將思維的順序作了些改變,降低了思維定式對軟件開發(fā)產(chǎn)生缺陷的影響。
測試部門屬于研發(fā)中心,但獨立于項目組。這種模式保證了測試與項目組之間的最終目標(biāo)的一致性(高質(zhì)量的軟件產(chǎn)品),能有效的降低溝通成本,又能保證測試人員有一定的獨立性,不會過分的受產(chǎn)品經(jīng)理的控制,避免測試失效現(xiàn)象產(chǎn)生。但在這種情況下,相比兩個部門獨立,測試的結(jié)果有可能不會被項目組所重視,需要頻繁的進(jìn)行協(xié)調(diào),才能及時處理缺陷。