第一部:
1嘉抓、接口(api)測試在什么時候使用的?
1晕窑、新接口:當(dāng)開發(fā)的后臺程序開發(fā)完畢抑片,交付給測試之后(沒有測試測試之前,可能還沒開發(fā)好這個接口)杨赤,交付是有前提的敞斋,
一般情況下,開發(fā)會提供接口文檔疾牲,后面就用 postman....等接口測試工具測試植捎。
2、老接口:新接口測試(新功能測試)阳柔,做回歸測試鸥跟,這個時候,新老接口一起做盔沫,目的是為了驗證新的接口是否對老的接口
產(chǎn)生影響。
3枫匾、api測試就是 接口測試
2架诞、還有斷言 在講一遍(jemeter)
斷言:某行代碼或者某行腳本 之前加上 斷言,如果不出錯干茉,則程序繼續(xù)往下執(zhí)行谴忧。如果出錯呢?那程序就會拋出異常提示角虫,
告訴你沾谓,程序出錯,并且終止此次執(zhí)行戳鹅。
3均驶、SVN能做哪些事情,是干嘛用的?
svn:版本管理工具枫虏,它和git本質(zhì)上一樣妇穴,它們兩者的區(qū)別,就相當(dāng)于禪道和jira的區(qū)別隶债。他兩本質(zhì)上都是文檔管理腾它。
代碼:
java 代碼:xxxx.java
python 代碼:xxxx.py
普通文件:
word、excel死讹、ppt瞒滴、text....
本質(zhì):都是文件,都是存儲字符串赞警,只是存儲的方式不一樣妓忍。
SVN:存放代碼虏两、存放普通文件。git也是一樣的功能单默。
svn在什么時候使用碘举?
1、提交代碼的話搁廓,當(dāng)開發(fā)人員代碼開發(fā)完成引颈,就會把代碼提交到svn上。
2境蜕、提交文件蝙场,比如測試用例編寫完畢(excel)、測試報告(word)....
為什么要使用svn(git)工具粱年?
1售滤、方便統(tǒng)一管理
2、實現(xiàn)資源共享
3台诗、版本管理的功能完箩、這個只能在代碼管理,體現(xiàn)比較大
4拉队、有權(quán)限控制弊知,每個team都有對應(yīng)的文件夾權(quán)限
4、敏捷測試粱快?
1秩彤、為什么要有敏捷測試?
因為每個公司的項目事哭,不是一次做完就扔掉漫雷,后續(xù)還會有需求更新和bug。當(dāng)項目前期做完之后鳍咱,如果后續(xù)還有新的需求或者
需求變更降盹,或者bug,會再次開發(fā)流炕,bug修復(fù)觉既,再上線悴侵。
2、在敏捷測試里面,會有看板讯嫂?
看板在哪里看到:小公司在物理看板(搞一個白板)
看板進度的追蹤:項目經(jīng)理
看板狀態(tài):待開發(fā)哥攘、開發(fā)中(開發(fā)人員)虱颗;待測試罗丰、測試中(測試人員);產(chǎn)品驗收、關(guān)閉(產(chǎn)品經(jīng)理)
5胳岂、有一個客戶编整,買了一百種物品,但是反應(yīng)有一個單品算錯了乳丰。
(1)怎么在后臺找到這個bug
1掌测、第一反應(yīng):我單獨測試這個單品,看是否正確产园,如果正確汞斧,看是不是跟其他商品組合的時候,才會算錯
如果單品出錯的話什燕,那就是這個商品的算法有問題
如果是組合出錯的話粘勒,那么這個單品在組合的時候算法有問題。
2屎即、考慮業(yè)務(wù):
1庙睡、看此單品是否參加促銷活動,如果促銷活動技俐,跟開發(fā)確認是否把促銷活動的優(yōu)惠算進去乘陪。
2、本身存在的bug雕擂,去數(shù)據(jù)庫查看暂刘,是否是因為數(shù)據(jù)的原因的導(dǎo)致,可能就是臟數(shù)據(jù)
(2)怎么用接口測出來這bug
1、用fiddler抓取這個接口捂刺,結(jié)算接口
2、結(jié)算:參數(shù):商品募寨,商品數(shù)量族展、商品的價格
3、然后根據(jù)上述提供的思路測試一下(postman)
6拔鹰、項目難點在哪里
項目的難點:工作流(核心)
1仪缸、一個系統(tǒng)操作流程,一個系統(tǒng)如果沒有工作流的話列肢,她跟excel的功能沒有區(qū)別恰画。
2、什么是工作流瓷马?
顧名思義:就是業(yè)務(wù)流程
電商系統(tǒng):
1拴还、前臺的數(shù)據(jù)和后臺公用
2、后臺的數(shù)據(jù)依賴前臺
3欧聘、測試環(huán)境的數(shù)據(jù)可以直接在數(shù)據(jù)庫中去造片林,利用insert into語句
項目問的問題?
1、項目的工作流
2费封、在測試項目過程測試流程
3焕妙、在項目的測試過程用過哪些測試技術(shù)
7、用戶的權(quán)限怎么測
1弓摘、用戶和用戶組
2焚鹊、用戶單個用戶權(quán)限和用戶組權(quán)限
3、管理員權(quán)限(最高權(quán)限)
8韧献、執(zhí)行測試怎么執(zhí)行的末患、詳細的步驟。
需求評審(產(chǎn)品經(jīng)理) -> 測試計劃(測試leader) -> 編寫測試用例 ->
執(zhí)行測試用例 -> 發(fā)現(xiàn)bug提交到禪道,追蹤bug生命周期 -> 編寫測試報告
9势决、怎么定位bug阻塑?
1、什么是bug
不滿足需求的
(1果复、根據(jù)需求本身陈莽,2、比如我查詢功能(抓包)虽抄,3走搁、只要到后臺日志里面根據(jù)debug信息,提取出對應(yīng)的sql)
存在程序錯誤 (2迈窟、到后臺日志里面:存在 error 級別的錯誤信息)
不符合用戶需求的 (1私植、競品分析(去比對類似產(chǎn)品東西))
第二部:
數(shù)據(jù)庫:
1、比如student
刪除一張表里面是所有內(nèi)容:
delete from student
左聯(lián):
以左表為基準车酣,右表數(shù)據(jù)不存在的時候曲稼,則顯示null
1、數(shù)據(jù)庫湖员,數(shù)據(jù)庫數(shù)據(jù)是存在磁盤里面的
2贫悄、一個數(shù)據(jù)庫實例,有多個數(shù)據(jù)庫娘摔,一個數(shù)據(jù)庫下一張到多張表
3窄坦、數(shù)據(jù)庫有范式,因為是關(guān)系型數(shù)據(jù)庫:
第一范式:一張沒有任何約束凳寺,數(shù)據(jù)可以無限的重復(fù)鸭津。
第二范式:在第一范式的基礎(chǔ)之上,多了一個主鍵約束肠缨。
第三范式:在第二范式的基礎(chǔ)之上逆趋,增加了外鍵的約束。
....
4晒奕、sql語句:
對表數(shù)據(jù)的操作:
1父泳、簡單的sql查詢:
查詢(select):
select a.* from student (as) a where ....? #*:表示當(dāng)前表中的所有字段
select id,name from student (as) as where ...
更新(update):
update? student set age=18 where ....
刪除(delete):
delete from student where .....
因為數(shù)據(jù)是一行一行的刪除般哼,而 * 代表的是字段,所以 delete 后面千萬不要加*惠窄。
增加(insert):
insert into student(字段) values(值)
2蒸眠、對表的操作:
創(chuàng)建表和數(shù)據(jù)庫:
創(chuàng)建/刪除student表:create/drop table student
創(chuàng)建/刪除數(shù)據(jù)庫: create/drop database db1
對表結(jié)構(gòu)的操作:(特殊的關(guān)鍵字,需要加table關(guān)鍵字)
alter table student add column api_pay_no varchar(32) not null unique comment
3杆融、復(fù)雜sql:
1楞卡、嵌套:
course_name="數(shù)學(xué)"
選的課程為數(shù)學(xué)的學(xué)生:
select * from student where course_id in (
select id from course where course_name = "數(shù)學(xué)")
in :表示 條件數(shù)據(jù) 1個到多個
= : 相等于的數(shù)據(jù)只有一個
select * from class where id in (select class_id from student where
course_id in (select id from course where course_name="數(shù)學(xué)"))
2、左聯(lián)脾歇、右聯(lián)蒋腮、內(nèi)聯(lián)
左聯(lián)(left join):
以左表為基準,與右表比較值不相等藕各,右表的數(shù)據(jù)顯示為null
select s.* from student s
left join course c? on s.course_id = c.id
where ....
右聯(lián):(right join)
以右表為基準池摧,與左表比較值不相等,左表的數(shù)據(jù)顯示為null
select s.* from student s
right join? course c on s.course_id = c.id
where ....
內(nèi)聯(lián):((inner) join )
以左表為基準激况,只顯示匹配與右表相等數(shù)據(jù)
select s.* from student s
(inner) join course c on s.course_id = c.id
where ....
3作彤、在sql的查詢中,遵循一個原則: 一切皆表
select * from (
select * from (
select * from student where course_id in (
select id from course where course_name = "數(shù)學(xué)") ) as a
left join (
select s.* from student s
left join course c? on s.course_id = c.id
where .... ) as b on a.id = b.id
where ... ) as a
.....
一個復(fù)雜的sql,有幾大原則:
select 后面的永遠是 字段
from 后面永遠是 表
where 后面的永遠是條件。
4乌逐、分組(group by)
select sum(course) from course group by name having name = "張三"
order by sum(course) desc(asc)
Linux
為什么要學(xué)Linux竭讳?Linux在我們工作當(dāng)中什么時候使用?
Linux在我們公司里面 999.99999999...%應(yīng)用都是部署在Linux浙踢。
Linux 上面服務(wù)都已經(jīng)部署完畢绢慢,我們在排除程序上bug的時候,會去看日志洛波。
1胰舆、搭建環(huán)境:
jdk、Tomcat蹬挤、Apache思瘟、PHP、mysql闻伶、、小游戲
1够话、jdk :? java程序運行環(huán)境
1蓝翰、jdk? /usr/local/java/
2、配置環(huán)境變量? /etc/profile
2女嘲、Tomcat:web應(yīng)用服務(wù)器畜份,可以部署在Linux(.sh),也可以部署在Windows(.bat)欣尼,部署在mac
Tomcat目錄:
- bin 存放執(zhí)行腳本的文件夾 #啟動方式: sh startup.sh 或者 ./startup.sh
- conf 存放程序配置文件 配置Tomcat端口等配置文件
- lib? 存在程序所調(diào)用的jar包
- logs 存放日志信息
- temp 臨時文件夾 存放臨時文件
- webapps 存放我們的應(yīng)用程序
- work? 存放我們程序的進程號
3爆雹、apache(nginx):web服務(wù)器
目錄結(jié)構(gòu):
....
2停蕉、常用命令:
1、創(chuàng)建文件:touch
2钙态、刪除文件:rm(remove)
3慧起、查看文件:cat
4、復(fù)制: cp(copy)
5册倒、創(chuàng)建文件夾: mkdir(make directory)
6蚓挤、剪切或者重命名:mv(move)
7、壓縮解壓縮: tar
8驻子、查看:ls? list
9灿意、編輯: vi/vim
10、查看當(dāng)前路徑:pwd(Print Working Directory)
11崇呵、切換用戶:su? switch user
12缤剧、創(chuàng)建用戶:useradd
13、刪除用戶:userdel
14域慷、創(chuàng)建用戶組: groupadd
15荒辕、刪除用戶組:groupdel
16、查找: find
17芒粹、修改權(quán)限: chmod(change mode)
18兄纺、查看進程: ps? process
19、殺進程: kill
20化漆、查看日志:tail
1估脆、Linux的每個命令,是一個或者多個英文單詞的縮寫座云。
2疙赠、拷貝: cp 文件1? 文件2? cp -r 目錄1? 目錄2
3、殺進程: kill -9 進程號
4朦拖、查看日志: tail -f catalina.out -n 300
查看命令的使用:
tail? --help
man tail
接口測試:
postman
斷言:在程序前加上一個斷言圃阳,當(dāng)程序沒有出錯,則正常往下執(zhí)行璧帝,如果出錯則捍岳,給出異常提示,程序終止睬隶。
http協(xié)議:
http協(xié)議屬于應(yīng)用層協(xié)議锣夹,分為請求和響應(yīng)
請求:請求頭(header)和請求體(body)
響應(yīng):響應(yīng)頭(header)和響應(yīng)體(body)
請求,請求方法:
post苏潜、get...
1银萍、post和get方法:
1、post 請求參數(shù) 放在 body 里面恤左,get的請求的參數(shù) 放在 header里面的贴唇。
2搀绣、post請求參數(shù)的是沒有字數(shù)限制,get請求參數(shù)是有字數(shù)限制的
3戳气、post和get向服務(wù)器發(fā)送請求链患,沒有本質(zhì)安全可言,通過抓包都可以抓取到物咳,只不過向服務(wù)器發(fā)送請求的時候
锣险,一個放在手上,一個放在口袋览闰。
2芯肤、http請求的狀態(tài)碼:
1xx: 消息
2XX: 成功? 200
3XX: 重定向 302
4XX: 客戶端錯誤 404 403
5XX: 服務(wù)端錯誤? 500
第三部:
項目理論
一、項目的職責(zé)與分工
產(chǎn)品經(jīng)理: 設(shè)計產(chǎn)品的prd压鉴,整理需求的人員
項目經(jīng)理:管理整個項目的生命周期的崖咨,項目立項,項目在開發(fā)測試過程中協(xié)調(diào)油吭,進度追蹤击蹲,流程優(yōu)化...
開發(fā)人員:
后臺開發(fā):Java開發(fā)(開發(fā)接口)
前臺開發(fā):安卓開發(fā)、ios婉宰、前端開發(fā)...(開發(fā)界面)
測試人員:
web測試(前端頁面)
移動端測試(ios歌豺,安卓)
配置管理人員:
負責(zé)搭建測試環(huán)境、負責(zé)管理jar版本心包、負責(zé)管理線下配置文件类咧、負責(zé)測試環(huán)境工具的穩(wěn)定,負責(zé)管理代碼
運維人員:
負責(zé)把測試環(huán)境的程序包放到生產(chǎn)上蟹腾,負責(zé)生產(chǎn)環(huán)境的穩(wěn)定痕惋。
DBA(數(shù)據(jù)庫管理員):
負責(zé)測試環(huán)境和生產(chǎn)環(huán)境數(shù)據(jù)庫的穩(wěn)定和優(yōu)化
二、項目立項
是由項目經(jīng)理主導(dǎo)娃殖,管理整個項目的生命
為什么要立這個項目值戳,解決的什么問題。
此次立項參與的人員(產(chǎn)品經(jīng)理炉爆、開發(fā)人員堕虹、測試人員)
三、測試流程
1芬首、參加需求評審會
2赴捞、測試leader編寫測試計劃
3、測試用例的設(shè)計和編寫測試用例
4衩辟、評審測試用例
5、執(zhí)行測試用例 -> 發(fā)現(xiàn)bug 提交 到禪道上
6波附、測試leader整理測試報告
7艺晴、上線(校驗?zāi)隳苄r灥?
四昼钻、測試人員
測試人員在我們工作當(dāng)中,需要干些什么封寞?
1然评、熟悉業(yè)務(wù):
1、產(chǎn)品prd
2狈究、熟悉web應(yīng)用服務(wù)器部署
3碗淌、熟悉數(shù)據(jù),數(shù)據(jù)的訪問地址抖锥,跟業(yè)務(wù)相關(guān)的數(shù)據(jù)庫表結(jié)構(gòu)亿眠。
2、制定測試計劃
測試計劃是由測試leader制定磅废,參與編寫測試計劃
3纳像、設(shè)計測試用例
借助 xmind 工具,設(shè)計測試用例
(等價類拯勉、邊界值竟趾、場景法等)
4、編寫測試用例
5宫峦、發(fā)現(xiàn)bug岔帽,提交到禪道
bug的定義:
1、不符合需求
2导绷、程序本身報錯
3犀勒、不符合用戶的使用習(xí)慣。
6诵次、編寫測試報告
測試leader寫的账蓉,測試人員,參與編寫測試報告
1逾一、簡要
2铸本、測試結(jié)果的分析
1、測試用例覆蓋率
2遵堵、測試用例通過率箱玷,失敗率
3、發(fā)現(xiàn)bug嚴重程度的統(tǒng)計陌宿,每個模塊的bug數(shù)的統(tǒng)計锡足。
4、當(dāng)前遺留的bug數(shù)
5壳坪、負責(zé)此項目的測試人員的測試用例
6舶得、上線標準
3、本次測試過程中遇到風(fēng)險
4爽蝴、總結(jié)
7沐批、編寫發(fā)布單
8纫骑、上線發(fā)布的流程