對(duì)于那些不知道程序員/開(kāi)發(fā)者的時(shí)間都去哪了的人,本文可能會(huì)提供一些線索。我記錄了這份日志不僅是為了看看時(shí)間都花費(fèi)在哪了,也是為了看看我都做了些什么,檢視下自己是否偷懶了。當(dāng)回顧之后,我發(fā)現(xiàn)花這些時(shí)間都是值得的。
作為開(kāi)始,下面是我在前一階段追蹤的bug,(假設(shè))你應(yīng)該可以看到其中的錯(cuò)誤。僅僅拿出這10行JavaScript并找到錯(cuò)誤在哪里并不難,但要在茫茫的代碼中定位這10行并證明那些就是bug,這就有一定的難度了。
如此寧?kù)o的一天。通常情況下,有三個(gè)人可能打斷我工作的連貫性,因?yàn)?1:30之前,我要不時(shí)的與他們通過(guò)語(yǔ)音或文字信息交流和討論。把這些過(guò)程以log記錄下來(lái),實(shí)際上是對(duì)我工作的推進(jìn)是有幫助的。這使得我能端坐在鍵盤前專注于我的工作,以免被別的問(wèn)題分心。
09:50 收到了一封來(lái)自團(tuán)隊(duì)成員的郵件,內(nèi)容是關(guān)于一些可能會(huì)產(chǎn)生問(wèn)題的代碼。我看了一下,并把目前解決不了部分整理起來(lái)。
10:10 繼續(xù)昨天IE7虛擬機(jī)的下載(4gb)。
10:15 由于IE7下載的時(shí)間比較長(zhǎng),我趁著下載的時(shí)候,申請(qǐng)了TestingBot的賬號(hào)。
10:20 與一名開(kāi)發(fā)者Skype語(yǔ)音,討論關(guān)于他新添加的功能。
10:21 由于設(shè)計(jì)師沒(méi)有正確的把圖片上傳到網(wǎng)站,產(chǎn)生了大量的報(bào)錯(cuò)郵件。我花費(fèi)了兩天的時(shí)間讓設(shè)計(jì)師掌握源代碼控制軟件。由于有些設(shè)計(jì)師沒(méi)有Visual Studio,我也建立了一些用來(lái)存儲(chǔ)特定內(nèi)容的文件夾,這些文件夾可以自動(dòng)發(fā)布問(wèn)題給這些設(shè)計(jì)師。我有沒(méi)有提到,無(wú)論是在測(cè)試中,鏡像模擬階段還是已發(fā)布的產(chǎn)品中出現(xiàn)的每一個(gè)錯(cuò)誤我都會(huì)記錄下來(lái)。我認(rèn)為這些設(shè)計(jì)師都應(yīng)該看一看。
10:22 一名開(kāi)發(fā)者要與我進(jìn)行Skype語(yǔ)音。為了防止下載軟件占據(jù)網(wǎng)速,而影響通信,我不得不暫停下載IE7。
10:45 完成與那名開(kāi)發(fā)者的語(yǔ)音通信。
10:50 由于持續(xù)的退信錯(cuò)誤,250個(gè)報(bào)錯(cuò)郵件不能夠正常工作。我繼續(xù)了IE7的下載。放棄刪除報(bào)錯(cuò)郵件,手動(dòng)連接Azune并刷新那些設(shè)計(jì)師之前沒(méi)有正確上傳的圖片。
10:55 通過(guò)網(wǎng)絡(luò)服務(wù)器繼續(xù)測(cè)試IE7瀏覽器。查看日志中IE7報(bào)錯(cuò)的部分并找到錯(cuò)誤發(fā)生的原因。
11:00 測(cè)試位置出現(xiàn)了新的錯(cuò)誤。我發(fā)現(xiàn)是由于某一名開(kāi)發(fā)者的原因,如果他能修復(fù)錯(cuò)誤,測(cè)試將會(huì)繼續(xù)進(jìn)行。我發(fā)現(xiàn)缺失圖片錯(cuò)誤的原因是設(shè)計(jì)師仍然沒(méi)有圖片添加到源碼中。由于仍然報(bào)出大量的錯(cuò)誤,Will不得不提醒那名設(shè)計(jì)師。查看進(jìn)度服務(wù)器(設(shè)計(jì)師的樂(lè)園)上的圖片,我發(fā)現(xiàn)設(shè)計(jì)師還是沒(méi)有上傳。我為設(shè)計(jì)師收集了一份錯(cuò)誤列表,其內(nèi)容是由于缺少圖片而產(chǎn)生的錯(cuò)誤。我提取了這些錯(cuò)誤,記錄在一份Excel中,這里提取的僅僅是關(guān)于圖片的報(bào)告。我創(chuàng)建了一個(gè)支持工單(譯者注:support ticket 支持工單系統(tǒng)),并發(fā)郵件給設(shè)計(jì)師。
11:11 回到IE7的錯(cuò)誤上。通過(guò)查看日志,我找到了錯(cuò)誤的原因。
11:16 在日志中找到IE7的錯(cuò)誤并下載下來(lái)。由于文件比較大,下載花費(fèi)了一點(diǎn)時(shí)間。
11:21 從日志中提取50個(gè)IE7的JavaScript代碼錯(cuò)誤。追蹤Excel中的錯(cuò)誤并試圖減少這50行代碼的錯(cuò)誤。
11:23 發(fā)現(xiàn)錯(cuò)誤出現(xiàn)在日志的起始處,而不是最近的記錄。我對(duì)日志進(jìn)行時(shí)間倒序排序并找到更多的錯(cuò)誤。
11:26 不再查找Excel中新加入的錯(cuò)誤,僅僅查看現(xiàn)在已經(jīng)記錄下來(lái)的。
11:30 第一個(gè)錯(cuò)誤是無(wú)法加載谷歌的網(wǎng)站分析服務(wù)。原來(lái)又是那可惡的百度搜索引擎。
11:31 在開(kāi)發(fā)過(guò)程中修復(fù)了下一個(gè)錯(cuò)誤。
11:32 下一個(gè)問(wèn)題發(fā)生在Mac中的FireFox瀏覽器。我想在上Mac需要建立一個(gè)完全單獨(dú)的測(cè)試計(jì)劃,因此我創(chuàng)建了一個(gè)支持工單。
11:35 余下的50個(gè)錯(cuò)誤都是由于同一個(gè)Mac系統(tǒng)的問(wèn)題,我不得不去找一些較早時(shí)間發(fā)生的錯(cuò)誤。
11:37 在錯(cuò)誤搜索中,用“或”取代“與”,并試著取消搜索過(guò)程,但無(wú)反應(yīng)。
11:42 一封報(bào)錯(cuò)郵件提醒我,測(cè)試位置發(fā)現(xiàn)字體缺失的問(wèn)題,我將此問(wèn)題發(fā)郵件給設(shè)計(jì)師。
11:43 之前的搜索過(guò)程被取消,開(kāi)始重新搜索。
11:45 設(shè)計(jì)師回郵件說(shuō),那些文件出現(xiàn)缺失并非偶然,現(xiàn)在問(wèn)題已經(jīng)解決了。
11:46 在等待下一批錯(cuò)誤的時(shí)候,已發(fā)布產(chǎn)品又出現(xiàn)了一個(gè)不可思議的IE7錯(cuò)誤。我用支持工單記錄下了這個(gè)錯(cuò)誤。如果當(dāng)初我能有時(shí)間(5分鐘),我絕不會(huì)去考慮其他錯(cuò)誤細(xì)節(jié)。
11:50 最后,通過(guò)使用textingbot.com網(wǎng)站去查看IE7的錯(cuò)誤,我現(xiàn)在知道為什么IE7不得不被淘汰了。除了提示一個(gè)模糊的行數(shù)、字符位置信息和“期望一個(gè)標(biāo)識(shí)符,字符串或數(shù)字”這類日志中已經(jīng)有的信息,再也沒(méi)有什么可用的開(kāi)發(fā)工具可以幫助提供更多的錯(cuò)誤信息了。
11:52 借助IE7測(cè)試瀏覽器的“查看源碼(View source)”功能和之前記錄錯(cuò)誤的行數(shù),我發(fā)現(xiàn)少了幾行。再試一次,提示超時(shí)。我想我并沒(méi)有少了那幾行,因?yàn)镮E7報(bào)告有一行沒(méi)有JavaScript代碼,這個(gè)功能一定被行數(shù)和空白符(空格、Tab和回車)干擾了。
11:57 我剛注意到某頁(yè)的中間幾段JavaScript時(shí),再次被設(shè)計(jì)師打斷。通過(guò)查看這段代碼,我發(fā)現(xiàn)它們主要負(fù)責(zé)處理移動(dòng)端顯示的問(wèn)題。我試著直接在測(cè)試服務(wù)器上編輯這段代碼,看看能不能注釋掉這些錯(cuò)誤。
12:04 不能直接編輯。由于測(cè)試服務(wù)器需要密碼,網(wǎng)絡(luò)蜘蛛程序禁止我建立索引。這意味著測(cè)試瀏覽器服務(wù)無(wú)法進(jìn)入測(cè)試服務(wù)器。
12:06 哦!!!我進(jìn)入測(cè)試服務(wù)器發(fā)現(xiàn)錯(cuò)誤還在那里。哦不,測(cè)試服務(wù)器崩潰了。
12:08 重啟IE7的測(cè)試并再次執(zhí)行測(cè)試,日志上沒(méi)有出現(xiàn)任何JavaScript錯(cuò)誤。
12:09 刪除那些可能有問(wèn)題的代碼的注釋,我發(fā)現(xiàn)錯(cuò)誤再次出現(xiàn)在日志中。接下來(lái)要縮小范圍查找錯(cuò)誤。
12:10 測(cè)試服務(wù)器又開(kāi)始無(wú)反應(yīng),無(wú)法刷新頁(yè)面。啟動(dòng)另一個(gè)服務(wù)器,并登入,我發(fā)現(xiàn)依然會(huì)出現(xiàn)錯(cuò)誤。注釋掉一些代碼后,我發(fā)現(xiàn)錯(cuò)誤是由于最后10行代碼。為了確定,我們將這10行代碼頁(yè)注釋掉,發(fā)現(xiàn)可以運(yùn)行了。我們?cè)倏s小一下范圍,加一些alert函數(shù)。IE7再次崩潰。
12:26 一些嘗試之后,我重啟了IE7測(cè)試服務(wù)器,我發(fā)現(xiàn)了錯(cuò)誤的原因。由于一段腳本代碼使得IE7崩潰,我想這段代碼也可以造成其他瀏覽器崩潰。這些代碼不算很糟糕,我也不會(huì)(太)責(zé)備設(shè)計(jì)師。但是,這些代碼本來(lái)不應(yīng)該在任何瀏覽器上運(yùn)行,更確切的說(shuō),進(jìn)入到產(chǎn)品運(yùn)行的環(huán)境中。它被嵌入到那頁(yè)代碼的中間部分。這屬于JavaScript代碼的問(wèn)題,設(shè)計(jì)師用它們做一些黑客行為的事情,比如隱藏移動(dòng)設(shè)備的菜單,而且這些JavaScript代碼被藏在一頁(yè)中的中間部分。這些代碼附近并沒(méi)有放置測(cè)試代碼,沒(méi)人會(huì)在最初的快速瀏覽中發(fā)現(xiàn)它們。但它們帶來(lái)的后果顯而易見(jiàn)。
12:30 我在源代碼中修復(fù)了這個(gè)bug,并記錄下這個(gè)過(guò)程。接著,我開(kāi)始解決其他IE7的bug。它們是。。。
12:34 我意識(shí)到,我必須將這段經(jīng)歷告訴開(kāi)發(fā)團(tuán)隊(duì),因?yàn)樗麄兌伎赡軙?huì)寫上面那種代碼(除了IE7,哪里都可以運(yùn)行),而且仍然有相當(dāng)多的用戶在使用著這個(gè)功能。
12:45 完成這個(gè)bug的修復(fù)。
上面提到的bug,都是由那些初始化語(yǔ)句中的一個(gè)逗號(hào)引起的。
一定是有人復(fù)制粘貼了這段代碼,一天之后,我又在其他地方發(fā)現(xiàn)了它們。
-
程序員
+關(guān)注
關(guān)注
4文章
953瀏覽量
29821
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論