1. 程式人生 > >記錄自己的一次面試 軟件測試工程師的面試

記錄自己的一次面試 軟件測試工程師的面試

工程 讓我 sys selenium 實踐 sum 之前 inux 測試理論

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,面試官問什麽,自己回答什麽,沒有做必要的延伸,沒有引入自己的話題。

總體感覺就是面得不好。

我想說我也可以開發自動化測試平臺,只是還不太成熟。因為都是一個人做,時間和能力都有限,不知道用什麽技術,架構,要增加什麽。

記錄自己的一次面試 軟件測試工程師的面試