張冬玲 黃偉 王辰尹
摘要:計算思維是目前國際上計算機教育領(lǐng)域的重要研究課題,它使用計算機科學(xué)的思想和方法解決問題、設(shè)計系統(tǒng)與解釋行為。軟件測試中的許多思維方法及設(shè)計思想與計算思維有著異曲同工之妙。文章選取軟件測試作為切入點,通過分析軟件測試的思維活動,探討在教學(xué)中學(xué)生計算思維能力的培養(yǎng)。
關(guān)鍵詞:計算思維;軟件測試;思維活動;思維能力
0、引言
計算思維的提出為高校計算機課程教學(xué)改革提供了全新的視角和思路。隨著計算思維概念的提出,并由此帶來的國際上以計算機教育界為主的各學(xué)術(shù)界的廣泛研究和探討,使得計算機學(xué)科中許多課程的培養(yǎng)目標(biāo)更加明確。計算思維是涵蓋計算機科學(xué)之廣度的一系列思維活動。它與計算機和計算技術(shù)密切相關(guān),值得從事計算機課程教育的學(xué)者、專家深入挖掘。
早在中國古代,以繩結(jié)計數(shù)、算籌計算均運用了計算思維的思想。1992年,黃崇福在其論文中就給出了計算思維的定義,2005年,陳文宇在論文中也對計算思維進行了描述,但目前,計算思維最系統(tǒng)、最清晰的定義是由美國卡內(nèi)基·梅隆大學(xué)計算機系主任周以真(JeannetteM.Wing)教授于2006年提出的。
她提出計算思維是針對一般問題的解決,不僅僅適用于計算機科學(xué)領(lǐng)域的問題。其解決問題的方法借鑒了計算機科學(xué)的思想和方法。這些思想和方法包括約簡、嵌入、轉(zhuǎn)化、仿真、遞歸、并行。它們最根本的特征是關(guān)注點分離(SOC),把一個復(fù)雜的問題闡釋成一個我們知道該如何解決的問題。它們的應(yīng)用場景包含了可數(shù)學(xué)建模的確定性問題和不確定的情況,前者使用抽象和分解的經(jīng)典思維方法論,后者使用啟發(fā)式推理來尋求解答。計算思維利用海量數(shù)據(jù)來加快計算,在時間和空間之間,在處理能力和存儲容量之間進行權(quán)衡。
這種解答問題的方法反映在思維上,產(chǎn)生了6個特征:概念化(非程序化);智能化(非技能化);人性化(非算法化);數(shù)學(xué)和工程的互融;思想化(非物質(zhì)化);全局化(非局部化)。
周以真教授計算思維論的提出,引起了國際教育界、哲學(xué)界和社會科學(xué)界的廣泛關(guān)注。2012年8月“第八屆全國高等學(xué)校計算機教育改革與發(fā)展高峰論壇”,對計算思維的培養(yǎng)問題進行了廣泛研討。探討的內(nèi)容主要針對非計算機專業(yè)大學(xué)計算機基礎(chǔ)課程改革與計算思維能力培養(yǎng)。計算思維的培養(yǎng)不僅存在于計算機基礎(chǔ)教學(xué)中,也廣泛地存在于計算機專業(yè)的各專業(yè)課程中。以軟件工程的專業(yè)課程軟件測試為例,計算思維的遞歸、抽象、分解、搜索、關(guān)注點分離等諸要素,恰好是“需求驅(qū)動-理清思路-選擇方案-設(shè)計用例-測試實施”的軟件測試過程所遵循的方法,詮釋了計算思維與軟件測試過程的關(guān)系。
1、軟件測試中的思維活動
軟件測試是對軟件產(chǎn)品進行測試檢驗,Kaner、Bach和Pettichord在《軟件測試經(jīng)驗與教訓(xùn)》中闡述道,一個好的測試人員應(yīng)表現(xiàn)出4種不同的思維能力:(1)技術(shù)思維能力,即為對技術(shù)的建模能力和理解原因與結(jié)果的思維能力;(2)創(chuàng)造思維能力,即能夠提出新想法,根據(jù)現(xiàn)有的結(jié)果能夠預(yù)見可能性的思維能力;(3)批判思維能力,即具有評價和進行推理的思維能力;(4)實踐思維能力,即將想法變成現(xiàn)實的能力。綜合起來,即為計算能力。
軟件測試的對象就是應(yīng)用計算機產(chǎn)品,用于測試的技術(shù)包含了數(shù)學(xué)建模的思維活動;有自頂向下,或自底向上逐步組合的計算機分解復(fù)雜問題的思維活動;測試技術(shù)包括人工測試技術(shù)和自動化測試技術(shù),即在測試過程中有些必須是靠人來完成,有些則可以借助計算機來完成,這就涉及一種可計算的思維活動。
軟件測試中的創(chuàng)造思維首先要立足于全局思維,事物往往存在多面性,我們只有掌握了越多的層面,對它的認(rèn)識才能越清楚,才能有利于我們掌握其本質(zhì),以便更好地發(fā)現(xiàn)和創(chuàng)新;其次,創(chuàng)造思維是兩極思維活動,邊界值分析是兩極思維方式的典范,測試人員只有充分地發(fā)揮兩極思維能力才能將邊界值分析的全面透徹,才能很好地預(yù)見未來的測試結(jié)果。用創(chuàng)造思維設(shè)計、測試用例,這就是運用計算機科學(xué)的基本概念去求解問題、設(shè)計系統(tǒng)的計算思維的具體體現(xiàn)。
軟件測試中的批判思維首先體現(xiàn)在比較和回溯。從比較中判斷偏離定義的表現(xiàn),從回溯中搜索錯誤代碼。批判思維還體現(xiàn)為多人參加的全局思維活動,測試人員在進行靜態(tài)白盒測試時,是多個同行參與的團隊評審,這是從參與人數(shù)上來衡量的另一種形式的全局思維活動。
軟件測試歸根到底是實踐思維。測試人員制訂測試計劃、方案和測試用例,該過程涵蓋了遞歸,抽象和分解,保護、冗余、容錯、糾錯和恢復(fù),在不確定情況下的規(guī)劃、學(xué)習(xí)和調(diào)度等與計算機科學(xué)相關(guān)的思維方法。
雖然,在計算思維的討論中,關(guān)注計算機科學(xué)教育方面多一些,但計算思維同樣是計算機工程、軟件工程重要方法論,通過對上述思維活動的分析,可以發(fā)現(xiàn),軟件測試遵從計算思維最重要的原則之一就是關(guān)注點分離。
2、教學(xué)中的計算思維能力的培養(yǎng)
盡管計算思維的理論體系尚未成熟,但以計算思維為核心的教育改革正在迅速推廣。2010年《九校聯(lián)盟(c9)計算機基礎(chǔ)教學(xué)發(fā)展戰(zhàn)略聯(lián)合聲明》強調(diào)“需要把培養(yǎng)學(xué)生的計算思維能力作為計算機基礎(chǔ)教學(xué)的核心任務(wù)”。同樣,培養(yǎng)學(xué)生計算思維能力的核心任務(wù)也應(yīng)滲透到各計算機專業(yè)課程的教學(xué)環(huán)節(jié)中。
2.1 關(guān)注點分離能力
周以真教授認(rèn)為抽象和分解是解決浩大復(fù)雜的任務(wù)或系統(tǒng)的有力武器,而抽象和分解的本質(zhì)是關(guān)注的分離。它是選擇合適的方式去陳述問題,或者是選擇合適的方式對問題的相關(guān)方面建模使其易于處理。面對當(dāng)代大型復(fù)雜的軟件系統(tǒng)產(chǎn)品,測試計劃正是利用關(guān)注點分離的思維方式來描述所要完成的測試工作的指南。在軟件開發(fā)中,測試計劃必須盡早制定,以確保軟件的質(zhì)量。
在學(xué)習(xí)軟件測試課程之前,絕大多數(shù)學(xué)生對軟件測試的認(rèn)識是混沌的,分不清調(diào)試與測試。隨著軟件系統(tǒng)規(guī)模和復(fù)雜度的不斷增加,怎樣才能對軟件系統(tǒng)進行較全面的測試,學(xué)生有些束手無策。這就需要使用關(guān)注點分離的思維方式,將軟件測試進行縱、橫向的過程分解,分別對測試過程V模型、w模型以及H模型進行分析,得出W+H的測試模型。即在w模型的框架下,運用H模型的思想進行獨立測試,并同時將測試與開發(fā)緊密結(jié)合,尋找恰當(dāng)?shù)木途w點開始測試并反復(fù)迭代測試,最終保證按期完成預(yù)定目標(biāo)。
為較好地實現(xiàn)W+H的測試模型,在軟件測試的教學(xué)中,應(yīng)把擬定測試計劃作為學(xué)生學(xué)習(xí)的第一個重點內(nèi)容,分別體現(xiàn)在講授、作業(yè)和實訓(xùn)中,讓學(xué)生認(rèn)清測試計劃的重要性,掌握測試計劃的內(nèi)容要點,在實際操作中能按照計劃實施,少一些樸素的粗放測試,多一份方法、策略和標(biāo)準(zhǔn),少一些隨意,多一份規(guī)范,做到理論聯(lián)系實際,從而提高其分析問題和解決問題的計算思維能力。
2.2 可計算思維能力
可計算有雙重含義,一是什么是可計算的,二是怎樣去計算。
軟件測試可以人工測試和自動化測試。所謂自動化測試是指一切可以由計算機系統(tǒng)自動完成的測試任務(wù)都已經(jīng)由計算機系統(tǒng)或軟件工具來承擔(dān)并自動執(zhí)行。測試中存在不能自動化的測試任務(wù),需要人工干預(yù)。軟件自動化測試借助測試工具進行。它適合于高重復(fù)性的、非智力性的、非創(chuàng)造性的、高覆蓋率的以及高精確度的測試任務(wù)。然而,自動化測試只能發(fā)現(xiàn)大約15%的軟件BUG,而85%的BUG是依靠人工測試發(fā)現(xiàn)的。在一個軟件系統(tǒng)的測試過程中,怎樣界定人工測試和自動化測試的比例、劃分測試任務(wù)、規(guī)避軟件測試的風(fēng)險是學(xué)生需要學(xué)習(xí)的關(guān)鍵知識。
“案例教學(xué)法”有助于讓學(xué)生理解人工測試和自動化測試的應(yīng)用場景。采用“任務(wù)驅(qū)動”的學(xué)習(xí)模式,布置相應(yīng)實驗,讓學(xué)生動手實踐,加深他們對測試的可自動化及自動化程度的感知與認(rèn)知。在教學(xué)中,使用當(dāng)前流行的功能測試工具QTP,通過對飛機訂票系統(tǒng)“Flight”的測試案例教學(xué),使學(xué)生掌握在何時、什么情境適合使用自動化測試,學(xué)會自動化測試的腳本生成,如何優(yōu)化腳本以及如何降低腳本的維護工作量。這就是軟件測試中的可計算范圍和如何進行計算的可計算思維能力的培養(yǎng)。
3、結(jié)語
計算思維在未來將成為一種強有力的思維模式。計算思維的養(yǎng)成不但促進了學(xué)生對軟件測試課程或者其他某門課程的學(xué)習(xí),還提升了其獨立處理問題的技能。該思維模式不僅適用于計算機科學(xué)課程的學(xué)習(xí),還適用于非計算機課程的學(xué)習(xí)。好比學(xué)生雖主修計算機科學(xué),但今后可以從事任何工作一樣。所以,我們在教學(xué)中致力于計算思維的培養(yǎng),就是傳播計算機科學(xué)的快樂和力量,為將來的素質(zhì)教育賦予更深層的含義。endprint