安裝 nodejs
安裝 Appium
Appium是Android平臺(tái)上一個(gè)測(cè)試框架。
本文簡(jiǎn)單地介紹如何在
Linux機(jī)器上安裝并運(yùn)行該框架。
應(yīng)用環(huán)境:
Ubuntu 12.04 LTS
HTC One X (endeavoru, S720e)
Android SDK
請(qǐng)參考SDK環(huán)境,這里就不多說了。
Appium
安裝 nodejs
apt-get install nodejs
# 或者通過nodejs源碼編譯,這樣可以使用最新的代碼
cd ~/downloads
wget http://nodejs.org/dist/v0.10.25/node-v0.10.25.tar.gz
tar -zxf node-v0.10.25.tar.gz
cd ode-v0.10.25
./configure --prefix=/usr/local/node
make && make install
# edit ~/.bashrc and add node to your PATH env
安裝 Appium
npm install -g appium # install appium as a global app
配置手機(jī)
手機(jī)需要是已經(jīng)root過的!
su
chmod 777 /data/local
另外,也要確保你手機(jī)上安裝了最新的chrome瀏覽器!
Note:
這步是必需的,否則后面會(huì)發(fā)生無法啟動(dòng)瀏覽器的異常。
下載&運(yùn)行測(cè)試項(xiàng)目
# 下載項(xiàng)目
git clone git@github.com:ytfei/appium_chrome_demo.git
cd appium_chrome_demo
npm install # 安裝依賴包
# 啟動(dòng)appium
appium -g appium.log &
# 開始測(cè)試
English » | | | | | | | | |
Text-to-speech function is limited to 100 characters
感謝我老婆,大周六自己在家?guī)Ш⒆樱屛覅⒓恿艘徽斓拿艚軸crum Master 培訓(xùn)。我想如果這個(gè)培訓(xùn)是
工作日在公司內(nèi)部,大家是否還有如此的積極熱情呢?今天只達(dá)到預(yù)期人數(shù)的一半,參與程度卻非常高,結(jié)束之后大家都圍著杜偉忠教練不斷問問題。我切實(shí)的感覺到這些人真的是公司內(nèi)愿意
學(xué)習(xí)新知識(shí),對(duì)
敏捷,對(duì)改進(jìn)有極大熱情的人。我想無論是培訓(xùn)還是其他交流活動(dòng),想甄別出南郭先生還是真正熱情的粉絲,選擇周末舉辦是個(gè)不錯(cuò)的辦法。
拋開現(xiàn)實(shí),在敏捷實(shí)踐的活動(dòng)中,我們可以組成自組織的小團(tuán)隊(duì),頻繁溝通、持續(xù)改進(jìn)。但是真正討論到敏捷落地,有些人一聲嘆息說“理想與現(xiàn)實(shí)還是有差距的”,也有些人覺得“有心問鼎,無力回天”,還有一大部分人抱著樂觀而又被動(dòng)的心態(tài)想著“總有人來幫助我們做出改變的”…
世界的大環(huán)境都是一直在改變的,又何況我們所處在的小環(huán)境,面對(duì)變革,要么被淘汰,要么被改變。被動(dòng)改變是痛苦的,想主動(dòng)改變卻又覺得無從下手干著急是更痛苦的。反正都要痛那么一下子,就好比打針,我們預(yù)期到針要扎在哪個(gè)屁股上,會(huì)事先做好心理準(zhǔn)備的。所以我想可以先來分析下敏捷轉(zhuǎn)型會(huì)扎到我們個(gè)人和組織的哪些痛處?
持續(xù)學(xué)習(xí)之痛
組織中一部分人已經(jīng)習(xí)慣了現(xiàn)有的工作方式,雖然有問題,但是憑著個(gè)人的經(jīng)驗(yàn)也能夠處理的游刃有余。
作為開發(fā),每天要應(yīng)付很多的各種來源的任務(wù),有的是產(chǎn)品經(jīng)理和開發(fā)經(jīng)理定的,有的是總監(jiān)拍的。已經(jīng)習(xí)慣了領(lǐng)導(dǎo)驅(qū)動(dòng)的工作方式,也已經(jīng)逐漸摸索出了一套“上有政策,下有對(duì)策”的應(yīng)對(duì)措施。我已經(jīng)習(xí)慣于通過google來解決問題,偏偏現(xiàn)在只能用
百度,就忍了。你還要讓我學(xué)習(xí)“重構(gòu)”、學(xué)習(xí)“
測(cè)試驅(qū)動(dòng)開發(fā)”,學(xué)習(xí)“實(shí)例化需求”,學(xué)習(xí)“持續(xù)集成”?我只想說“我是寫代碼的,干嘛要管你們那么多事情”。
作為測(cè)試,隔三差五的上線個(gè)小需求啥的,等待部署環(huán)境一個(gè)小時(shí),等待數(shù)據(jù)同步三個(gè)小時(shí),抓緊在午夜十二點(diǎn)之前完成十來個(gè)用例的線上驗(yàn)證,好回家睡覺。我上班不能學(xué)習(xí)吧,我要點(diǎn)頁面,我要找開發(fā),找產(chǎn)品,下班我還要加班啊,什么時(shí)間來學(xué)習(xí)呢?
我已經(jīng)好久不碰代碼了,
自動(dòng)化測(cè)試我怎么學(xué)的會(huì)呢?測(cè)試最牛逼的還是手動(dòng)測(cè)試,專家都這么說了。
作為產(chǎn)品,我都忙得找不著北了,我不主動(dòng)去找開發(fā)人家也不搭理我,我天天要開會(huì)、要溝通,要寫PRD,還要天天被測(cè)試?yán)p著確認(rèn)各種需求問題。我一直希望深入的掌握業(yè)務(wù),可是我TMD也就是個(gè)公司業(yè)務(wù)方的代言人,就是你們天天說的“二道販子需求”。別給我提什么Product owner是決定一個(gè)產(chǎn)品成敗的關(guān)鍵所在,我只想著老老實(shí)實(shí)把領(lǐng)導(dǎo)關(guān)注的業(yè)務(wù)都給實(shí)現(xiàn)嘍,敏捷啊,是你們研發(fā)自己的事情。
組織架構(gòu)之痛
組織結(jié)構(gòu)是職能部門橫向劃分的,產(chǎn)品經(jīng)理屬于產(chǎn)品部門、開發(fā)屬于開發(fā)部門、測(cè)試屬于測(cè)試部門、項(xiàng)目經(jīng)理屬于
項(xiàng)目管理部。每個(gè)部門的團(tuán)隊(duì)都要實(shí)現(xiàn)各自不同的價(jià)值,這樣難免會(huì)出現(xiàn)“各掃門前雪”的情況。如果要敏捷,倡導(dǎo)跨職能的團(tuán)隊(duì),原來獨(dú)立職能團(tuán)隊(duì)積累的一些經(jīng)驗(yàn)需要打破重來,原來的經(jīng)理們需要重新找到自己的位置。這都是不容易的。
首先從測(cè)試部門說起,目前測(cè)試團(tuán)隊(duì)的價(jià)值體現(xiàn)在什么地方?常常團(tuán)隊(duì)中認(rèn)為發(fā)現(xiàn)足夠多的
Bug,編寫足夠多的
測(cè)試用例,及時(shí)得反饋問題,這樣就夠了。可是真是這樣嗎?每每開發(fā)完成了提交測(cè)試,后期又出現(xiàn)項(xiàng)目周期延誤,大家或多或少的心里嘀咕“測(cè)試時(shí)間這么拖這么長(zhǎng),能力不行嗎?”有時(shí)線上出了問題,開發(fā)熬夜改bug到凌晨3點(diǎn),他也會(huì)抱怨一句“這個(gè)問題怎么測(cè)試沒發(fā)現(xiàn)?”。測(cè)試肯定覺得很冤,我們Bug和用例的數(shù)據(jù)都在那呢,最后處理問題的結(jié)果可能是開發(fā)測(cè)試各打五十大板了事。如果要敏捷轉(zhuǎn)型,追求全能型工程師,測(cè)試部門獨(dú)立存在的必要性就很小了,敏捷團(tuán)隊(duì)中的每個(gè)人無論是開發(fā)、產(chǎn)品、還是測(cè)試都會(huì)參與到測(cè)試中去,打破了對(duì)測(cè)試工程師自身的局限以及這個(gè)title的局限。面對(duì)組織架構(gòu)的重構(gòu),測(cè)試部門及團(tuán)隊(duì)成員必須浴火重生,在提升業(yè)務(wù)能力和技術(shù)能力的同時(shí)才能體現(xiàn)出自身的價(jià)值。
目前的開發(fā)部門,負(fù)責(zé)前臺(tái)頁面的不管后臺(tái)Server的問題,負(fù)責(zé)單獨(dú)模塊開發(fā)的不負(fù)責(zé)公共部分問題的修改,開發(fā)主管一般作為Product owner來掌控項(xiàng)目。這樣看起來,專業(yè)化、精細(xì)化的分工是能夠把職責(zé)劃分得更清晰,可是確常常會(huì)出現(xiàn)接力失誤,導(dǎo)致接力棒掉在地上的情況。有些劃分不清的區(qū)域,誰也不愿意也沒有責(zé)任去主動(dòng)承擔(dān)。開發(fā)主管以小組成員利益的角度出發(fā),在平衡客戶需求和團(tuán)隊(duì)訴求時(shí)是非常困難的。可是,如果轉(zhuǎn)型,必然需要調(diào)整組織結(jié)構(gòu),要重新打破舊有的平衡,已經(jīng)到嘴邊的“蛋糕”也需要重新分配。
產(chǎn)品上面已經(jīng)吐槽了,這里就說說項(xiàng)目管理部門。尷尬的項(xiàng)目經(jīng)理沒有考核項(xiàng)目成員的權(quán)利,卻要承擔(dān)著項(xiàng)目質(zhì)量控制、進(jìn)度控制、風(fēng)險(xiǎn)控制的責(zé)任,需要協(xié)調(diào)產(chǎn)品、研發(fā)、測(cè)試各個(gè)部門。可以不斷的反饋問題,推動(dòng)起來卻重重阻礙。出現(xiàn)問題匯報(bào)領(lǐng)導(dǎo),項(xiàng)目組成員覺得你愛打小報(bào)告,若是不匯報(bào),出現(xiàn)問題,又要承擔(dān)沒有及時(shí)反饋的責(zé)任。因此只能說這個(gè)戰(zhàn)場(chǎng)比拼的是情商和個(gè)人魅力,這樣才能夠順利周旋于多個(gè)角色之間。那么,轉(zhuǎn)型敏捷后,項(xiàng)目經(jīng)理要面臨什么樣的角色轉(zhuǎn)換呢?Scrum master 還是 product owner,還是重新開始寫代碼,成為一名團(tuán)隊(duì)成員呢?
渺小的個(gè)人VS強(qiáng)大的影響力
渴望改進(jìn)的人,絕不是消極的,抱怨是無解的。敏捷的思想是要相信團(tuán)隊(duì),無論是自己所在的小團(tuán)隊(duì),還是公司這個(gè)大團(tuán)體。還要相信個(gè)體的力量,通過不斷學(xué)習(xí)提高自己的能力,發(fā)揮“日拱一卒”的精神,抱著一顆同理心,幫助他人,與團(tuán)隊(duì)內(nèi)外的成員共同進(jìn)步,去建立自己的影響力。做好心理和技能的準(zhǔn)備,不斷的實(shí)踐嘗試,一步一步實(shí)現(xiàn)改進(jìn)的愿望。
說起來是這個(gè)道理,可是有人會(huì)說了,我作為一個(gè)普通員工,我甚至只是一個(gè)測(cè)試工程師,處于項(xiàng)目流程的下游,我感覺自己什么也做不了。即使領(lǐng)導(dǎo)支持敏捷了,我們作為測(cè)試,不會(huì)直接的交付產(chǎn)品,我們也無法單獨(dú)敏捷啊。或者作為一名開發(fā)工程師,或者產(chǎn)品經(jīng)理,個(gè)人都是沒法一下子去推動(dòng)敏捷改進(jìn)的。還有人說,那就等吧,你不用操那么多心,你所想的遲早有一天公司都會(huì)幫你實(shí)現(xiàn)的。。。
不只是我們自己相信,敏捷思想是經(jīng)過驗(yàn)證的能夠提高交付價(jià)值,提高團(tuán)隊(duì)效率的有效工具。因此,我們要相信好的東西,大家是沒有理由不喜歡的。就好比美味的螃蟹,大家不去吃,是因?yàn)椴恢浪拿牢叮煌娜丝吹降氖遣挥玫慕嵌龋械娜酥豢吹搅藦堁牢枳Φ你Q子,有的人只看到了硬硬的殼子,在沒有品嘗到美味的蟹肉和蟹黃之前,大家都不可能欣然接受,更何談去主動(dòng)參與,積極推動(dòng)呢?
杜偉忠教練也給我們分享過一個(gè)實(shí)例,原來他還沒做敏捷教練,是熱心敏捷的愛好者。他的辦法就是鼓勵(lì)身邊的同事或領(lǐng)導(dǎo)和他一起去參加敏捷的社區(qū)或者交流分享活動(dòng),讓大家逐漸都感受到敏捷的魅力,大家都覺得好了,自然推動(dòng)起來就沒什么阻力了。這只是一種影響他人的方法。我們也可以從自身做起,不斷學(xué)習(xí),去掌握敏捷的精髓,提煉出真正提高生產(chǎn)力對(duì)團(tuán)隊(duì)有益的實(shí)踐,先小范圍應(yīng)用到實(shí)際工作中,身邊的人自然會(huì)看到你做的一切,自然會(huì)感受到敏捷的力量。
這是
互聯(lián)網(wǎng)的時(shí)代,按照互聯(lián)網(wǎng)思維,每個(gè)人都是一個(gè)節(jié)點(diǎn),通過建立連接可以發(fā)揮無窮的影響力,方法就是不斷的 學(xué)習(xí)、實(shí)踐、溝通、分享 ,循環(huán)往復(fù)…
English » | | | | | | | | |
Text-to-speech function is limited to 100 characters
Loadrunner12推出Community版本,支持50個(gè)免費(fèi)用戶
LoadRunner仿照6年前就已經(jīng)出現(xiàn)的SOASTA、Neotys、Blazemeter等競(jìng)爭(zhēng)對(duì)手,推出云
性能測(cè)試平臺(tái),有興趣的朋友可以看看《Thoughts about LoadRunner 12 Release》這篇
文章。
新特性
1、Cloud-based load generators
2、Licensing - 50 vUsers free
3、VUGEN improvements
The ability to review replay statistics for tests after each run.
Including details on total connections, disconnections and bytes downloaded.
The ability to edit common file types in the editor.
Support for recording in the Internet Explorer 11, Chrome v30 and Firefox v23 browsers.
The ability to create scripts from Wireshark or Fiddler files.
The ability to record HTML5 or SPDY protocols.
4、TruClient improvements
TruClient script converter. This basically replays your TruClient scripts and records the HTTP/HTML traffic allowing you to create these script typers from TruClient recordings. This is similar to recording GUI scripts and then converting to other script types.
The addition of support for Rendezvous points, IP spoofing, VTS2 and Shunra network virtualisation in TruClient scripts.
5、
Linux Load Generator improvements
Building on the increased support for Linux Load Generators in 11.5x, LDAP, DNS, FTP, IMAP, ODBC, POP3, SMTP and
Windows Sockets scripts can now be replayed through UNIX load generators.
6、CI/CD support
Better integration with Jenkins etc.
7、Platform support
Support for installation on Windows Server 2012.
(LoadRunner 11.x and PC 11.x only supported up to W2K8 which was a barrier to enterprise adoption).
LoadRunner components can now run in a "non-admin" user account with UAC and DEP enabled.
English » | | | | | | | | |
Text-to-speech function is limited to 100 characters
一、 網(wǎng)站程序中采用DIV+CSS這種模式,不用Table
目前DIV+CSS是主流的編程語言,這與其體積小加載快的優(yōu)點(diǎn)是密不可分的。主流的網(wǎng)站和CMS采用的也都是這種模式。因此建議大家也采用這種模式來編程,而不要采用原始的Table結(jié)構(gòu)。Table結(jié)構(gòu)不但管理不方便,網(wǎng)頁體積也會(huì)變大,降低網(wǎng)站的加載速度。
二、 采用Gzip技術(shù)對(duì)網(wǎng)頁進(jìn)行壓縮
采用Gzip技術(shù)對(duì)網(wǎng)頁進(jìn)行壓縮是減少網(wǎng)頁體積的一個(gè)很好的方式.一般情況下這是需要你的網(wǎng)站空間支持的,像我用的A5的合租主機(jī),壓縮率可以達(dá)到80%。網(wǎng)頁體積小了,自然加載速度就快了。
三、 減少CSS文件數(shù)量和體積
在采用DIV+CSS過程中,CSS文件是非常重要的。如果在編寫過程中有多個(gè)CSS文件,建議將多個(gè)CSS文件進(jìn)行合并,這樣可以加快網(wǎng)站加載速度。另外,可以采用專業(yè)的網(wǎng)頁減肥軟件對(duì)CSS文件進(jìn)行減肥,以減少CSS文件的體積。
四、使用CDN加速。
近一年CDN已經(jīng)在我們個(gè)人站長(zhǎng)中聽的較多,也有很多朋友在使用。CDN的全稱是Content Delivery Network,解釋為內(nèi)容分發(fā)網(wǎng)絡(luò)。原理思路是盡可能避開
互聯(lián)網(wǎng)上有可能影響數(shù)據(jù)傳輸速度和穩(wěn)定性的瓶頸和環(huán)節(jié),使內(nèi)容傳輸?shù)母臁⒏€(wěn)定。也就是網(wǎng)站加速器,這個(gè)需要付費(fèi)使用的,免費(fèi)的不是太穩(wěn)定。
五、優(yōu)化代碼,減少臃腫結(jié)構(gòu)。
如果我們使用較為流行的CMS這方便應(yīng)該不會(huì)有臃腫的代碼結(jié)構(gòu)存在,但需要注意的是我們?cè)谥谱骰蛘哌x擇網(wǎng)站模 板的時(shí)候也會(huì)存在不合理的結(jié)構(gòu)。我們需要在寫模板或者程序的時(shí)候使用較為簡(jiǎn)潔的程序框架,簡(jiǎn)潔有利于用戶體驗(yàn),也更利于搜索引擎蜘蛛的爬行和抓取。
六、減少圖片大小和數(shù)量。
我們盡量在上傳網(wǎng)站圖片的時(shí)候減少圖片的大小和尺寸,可以在上傳圖片之前對(duì)圖片進(jìn)行壓縮處理,圖片適當(dāng)尺碼即可,不要過大。圖片僅僅是網(wǎng)站的點(diǎn)綴,而不需要都是圖文。同時(shí),我們也盡量避免使用大量的視頻或者音頻內(nèi)容。
七、減少JavaScript腳本文件,盡量存放在一個(gè)文件中。
盡量外部調(diào)用JS代碼,不要放在網(wǎng)頁中,更不要遠(yuǎn)程調(diào)用外部的JS代碼。例 如
Google建議您加載在HEAD標(biāo)簽的分析。您也可以嘗試結(jié)合的JavaScript和壓縮他們更快地加載。有些時(shí)候我們?cè)陬^部的CSS,JS代碼太 多,導(dǎo)致中間內(nèi)容部分加載太慢。所以盡量減少頭部的代碼。
八、運(yùn)用靜態(tài)的HTML頁面
眾所周知,ASP、PHP、JSP等順序完成了網(wǎng)頁信息的靜態(tài)交互,運(yùn)轉(zhuǎn)起來確實(shí)十分方便,由于它們的數(shù)據(jù)交互性好,能很方便地存取、更改
數(shù)據(jù)庫(kù)的內(nèi)容,但是這類順序也有本人的缺陷,那就是它必需由效勞器先生成HTML頁面,然后在“傳送”給用戶,多了一個(gè)步驟,必定會(huì)影響到網(wǎng)站的拜訪速度,所以筆者建議,在新站開端的時(shí)分,在對(duì)本人網(wǎng)站的重要調(diào)查期內(nèi)還是采用靜態(tài)的HTML頁面比擬保險(xiǎn)。
九、 將ASP、ASPX、PHP等文件的訪問改為.js引用
這在ASP、ASPX、PHP等程序設(shè)計(jì)時(shí)應(yīng)該注意的,如果要在靜態(tài)的HTML頁面里嵌入動(dòng)態(tài)的數(shù)據(jù),而這些動(dòng)態(tài)的數(shù)據(jù)是由ASP、PHP等程序來提供的話,會(huì)使用以下的語句引用:
<script src=”http://image.ccidnet.com/ad_files/network_index.asp?orders=1″></script>
這樣的話,每次有一個(gè)人訪問你的網(wǎng)站,服務(wù)器就要執(zhí)行并處理一次network_index.asp文件,從數(shù)據(jù)庫(kù)抽取相應(yīng)的數(shù)據(jù),再輸出給網(wǎng)頁顯示,如果有幾萬個(gè)人同時(shí)訪問,就要執(zhí)行幾萬次,后果就可想而知。建議在這些程序中將數(shù)據(jù)動(dòng)態(tài)生成到一個(gè)network_index.js文件中去,然后在首頁通過
<script src=”http://www.179job.com/ad_files/home_daohang/network_index.js”></script>
這樣的代碼來引用該network_index.js文件。這樣,數(shù)據(jù)顯示的任務(wù)就交給客戶端的瀏覽器去做,不會(huì)耗費(fèi)服務(wù)器的資源,顯示速度自然就很快;前者所花的時(shí)間幾乎是后者的幾倍!
English » | | | | | | | | |
Text-to-speech function is limited to 100 characters
正是因?yàn)闃I(yè)務(wù)需求推動(dòng)應(yīng)用軟件的創(chuàng)建,所以應(yīng)用程序的設(shè)計(jì)必須萬無一失且通過質(zhì)量保證認(rèn)證。質(zhì)量保證的一個(gè)重要方面是:設(shè)計(jì)出能確保所有設(shè)計(jì)場(chǎng)景已在
測(cè)試中被抓取的
測(cè)試用例。測(cè)試用例是一組條件或變量,在其中,測(cè)試員將決定被測(cè)系統(tǒng)是否滿足設(shè)計(jì)的要求和功能。開發(fā)測(cè)試用例的過程也有助于發(fā)現(xiàn)應(yīng)用程序的要求或設(shè)計(jì)中的問題。一個(gè)測(cè)試用例與一些元素指示(如測(cè)試集ID ,測(cè)試用例ID,測(cè)試總結(jié)和測(cè)試描述)有關(guān)。
測(cè)試用例設(shè)計(jì)有兩個(gè)主要任務(wù):
·測(cè)試設(shè)計(jì)是所有邏輯測(cè)試用例的注意要求的草案。如果有效地設(shè)計(jì),這就是一個(gè)能在測(cè)試執(zhí)行時(shí)節(jié)省相當(dāng)大精力及成本的關(guān)鍵部分。
·規(guī)格包含被轉(zhuǎn)化為將要進(jìn)行的物理測(cè)試指令的完整描述的草稿。
我們使用一個(gè)基于元數(shù)據(jù)的方法來設(shè)計(jì)測(cè)試用例。這種方法對(duì)于將要跨多個(gè)應(yīng)用程序進(jìn)行統(tǒng)一測(cè)試時(shí)以可重復(fù)的方式設(shè)計(jì)測(cè)試用例來說是很有用的。示例場(chǎng)景是涉及數(shù)據(jù)遷移或企業(yè)數(shù)據(jù)屏蔽的項(xiàng)目。基于元數(shù)據(jù)的測(cè)試用例設(shè)計(jì)和通用測(cè)試用例設(shè)計(jì)的主要區(qū)別是:前者沒有在從需求去推導(dǎo)測(cè)試用例上花時(shí)間,因?yàn)橥ㄟ^元數(shù)據(jù)直接使用數(shù)據(jù)或前期數(shù)據(jù)的數(shù)據(jù)或?qū)傩允怯锌赡艿摹?/div>
圖1.使用測(cè)試用例生成工具設(shè)計(jì)測(cè)試用例
用基于元數(shù)據(jù)的方法,我們可以著手處理庫(kù)存要求;反過來,著手處理庫(kù)存要求也可以獲取元數(shù)據(jù)存儲(chǔ)庫(kù)中的數(shù)據(jù)屬性。基于庫(kù)存,就能準(zhǔn)備高層次的場(chǎng)景,然后支持測(cè)試用例的開發(fā)。為了加快測(cè)試用例的準(zhǔn)備過程,我們?cè)O(shè)計(jì)了可以用任意基本腳本語言(如VB腳本,UNIX或Perl)實(shí)現(xiàn)的方法,以可重復(fù)的方式高效地生成測(cè)試用例。
測(cè)試用例生成工具( TCGT )是一個(gè)基于在矩陣上的信息的基礎(chǔ)上生成測(cè)試用例的高度自動(dòng)化工具。它生成的測(cè)試用例可以滿足驗(yàn)收,確認(rèn),應(yīng)用核實(shí)的目的。基于元數(shù)據(jù)的測(cè)試用例設(shè)計(jì)可以用于以下兩種場(chǎng)景,在這兩種場(chǎng)景中要求了基于工廠的測(cè)試用例設(shè)計(jì)和生成。
場(chǎng)景1:數(shù)據(jù)遷移
數(shù)據(jù)遷移項(xiàng)目需要大量的
數(shù)據(jù)庫(kù)測(cè)試,以確保沒有數(shù)據(jù)泄漏,且遷移后數(shù)據(jù)的完整性和質(zhì)量得以保留。遷移過程是由一組作為映射規(guī)則和轉(zhuǎn)換功能的規(guī)格決定的。例如,如果我們正在測(cè)試一個(gè)系統(tǒng),把數(shù)據(jù)從
SQL Server 2005遷移到SQL Server 2008中,我們就需要執(zhí)行以下操作:
·數(shù)據(jù)遷移的需求分析
·規(guī)范化要求
·元數(shù)據(jù)驗(yàn)證
·數(shù)據(jù)驗(yàn)證
場(chǎng)景2:數(shù)據(jù)屏蔽
基于元數(shù)據(jù)的測(cè)試用例的設(shè)計(jì)也可以在企業(yè)數(shù)據(jù)屏蔽中實(shí)現(xiàn)。數(shù)據(jù)屏蔽測(cè)試需要比較數(shù)據(jù)正確性和完整性的源頭數(shù)據(jù)和目標(biāo)數(shù)據(jù)。沒有屏蔽或屏蔽后復(fù)制的表格應(yīng)該測(cè)試其數(shù)據(jù)變化,屏蔽算法和業(yè)務(wù)規(guī)則。在大多數(shù)情況下,數(shù)據(jù)屏蔽場(chǎng)景需要可重復(fù)準(zhǔn)備和執(zhí)行的測(cè)試用例,這樣測(cè)試用例設(shè)計(jì)中就可以使用元數(shù)據(jù)方法了。
English » | | | | | | | | |
Text-to-speech function is limited to 100 characters
一、問題:如何將mock的類自動(dòng)注入到待測(cè)類,特別是在沒有setter方法的情況下。
解答:
前提:待測(cè)的service類及其依賴的其他類都是處在被spring管理中的。
做法:在
測(cè)試類中,只要將待測(cè)的類標(biāo)注為@InjectMocks,將其依賴的其他類標(biāo)注為 @Mock,
就可以使用MockitoAnnotations.initMocks(this);這句話自動(dòng)將依賴的類注入待測(cè)類,如果依賴類在spring的管理下有自己的name,那么甚至在待測(cè)類中都不需要寫setter方法。
例:
1、待測(cè)類
@Component("abcService") public class AbcService { @Resource(name="aaaDao") private AaaDao aaaDao; @Resource(name="bbbDao") private BbbDao bbbDao; ......//注:此處省略的代碼中并不包含aaaDao和bbbDao的setter方法。 } |
2、測(cè)試類
public class AbcServiceTest{ @InjectMocks AbcService abcService; @Mock AaaDao aaaDao; @Mock BbbDao bbbDao; @Before public void setup(){ MockitoAnnotations.initMocks(this);//這句話執(zhí)行以后,aaaDao和bbbDao自動(dòng)注入到abcService中。 //在這之后,你就可以放心大膽地使用when().then()等進(jìn)行更詳細(xì)的設(shè)置。 } } |
二、問題:如何對(duì)連續(xù)的調(diào)用進(jìn)行不同的返回
對(duì)連續(xù)的調(diào)用進(jìn)行不同的返回 (iterator-style stubbing)
還記得在實(shí)例2中說道當(dāng)我們連續(xù)兩次為同一個(gè)方法使用stub的時(shí)候,他只會(huì)使用最新的一次。但是在某一個(gè)方法中我們確實(shí)有很多的調(diào)用怎么辦呢?mockito當(dāng)然想到這一點(diǎn)了:
when(mock.someMethod("some arg")) .thenThrow(new RuntimeException()) .thenReturn("foo"); //First call: throws runtime exception: mock.someMethod("some arg"); //Second call: prints "foo" System.out.println(mock.someMethod("some arg")); //Any consecutive call: prints "foo" as well (last stubbing wins). System.out.println(mock.someMethod("some arg")); |
當(dāng)然我們也可以將第一句寫的更簡(jiǎn)單一些:
when(mock.someMethod("some arg"))
.thenReturn("one", "two", "three");
English » | | | | | | | | |
Text-to-speech function is limited to 100 characters
CentOS:
開啟遠(yuǎn)程連接服務(wù):service sshd start
添加到系統(tǒng)啟動(dòng)項(xiàng):chkconfig sshd on
客戶端工具:windows下連接工具putty
=============================================
Ubuntu:
安裝命令:$ sudo apt-get install openssh-server
查看openssh-server是否啟動(dòng)
$ ps -e | grep ssh
進(jìn)程ssh-agent是客戶端,sshd為服務(wù)器端,如果結(jié)果中有sshd的進(jìn)程說明openssh-server已經(jīng)啟動(dòng),如果沒有則需運(yùn)行命令啟動(dòng)。
啟動(dòng)、停止和重啟openssh-server的命令如下
/etc/init.d/ssh start
/etc/init.d/ssh stop
/etc/init.d/ssh restart
配置openssh-server
openssh-server配置文件位于/etc/ssh/sshd_config,在這里可以配置SSH的服務(wù)端口等,例如:默認(rèn)端口是22,可以自定義為其他端口號(hào),如222,然后需要重啟SSH服務(wù)。
Ubuntu中配置openssh-server開機(jī)自動(dòng)啟動(dòng)
打開/etc/rc.local文件,在exit 0語句前加入:
/etc/init.d/ssh start
關(guān)于客戶端連接
客戶端可以用putty、SecureCRT、SSH Secure Shell Client等SSH 客戶端軟件,輸入您服務(wù)器的IP地址,并且輸入登錄的用戶和密碼就可以登錄了。我常選擇的客戶端軟件是putty。
English » | | | | | | | | |
Text-to-speech function is limited to 100 characters
摘要: 前言 本文基于順序循環(huán)隊(duì)列,給出Linux生產(chǎn)者/消費(fèi)者問題的多線程示例,并討論編程時(shí)需要注意的事項(xiàng)。文中涉及的代碼運(yùn)行環(huán)境如下: 本文假定讀者已具備線程同步的基礎(chǔ)知識(shí)。 一 順序表循環(huán)隊(duì)列 1.1 順序循環(huán)隊(duì)列定義 隊(duì)列是一種運(yùn)算受限的先進(jìn)先出線性表,僅允許在隊(duì)尾插入(入隊(duì)),在隊(duì)首刪除(出隊(duì))。新元素入隊(duì)后成為新的隊(duì)尾元素,元素出隊(duì)后其后繼元素就成為隊(duì)首元素。 隊(duì)列的順...
閱讀全文
WINDOWS遠(yuǎn)程連接LINUX配置(LINUX VNC
Server配置):
1.查看本機(jī)是否有安裝vnc(centOS5默認(rèn)有安裝vnc)
rpm -q vnc vnc-server
如果顯示結(jié)果為:
package vnc is not installed
vnc-server-4.1.2-14.e15_3.1
那恭喜你,機(jī)器上已經(jīng)安裝了vnc,如果沒有,就得自己安裝了,這里不說怎么安裝了,很簡(jiǎn)單,在centOS的軟件庫(kù)中搜索,點(diǎn)擊安裝
2.把遠(yuǎn)程桌面的用戶加入到配置文件中
vim /etc/sysconfig/vncservers
使用vim編輯器打開配置文件,在文件中添加下面兩行命令
VNCSERVERS="1:root" --指定遠(yuǎn)程用戶
VNCSERVERARGS[1]="-geometry 1024x768" --指定遠(yuǎn)程桌面分辨率
3.給你剛剛設(shè)置的遠(yuǎn)程桌面用戶 root 設(shè)置密碼
vncpasswd
4.開啟VNC端口
vim /etc/sysconfig/iptables
使用vim編輯器打開配置文件,在文件中添加下面一行命令
-A RH-Firewall-l-INPUT -p tcp -m tcp --dport 5900:5903 -j ACCEPT
5.重啟防火墻
service iptables restart
6.修改遠(yuǎn)程桌面顯示配置文件(不修改此文件你看到的遠(yuǎn)程桌面很簡(jiǎn)單,相當(dāng)于命令行操作,為了遠(yuǎn)程操作如同本地操作一樣,務(wù)必參考以下方式進(jìn)行修改)
cd ~/.vnc/
vim xstartup
使用vim編輯器打開配置文件,并進(jìn)行下列修改
#xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & --將它注釋,加#代表注釋
#twm & --將它注釋
gnome-session & --添加它
看了這段代碼,大家應(yīng)該明白是怎么回事了
7.啟動(dòng)vnc服務(wù)
service vncserver start
8.遠(yuǎn)程連接
打開vnc客戶端,server框中輸入ip:1 (1代表上面配置的遠(yuǎn)程用戶代號(hào),配置文件中可以配置多個(gè)遠(yuǎn)程用戶),這時(shí)你便可以輕松的通過友好的遠(yuǎn)程桌面來控制centOS了。
9.開機(jī)自動(dòng)啟動(dòng)vnc
vim /etc/rc.d/rc.local
使用vim編輯器打開配置文件,并進(jìn)行下列修改
/etc/init.d/vncserver start --新增行
WINDOWS遠(yuǎn)程連接:
主機(jī)ip+port
http://www.cnblogs.com/zxlovenet/p/4042959.html
LINUX下遠(yuǎn)程桌面工具(可遠(yuǎn)程WINDOWS):
在Linux上配置訪問遠(yuǎn)程桌面的軟件,這里我們需要安裝rdesktop和tsclient,其中rdesktop是基于命令行的工具,tsclient只是一個(gè)圖形化的界面,依賴于rdesktop。
登入gnome后打開終端
$yum install rdesktop
$yum install tsclient
如下圖的:Terminal Server Client
English » | | | | | | | | |
Text-to-speech function is limited to 100 characters
浮現(xiàn)在腦海的很多 Linux命令,其中一些不為人知,另一些則很常見,如下: xargs or parallel: 并行運(yùn)行一些程序,命令有很多的選項(xiàng)
m4: 簡(jiǎn)單的宏處理命令
screen: 功能強(qiáng)大的終端復(fù)用和會(huì)話持久工具,詳見http://www.ibm.com/developerworks/cn/linux/l-cn-screen/
yes: 重復(fù)輸出字符串 詳見 http://codingstandards.iteye.com/blog/826940
cal: 非常漂亮的日歷
env: 運(yùn)行一個(gè)命令,在腳本中非常有用
look: 查找以字符串開頭英文單詞
cut and paste and join: 數(shù)據(jù)操作命令
fmt: 格式化一個(gè)文本段
pr: 以頁/列為單位格式化一串文本或一個(gè)較大文件,詳見 http://hi.baidu.com/mchina_tang/item/1ce11d5d317dfc05aaf6d70d
fold: 使文本換行
column: 格式化文本成列或表格
expand and unexpand: 在制表符和空格之間轉(zhuǎn)換
nl: 添加行號(hào)
seq: 打印行號(hào)
bc: 計(jì)算器
factor: 輸出整數(shù)的因數(shù),factor輸出的為整數(shù)的質(zhì)因數(shù)
nc: 網(wǎng)絡(luò)調(diào)試和數(shù)據(jù)傳輸
file: 判斷一個(gè)文件的類型
stat: 查看文件狀態(tài)
tac: 從最后一行輸出文件內(nèi)容,和cat輸出是相反的
shuf: 對(duì)一個(gè)文件按行隨機(jī)選擇數(shù)據(jù)
comm: 按行比較一個(gè)有序文件
hd and bvi: 輸出或編輯二進(jìn)制文件
strings: 查看二進(jìn)制文件中的內(nèi)容
tr: 字符翻譯或操作字符
iconv or uconv: 轉(zhuǎn)換編碼的字符串
split and csplit: 劃分文件
7z: 高壓縮率壓縮文件
ldd: 查看動(dòng)態(tài)庫(kù)信息
nm: 查看目標(biāo)文件中的符號(hào)表
strace: 調(diào)試系統(tǒng)調(diào)用
mtr: 網(wǎng)絡(luò)調(diào)試時(shí)能夠更好的進(jìn)行路由跟蹤工具
wireshark and tshark: 數(shù)據(jù)包捕獲和網(wǎng)絡(luò)調(diào)試
host and dig: 查找DNS
lsof: 查看進(jìn)程文件描述符和socket信息
dstat: 很有用的系統(tǒng)數(shù)據(jù)統(tǒng)計(jì)工具
iostat: CPU和磁盤使用統(tǒng)計(jì)
htop: top的改進(jìn)版本
last: 登錄歷史
w: 當(dāng)前登錄用戶
id: 查看用戶/組 表示信息
sar: 查看歷史系統(tǒng)統(tǒng)計(jì)數(shù)據(jù)工具
iftop or nethogs: 查看socket或者進(jìn)程的網(wǎng)絡(luò)利用率
ss: 查看統(tǒng)計(jì)信息
dmesg: 啟動(dòng)或者系統(tǒng)錯(cuò)誤信息
(Linux) hdparm: 顯示或設(shè)定磁盤參數(shù)
(Linux) lsb_release: 查看linux系統(tǒng)發(fā)行版本信息
(Linux) lshw: 查看硬件信息
fortune, ddate, and sl: 這取決于你是否覺得蒸汽機(jī)或者比比語錄有用。
English » | | | | | | | | |
Text-to-speech function is limited to 100 characters