記錄自己的一次面試 軟體測試工程師的面試
10點剛到,先進行筆試,筆試的題目很基礎,涉及到linux,涉及到oracle資料庫,涉及程式設計基礎,涉及測試理論,但是你讀完題目和寫完也要是花時間的。我花了40分鐘左右的時間才寫完。。
Linux基礎
1. 檢視a.txt檔案中bbb字串
grep 'bbb' a.txt
2. 改變a.txt的所屬者為Lisa
chown Lisa:Lisa a.txt
chown Lisa a.txt 【只讓改所屬者,沒讓改所屬組】
3.檢視conrob程序的命令
ps -ef | grep conrob
4.vi命令下,向上移動游標,向下移動游標
上下左右 kjhl【這四個鍵盤很好記,右手習慣的幾個鍵,h最左右所以向左,l最右邊,jk是先下後上】
5.將檔案a.txt排序生成b.txt
sort a.txt >b.txt
6. 不儲存檔案退出命令
末端模式下輸入q!【Esc : q!】
7. 查詢當前目錄以及子目錄下檔案字尾是xxx的檔案
find ./ -name *.xxx
8. 顯示日期的命令
date
Oracle基礎
【oracle資料庫我好久沒有遇到了,查詢sql根據mysql和sqlserver寫的,也不敢太用別名,怕錯】
1.給a表建立聯合索引 name+bb+cc
create index ind_name on tablea(name,bb,cc)
2.賦予使用者alex update delete a表的許可權
grant update,delete on tablea to alex
3.檢視a表中的所有記錄且姓名不在b表中的
select * from tablea where name not in (select distinct name from tableb) 【我想了想加了個distinct在b表中】
4. 查詢b表中的唯一的卡號
select cardnum from tableb group by cardnum 【起初不小心加了distinct,然後想想把它給劃了】
5. 查詢b表中幣種是RMB且地區是深圳的貸款總和
select sum(amount) from tableb where city = 'shenzhen' and bizhong='RMB'
【起初沒看到只要差RMB,還多此一舉,
select bizhong, sum(amount) from where city = 'shenzhen' group by bizhong, 也不知道後來有沒有多劃掉】
6. 複製b表的結構到新表
create table tablec as select * from tableb where 1=2
【之前沒印象,用的mysql格式CREATE TABLE 新表 LIKE 舊錶 】
7. 查詢b表中姓名和卡號,要求同一個卡號既有人民幣消費,又有美金消費
select name, cardnum from tableb group by name, cardnum having count(*) >=2
【我做這樣的題目有各種疑問,比如消費金額為0的記錄,算不算?雖然解決辦法很簡單,加上一個where amount> 0 即可,
但是proc測試多了,一眼瞄過,對各個欄位就不免想多了,
我10點鐘才到,11點半吃飯,又怕做題太長,最終影響人家interviewer的情緒,也讓我。。。】
8.用一個select查詢表表中姓名和卡號,要求美金中顯示2條消費最大的記錄,rmb中顯示兩條最大的記錄
select name , cardnum ,rownum from tableb where bizhong = 'dollor' and rownum<=2
order by amount desc
union all
select name , cardnum ,rownum from tableb where bizhong = 'rmb' and rownum<=2
order by amount desc
程式設計基礎
1.java中==和equals的區別
==是表示值和記憶體地址完全一致
equals判斷值是否相等
2.一個java中能有多個類嗎?為什麼?
一個.java原始檔中可以有多個類嗎?(內部類除外)有什麼條件?
可以的
但是隻能有一個public類, 而且如果有public類的話,這個檔案的名字要和這個類的名字一樣。
如果都沒有public類,名字可以不和這個類一樣。
3.將x/y/z 從大到小輸出
int[] a ={x,y,z}
for (int i=0;i<a.length()-1;i++){
for (int j=0;j<a.length()-1;j++){
if (a[j]<a[j+1])
temp =a[j];
a[j]=a[j+1];
a[j+1] = temp;
}}
自己寫錯了,下面才是正確的。
import org.testng.annotations.Test; import java.util.Arrays; public class TestSort { int a[] = {1, 2, 3, 4, 5, 6, 7}; int temp; @Test(priority = 1, description = "利用Arrays中的Sort函式排序") public void ArraysSort() { Arrays.sort(a); for (int i = 0; i < a.length; i++) { System.out.println(a[i]); } } @Test(priority = 2, description = "氣泡排序") public void BuddleSort() { for (int i = 0; i < a.length - 1; i++) { for (int j = 0; j < a.length - 1 - i; j++) { int temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } } } }
4. python2.1和python3.1的預設字元編碼?
'ascii'
'utf-8'
猜也能猜到,但我懶得寫。python的確不熟
5.python中分割aa_bb_cc,
s1="aa_bb_cc"
s1.split('_')
6.如何用python將整型1輸出為0001
測試的基礎
1. 軟體測試的意義
2. bug的生命週期
3. 常見的測試方法
4. 你常用的自動化測試工具?
介面用Jmeter和httpClient
UI用 selenium和macaca
5. 一個文字框,輸入6的字元,要求輸入的年份在199001到204912月,要求前四位是年,後兩位是月,請設計測試用例並說明
寫完給HR打電話,之後直接一面。
面試的問題
1. 講一個具體的介面,你是怎麼測試的,怎麼實現自動化的?
針對http介面進行測試,使用Jmeter工具實現。
Jmter工具設計之初是用於做效能測試的,它在實現對各種介面的呼叫方面已經做的比較成熟,因此,本次直接使用Jmeter工具來完成對Http介面的測試。
一、開發介面測試案例的整體方案:
我們起初會得到一個CR文件,CR文件裡列出裡客戶此次的痛點和癢點,還有PM列出的解決方案。比如要開發什麼介面,以達到什麼目的。
這種介面是一次性使用,做活動用的,還是日常使用等等的說明。
第一步:CR文件下來之後,我會分析出測試需求,大概知道會怎麼實現,對對CR有疑問的地方,做下標記;等到下次全專案開會,提出疑問,確保測試、開發和PM對需求的理解是一致的。會議上也會闡述大概的實現方式,涉及的表,是否用觸發器,等等的問題。會議之後可以拿到開發提供的介面說明文件;
第二步:從介面說明文件中整理出介面測試案例,裡面要包括詳細的入參和出引數據以及明確的格式和檢查點
第三步:和開發一起對介面測試案例進行評審。
第四步:結合開發庫,準備介面測試案例中的入引數據和出引數據,並整理成csv格式的檔案。
第五步:結合介面測試案例文件和csv格式的資料文件,做介面測試案例的自動化案例開發。
對於大一點的公司,用Jmeter編寫自動化指令碼,真的很low吧。我也覺得很low,但是不得不說完全夠用,還極其容易上手。
對資料處理靈活,斷言,資料落地,都可以查詢和驗證。
2. 端到端的測試你們做過嗎?
3. 效能測試關注點是什麼?
我們通常認為的規定的指標是:
伺服器資源使用情況,不管是中介軟體伺服器, 還是DB伺服器,從記憶體,到CPU,不超過70%
從響應的結果來看,錯誤率不超過1%,甚至要求錯誤率更低;基本上實踐當中,不超過0.1%;
平均響應時間不超過3秒,視查詢條件而定,有的要求是不超過2秒;
90%的響應時間不超過3秒。
你們不看TPS嗎?TPS知道嗎?
也要看啊,我還沒講完呢。 每秒中的處理請求的數量啊~~
TPS是受木桶原理影響,要看每一處的配置的。【後悔沒多說點,抬頭對上interviewer的眼神,這個話題就完了】
3. 扯閒話部分:
你們公司的開發測試的比例是怎樣的?我們是 4:1?
你們公司系統的中介軟體是什麼?
效能測試中,你有進行效能調優嗎?
嗯,驗證過很多介面,有的定量需求,比如要求某個介面的TPS達到500. 如果第一次效能測試,能達到500,也就夠了,沒有下文了;但是這個是註冊介面,隨著時間推移,DB伺服器資源CPU到記憶體都吃的越來越緊,發現TPS下降了,之後越來越低。
什麼原因造成的?
DB伺服器的原因。這個一個nosql資料庫,以前這個介面是能達到500TPS的,但是隨著微信繫結推出unionid後,需要增加新的欄位,新的表;而這種DB對查詢條件需要加索引,要不然不支援查詢。
表中資料量越來越多,又有很多欄位添加了索引,當資料量達到千萬級別之後,新增索引消耗DB的資源,也明顯感受到佔用了時間。 導致介面查詢慢,新增也慢。
有別的調優嗎?
還有發現,若干個欄位,因為沒有加索引,導致查詢介面TPS不高等問題;
專案中有用hibernate的,有時候定位比較難,因為sql都是hibernate拼接的。
4. 有沒有自己創新什麼工具,用來提高效率的?
自己回答
5. oracle中分頁怎麼實現的?
oracle很久沒用,打錯了,我回答的是跟mysql差不多吧,用limit的?
用limit?
後來發現用rownum
6. selenium在你們的測試過程中也用?還用嗎? 有沒有什麼問題?瀏覽器相容性問題能做到嗎?
差不多就這麼多了,接下來到面試者問問題時間。
總體感覺就是, 自己就像一個AI,面試官問什麼,自己回答什麼,沒有做必要的延伸,沒有引入自己的話題。
總體感覺就是面得不好。
我想說我也可以開發自動化測試平臺,只是還不太成熟。因為都是一個人做,時間和能力都有限,不知道用什麼技術,架構,要增加什麼。