我8個多月大的兒子钻哩,今天讓我想到了一個黑箱問題,他究竟發(fā)生了什么事兒肛冶,待會兒揭曉街氢。
0. 黑箱是什么?
黑箱睦袖,是一個形象的比喻阳仔。指一個事物,你從外面看不透里面有什么,正在發(fā)生什么近范,發(fā)生過什么,就像正看著一個黑箱一樣延蟹。
黑箱并不是完全不可知评矩,黑箱有兩個孔:輸入口和輸出口。
你往輸入口里阱飘,放入一些信息斥杜,那么輸出口就可能出來一些別的東西,也有可能不出來沥匈。
你發(fā)現(xiàn)放入的信息不同蔗喂,出來的東西可能不同,但偶爾也可能相同高帖。
于是缰儿,在黑箱之外的你,一定對黑箱充滿好奇散址。在好奇心驅(qū)使下乖阵,你想發(fā)現(xiàn)黑箱的內(nèi)在規(guī)律,甚至破解黑箱的內(nèi)部構(gòu)成预麸。
1. 中文屋子
中文屋子瞪浸,是歷史上一次經(jīng)典實(shí)驗(yàn),用來驗(yàn)證圖靈測試的失效吏祸。
先看什么叫圖靈測試对蒲?我們結(jié)合剛剛的黑箱定義來說明一下。
把一臺機(jī)器放入一個黑箱贡翘,允許一個人在黑箱之外蹈矮,往黑箱輸入口里提問題,那么黑箱輸出口里會回應(yīng)問題床估。黑箱外的人可反復(fù)提出多個問題含滴。
如果超過30%的黑箱外測試者,都不能分清黑箱里丐巫,到底是一個人還是一臺機(jī)器回答的谈况,那么原本黑箱里的機(jī)器,就算擁有人工智能递胧,也就算說碑韵,通過圖靈測試。
中文屋子缎脾,算是對黑箱的一次調(diào)試祝闻,并且反駁圖靈測試的結(jié)論。
中文屋子是什么?
這個黑箱就叫中文屋子联喘,里面有一個只會說英文的人华蜒,一本中英翻譯書,一些草稿紙豁遭。無論黑箱(中文屋子)的輸入口叭喜,放入中文紙條。
這個只會英文的人將中英文工具翻譯成英文蓖谢,然后用英文作答捂蕴,最后用中英文工具翻譯成中文,放入輸出口闪幽。
就這樣啥辨,黑箱外的人看到輸入中文,輸出中文盯腌,以為里面有一個懂中文的人或者機(jī)器溉知。
實(shí)際沒有,中文屋子騙了他們腊嗡。
2. 黑盒測試
在計(jì)算機(jī)軟件行業(yè)的作業(yè)流程中疙剑,有個職位叫測試工程師浮庐。
測試工程師的崗位要求,就是對研發(fā)出來的軟件進(jìn)行各種測試,以期待發(fā)現(xiàn)缺陷(Bug)曾我,然后交還給開發(fā)去修正轻姿。
測試的工作有很多方法論诚撵,其中一種便是「黑盒測試」牺六。與黑箱概念一致:把軟件看成是一個黑箱,當(dāng)某個輸入發(fā)生時(shí)底挫,有符合期待的輸出恒傻,否則就要算軟件出現(xiàn)了bug。
之所以輸出要「符合期待」建邓,是因?yàn)槌绦虬凑债a(chǎn)品設(shè)計(jì)的盈厘,黑箱只是封裝了具體的實(shí)現(xiàn)內(nèi)容,但輸入官边、輸出結(jié)果是固定的沸手。
暫且,把這類黑箱稱之為「固定黑箱」注簿。
2. Hey Siri
蘋果的Siri契吉,智能語音助手。你說出的任何語言诡渴,都會通過Siri上傳到某云服務(wù)器捐晶,云服務(wù)器分析后,綜合給出相應(yīng)的解答,輸出返回到你的手機(jī)惑灵。
在這個過程中山上,Siri本身就是一個黑箱,因?yàn)槲覀儾恢繱iri是依據(jù)什么回應(yīng)的英支。
不同的人胶哲,不同的手機(jī),問出同樣一個問題潭辈,回答還各不相同。就算是同一個人澈吨,同一部手機(jī)把敢,不同的時(shí)間,問出同樣的問題谅辣,依然回答不同修赞。
暫且,把這類黑箱稱之為「可變黑箱」桑阶。
3. 無反饋黑箱
好了柏副,我家8個月大的小寶兒上場了,他演繹了黑箱的一種最高級模式蚣录,「無反饋黑箱」割择。
最近一段時(shí)間,小寶兒睡得很不好萎河,我們換過奶瓶荔泳,喂過水,但晚上睡覺依然莫名哭鬧虐杯。我們也不知道怎么辦玛歌。
上周末,家里停水讓我們把小寶兒轉(zhuǎn)移到外婆家擎椰。周末兩天支子,在外婆家的睡覺卻非常安穩(wěn)。
一分析达舒,外婆家的床比較軟值朋,而且有床墊,睡起來比較舒服休弃。趕上這兩天氣溫驟降吞歼,溫度低的時(shí)候,加蓋的不如加墊的有用塔猾。
大人都知道的道理篙骡,可我們一直沒為小寶兒想出辦法,最大的原因是:
小寶兒無法跟我們交流,他只能用哭鬧表示不開心糯俗,但不能告訴我們具體哪里不開心尿褪。
如果小寶兒是黑箱,暫且得湘,把這類黑箱稱之為「無反饋黑箱」杖玲。
4. 調(diào)試黑箱的技巧
固定黑箱,可變黑箱淘正,無反饋黑箱摆马,一個比一個難度級別大。然而鸿吆,這些級別通常都是有一定的套路囤采。
第. 正向功能調(diào)試。按照需求惩淳、習(xí)慣蕉毯、自然反射行事,把所有應(yīng)該有的功能都調(diào)試到思犁,爭取符合期望代虾。
第二. 單一變量調(diào)試。遇到復(fù)雜的問題激蹲,先將問題分解棉磨,對應(yīng)上我們的調(diào)試策略,重復(fù)試托呕,直到發(fā)現(xiàn)真理含蓉。
第三. 逆向調(diào)試。即反向調(diào)試项郊,與期待的方向相反馅扣,來看黑箱的反饋。記住着降,不要調(diào)試小寶兒差油,否則后果自負(fù)。
第四任洞,邊界值調(diào)試蓄喇。如果黑箱只能滿足從0到1的數(shù)值范圍,那就應(yīng)該試試大于1的數(shù)字交掏,或者小于0的數(shù)字妆偏,然后看黑箱的反饋。
第五盅弛,組合調(diào)試钱骂。綜合以上所有調(diào)試方法叔锐,反復(fù)、隨機(jī)见秽、組合的調(diào)試愉烙。
5. 終章
周末結(jié)束,從外婆家回自己家解取,換上軟軟的步责、厚實(shí)的床墊,且看今晚小寶兒的反應(yīng)禀苦。哦蔓肯,對了,這算單一變量測試振乏。
: end )