[.... 省略部分 .... ]
我談到了作為
validation engineer的一些想法,內容不外乎怎樣得到develop engineer的一手信息,在多個engineering
release 和formal release 之間怎樣減少重復勞動,怎樣cover到每個product 的new
feature同時保證每次的routine
test,我想這些都是作為測試人員頭痛的問題。但是作為測試人員,你不像開發人員那樣只是涉及產品中的某個部分,至于它和其他component之間的
結合,以及integrate之后的問題或者整個產品的性能和功能實現就不是開發人員的職責了。QA更是站在用戶的角度看待公司產品,它要求你在維護公司
的產品和作為用戶的體驗容忍度之間做出抉擇。老大都希望一個qa可以做到拍著桌子同時應付好幾個開發人員,你不僅僅是發現問題,發log而是透析問題,發
現原因,提出自己的看法,工作之間的信任度和尊重度就是這樣建立起來的。我現在很喜歡的一種做事態度是,在和開發人員報bug解決問題的時候,要嚴肅,實
事求是,吃飯娛樂的時候應該打成一片。呵呵,這就說到測試人員,技術是硬標準,但是與人很好的溝通,大家愿意share自己的經驗給你,這其實是一種更大
的財富。當然2者都需要日積月累。
來公司已經有很長一段時間了,但是我自己真正的長進是在最近一段時間里。
首先是一天早上我愣頭愣腦地發了封mail告訴大家周末的stress
test的result時,我馬上被我的頭領到了辦公司,進行了一次1:1。老大談到了做事風格,想大家都和我一樣的困惑,我以前的看法是開發給了
release后我再開發test
case,我當時的想法是我不知道release的版本實現了哪些功能,提前design是不是有些盲目。但是老大給我的建議是一個好的
validation engineer,要始終走在release之前,你的報告上永遠是develop的進度block你的test
case執行。呵呵,我以前的report中只有pass和fail,現在多了block后,我更加意識到了自己工作的意義。(笑一下)---這是我認識
到自己的工作責任。
其次是我們組有個年輕的女生,她做測試已經了3年了。我觀察了一下,她在負責一個新的項目測試的時候,是先根據source
code和feature list列出test要cover的test item,然后發出讓develop和其他的team member
review,generate一個quality target。接著是test case的設計和調試階段,形成test
framework,這是時間最長的階段。補充test
cases.等到engineering的版后進行port。她會按部就班按照以前設計的qt完成整個test
project。這大致涵蓋了一個測試流程。----這是我知道自己的做事流程。
最后一件小事,我昨天forward了封e-mail,大概的意思是告訴developer不光是這個人發現的問題a,我又發現了問題b。3分
鐘后,我又被我們老大叫到了身邊,說了寫e-mail的技巧,告訴別人你的測試環境,你發現這個問題的前因后果。特別是經過了一個周末,可能沒人記住上周
的-mail,有必要交待清楚你的確切情況。然后是weekly
report,在突出你的工作量的同時更要體現出你做這件事情的value和impact,這是很重要的。特別是validation
engineer,有時你要在多個項目之間進行測試,務必交待你的測試環境,這對重現bug相當重要。盡量用數字來體現這些,因為它們很直觀。把該說的問
題說清楚,不清楚的問題弄清楚再說,免得被別人抓住尾巴。----這是做事的風格。
談到和develop的合作技巧,我的原則是如果在雙方時間許可的前提下,我傾向于采取face2face地交談,這避免了很多言語上的誤解,
特別是如果手頭有實踐環境還可以當場測試,得到證實??傊鳛樾氯?,大膽的同時要謙虛,每個人都有他的專長。我現在都很懼怕報cq,首先我不確定那是不是
bug,其次覺得小bug開發人員可能會不重視,或者這個本就是一個known
bug。我的老大給我的建議是不要害怕,發現問題即使它不是個問題,總比隱瞞他結果他是個問題要好很多很多。不是bug大不了close,沒人會笑你。呵
呵,我是這么想的,臉皮厚吧。
記得我再和以前老大1:1的時候老大交給了我很多的技巧,比如猛夸develop,把他的老大add into mail
list,讓他看到組員的工作成果,必要的時候也可以起到push的作用,我是這么理解的。你今天發現了很多問題,在不緊急地情況下,不要一股腦都
dump到開發人員的頭上,然后拍屁股走人,你可以分批地發根據他解決問題的速度決定你報bug的速度,表現出對問題進展程度的關心,讓別人覺得他不是孤
軍奮戰。還有其他很多。-----這是做事的技巧。
記得我老大1:1的時候告訴我,對我的溝通能力不懷疑,我還是要加強自己的技術能力,讓自己說出的話更有底氣。呵呵。
以前覺得自己不喜歡這行,現在發現和一群很實在的人為了一個共同的目標,交流合作學習,這件事情本身就讓人非常的enjoy。
[... 省略部分 ...]
摘要: unix I/O 系列第2,write()
閱讀全文
1 template<typename V,template<typename E, typename A = std::allocator<E>> class F>
2 class MyClass {};
上面這段代碼聲明了一個模板類MyClass。MyClass有兩個類型參數typename V和class F,其中class F又是一個模板類。注意這種聲明方式。
函數名:
read - 從文件描述字中讀
摘要:
1 #include <unistd.h>
2
3 ssize_t read(int fd, void* buf, size_t cnt);
描述: read()試圖從文件描述字fd中讀取cnt字節到以buf開始的緩沖區中。
如果cnt為0,read()返回0并且buf中沒有結果;如果cnt大于SSIZE_MAX,結果為定義。
返回值: 如果成功,返回讀取的字節數`ret'(非負,0代表遇到了文件結束符),并且文件位置前移ret字節。如果ret<cnt并不代表出錯;例如,這種情況可能是由于當前只有ret字節可用(可能是因為已經接近文件結束,或者因為我們正從管道或終端中讀取),也可能由于read()被信號中斷。如果出錯,返回-1。在這種情況下,文件位置是否改變是未定義行為。
錯誤號: EINTR 該調用在讀完數據之前被信號中斷。
EAGAIN 用O_NONBLOCK選擇了非阻塞模式I/O,但是當前沒有數據可用。
EIO I/O錯誤。例如這種情況可能發生在當前進程為后臺運行組,試圖從它所控制的tty中讀取,但是該終端為當前無效或者屏蔽了SIGTTIN信號又或者該終端進程為“孤兒進程”(orphan process)。 當從磁盤中讀取數據時遇到底層I/O錯誤時,也會發生這種情況。
EISDIR fd引用了一個目錄。
EBADF fd不是有效文件描述字,或者沒有為讀打開。
EINVAL fd引用了一個不支持讀操作的設備。
EFAULT buf超出了可訪問地址空間。
其他錯誤也會發生,這取決于fd所連接的設備。 POSIX允許read調用在讀取部分數據后被信號中斷后,或者返回-1(錯誤號被置為EINTR),或者返回已經讀取的字節數。
規范: SVr4, SVID, AT&T, POSIX, X/OPEN, BSD 4.3
約束:
在NFS文件系統中,讀取小量數據只在第一次時更新時間戳,而后續調用不會更新。這是由客戶端屬性緩存(client side attribute caching)導致的,因為絕大多數NFS客戶端讓server維護atime(最后訪問時間),而客戶端read調用所產生的讀操作沒有造成server端的讀操作從而也不會導致server更新atime。可以通過禁用客戶端屬性緩存以獲得UNIX語義,但事實證明大多數情況下這會增加server負載并降低性能。
參考:
close(2), fcntl(2), ioctl(2), lseek(2), readdir(2), readlink(2), select(2), write(2), fread(3), readv(3)