軟件測(cè)試面試題匯總(一)

1.Java中==和equal有什么區(qū)別

==比較的是對(duì)象的地址,也就是是否是同一個(gè)對(duì)象;

equal比較的是對(duì)象的值。

例如:


Integer r1 = newInteger(900);//定義r1整型對(duì)象

Integer r2 = newInteger(900);//定義r2整型對(duì)象

System.out.println(r1==r2);//返回false

System.out.println(r1.equal(r2));//返回true

2.jmeter如何對(duì)登錄進(jìn)行壓測(cè),在一個(gè)時(shí)間段內(nèi)達(dá)到一定數(shù)量的用戶

線程啟動(dòng)了就會(huì)直接發(fā)送測(cè)試請(qǐng)求。

如果要模擬在一瞬間高并發(fā)量測(cè)試的時(shí)候,需要調(diào)高線程數(shù)量,這很耗測(cè)試機(jī)器的性能,往往無(wú)法支持較大的并發(fā)數(shù),無(wú)法控制每次測(cè)試的瞬間并發(fā)量。

解決:使用集合點(diǎn);

作用:阻塞線程,直到指定的線程數(shù)量到達(dá)后,再一起釋放,可以瞬間產(chǎn)生很大的壓力。

詳細(xì)操作可參見:Jmeter使用集合點(diǎn),模擬達(dá)到指定的線程數(shù)后高并發(fā)測(cè)試

3.spring的Aop原理,具體使用

就是將那些與業(yè)務(wù)無(wú)關(guān),卻為業(yè)務(wù)模塊所共同調(diào)用的邏輯或責(zé)任封裝起來(lái),便于減少系統(tǒng)的重復(fù)代碼,降低模塊間的耦合度,并有利于未來(lái)的可操作性和可維護(hù)性。

AOP把軟件系統(tǒng)分為兩個(gè)部分:核心關(guān)注點(diǎn)和橫切關(guān)注點(diǎn)。業(yè)務(wù)處理的主要流程是核心關(guān)注點(diǎn),與之關(guān)系不大的部分是橫切關(guān)注點(diǎn)。橫切關(guān)注點(diǎn)的一個(gè)特點(diǎn)是,他們經(jīng)常發(fā)生在核心關(guān)注點(diǎn)的多處,而各處都基本相似。比如權(quán)限認(rèn)證、日志、事務(wù)處理。Aop 的作用在于分離系統(tǒng)中的各種關(guān)注點(diǎn),將核心關(guān)注點(diǎn)和橫切關(guān)注點(diǎn)分離開來(lái)。

AOP用來(lái)封裝橫切關(guān)注點(diǎn),具體可以在下面的場(chǎng)景中使用:

Authentication 權(quán)限

Caching 緩存

Context passing 內(nèi)容傳遞

Error handling 錯(cuò)誤處理

Lazy loading 懶加載

Debugging  調(diào)試

logging, tracing, profiling and monitoring 記錄跟蹤 優(yōu)化 校準(zhǔn)

Performance optimization 性能優(yōu)化

Persistence  持久化

Resource pooling 資源池

Synchronization 同步

Transactions 事務(wù)

可參考:https://segmentfault.com/a/1190000009165134

4.get和post的區(qū)別

相同點(diǎn)

都是向服務(wù)器發(fā)送請(qǐng)求:Get是向服務(wù)器發(fā)送索取數(shù)據(jù)的一種請(qǐng)求,而Post是向服務(wù)器提交數(shù)據(jù)的一種請(qǐng)求

不同點(diǎn)

(1)、請(qǐng)求的數(shù)據(jù)

GET請(qǐng)求,請(qǐng)求的數(shù)據(jù)會(huì)附加在URL之后,以?分割URL和傳輸數(shù)據(jù),多個(gè)參數(shù)用&連接。URL的編碼格式采用的是ASCII編碼,而不是uniclde,即是說所有的非ASCII字符都要編碼之后再傳輸。

POST請(qǐng)求:POST請(qǐng)求會(huì)把請(qǐng)求的數(shù)據(jù)放置在HTTP請(qǐng)求包的包體中。上面的item=bandsaw就是實(shí)際的傳輸數(shù)據(jù)。

因此,GET請(qǐng)求的數(shù)據(jù)會(huì)暴露在地址欄中,而POST請(qǐng)求則不會(huì)。

(2)、用途

GET用于從服務(wù)器端獲取數(shù)據(jù),包括靜態(tài)資源(HTML|JS|CSS|Image等等)、動(dòng)態(tài)數(shù)據(jù)展示(列表數(shù)據(jù)、詳情數(shù)據(jù)等等)。

POST用于向服務(wù)器提交數(shù)據(jù),比如增刪改數(shù)據(jù),提交一個(gè)表單新建一個(gè)用戶、或修改一個(gè)用戶等。

(3)、緩存

GET時(shí)默認(rèn)可以復(fù)用前面的請(qǐng)求數(shù)據(jù)作為緩存結(jié)果返回,此時(shí)以完整的URL作為緩存數(shù)據(jù)的KEY。所以有時(shí)候?yàn)榱藦?qiáng)制每次請(qǐng)求都是新數(shù)據(jù),可以在URL后面加上一個(gè)隨機(jī)參數(shù)Math.random或時(shí)間戳new Date().getTime()、或版本號(hào),比如abc.com?a=1&rnd=0.123987之類的。這也是目前一些靜態(tài)資源后面加一個(gè)很長(zhǎng)的版本號(hào)的原因,jquery-min.js?v=13877770表示一個(gè)版本,當(dāng)頁(yè)面引用jquery-min.js?v=13877771時(shí)瀏覽器必然會(huì)重新去服務(wù)器請(qǐng)求這個(gè)資源。jQuery.ajax方法,如果cache=false,則會(huì)在GET請(qǐng)求參數(shù)中附加”_={timestamp}”來(lái)禁用緩存。

POST一般則不會(huì)被這些緩存因素影響。

(4)、安全性

默認(rèn)對(duì)于nginx的access log,會(huì)自動(dòng)記錄get或post的完整URL,包括其中帶的參數(shù)。

對(duì)于POST來(lái)說,請(qǐng)求的報(bào)文卻不會(huì)被記錄,這些對(duì)于敏感數(shù)據(jù)來(lái)說,POST更安全一些。

(5)、Url長(zhǎng)度限制

GET是通過URL提交數(shù)據(jù),因此GET可提交的數(shù)據(jù)量就跟URL所能達(dá)到的最大長(zhǎng)度有直接關(guān)系。

HTTP協(xié)議本身對(duì)GET和POST都沒有對(duì)長(zhǎng)度的限制,而對(duì)于URL長(zhǎng)度上的限制是瀏覽器受服務(wù)器的配置限制或者內(nèi)存的大小。

(6)、冪等

GET冪等,POST不冪等

冪等是指同一個(gè)請(qǐng)求方法執(zhí)行多次和僅執(zhí)行一次的效果完全相同。

引入冪等主要是為了處理同一個(gè)請(qǐng)求重復(fù)發(fā)送的情況,比如在請(qǐng)求響應(yīng)前失去連接,如果方法是冪等的,就可以放心地重發(fā)一次請(qǐng)求。這也是瀏覽器在后退/刷新時(shí)遇到POST會(huì)給用戶提示的原因:POST語(yǔ)義不是冪等的,重復(fù)請(qǐng)求可能會(huì)帶來(lái)意想不到的后果。

比如在微博這個(gè)場(chǎng)景里,GET的語(yǔ)義會(huì)被用在「看看我的Timeline上最新的20條微博」這樣的場(chǎng)景,而POST的語(yǔ)義會(huì)被用在「發(fā)微博、評(píng)論、點(diǎn)贊」這樣的場(chǎng)景中。

5.jmeter壓力測(cè)試注冊(cè),參數(shù)化如何保證id不重復(fù)

1).使用UUID,JMeter函數(shù)助手給大家提供了一個(gè)UUID()函數(shù),UUID來(lái)生成一個(gè)附機(jī)字符串。


import java.util.UUID;

UUID uuid1 = UUID.randomUUID(); //獲取UID的值

vars.put("order_id",(uuid1.toString()).toUpperCase().replaceAll("-",""));  

 //去掉UUID的“-”,再賦值給order_id  運(yùn)行獲取的參數(shù)就是:3F2504E04F8911D39A0C0305E82C3301

2)、用__RandonString()與__time()組合

只要TPS足夠大還是可能會(huì)有重復(fù)現(xiàn)象的

3)、使用多個(gè)函數(shù)組合:{time}+{group}+{thread number}+{迭代計(jì)數(shù)}

group獲?。篔Meter的線程組可以通過ctx來(lái)獲取,線程組是類似這樣的格式:線程組 1-1

使用BeanShell Sampler,${__BeanShell(((ctx.getThread().getThreadName().toString()).split(" ")[1]).split("-")[0],group)},并把線程組的Id放到了group中

image

thread number獲?。嚎梢酝ㄟ^__threadNum獲取

time獲?。和ㄟ^__time(hhmmss,)獲取,可以指定輸出格式,這里只輸出時(shí)分秒

迭代計(jì)數(shù)器獲?。和ㄟ^__counter獲取

合在一起:${__time(hhmmss,)}${group}${__threadNum}${__counter(,)}

6.Oracle中varchar2的最大長(zhǎng)度

最大長(zhǎng)度為4000

7.Linux中強(qiáng)制殺死進(jìn)程的命令

首先,用ps查看進(jìn)程:$ ps -ef 或者:$ ps -aux

拿到進(jìn)程的PID后,執(zhí)行:$ kill -s 9 1827

其中-s 9 制定了傳遞給進(jìn)程的信號(hào)是9,即強(qiáng)制、盡快終止進(jìn)程。

1827則是上面ps查到的某個(gè)進(jìn)程的PID。

8.棧的特點(diǎn)

棧是一種數(shù)據(jù)結(jié)構(gòu),它按照先進(jìn)后出的原則存儲(chǔ)數(shù)據(jù),先進(jìn)入的數(shù)據(jù)被壓入棧底,最后的數(shù)據(jù)在棧頂,需要讀數(shù)據(jù)的時(shí)候從棧頂開始彈出數(shù)據(jù)(最后一個(gè)數(shù)據(jù)被第一個(gè)讀出來(lái))。

1),先進(jìn)后出 (好比高高的蒸籠一層一層的,放在最下面的蒸籠的包子最后才能拿出來(lái)),比如進(jìn)123,出321

2),具有記憶功能,棧的特點(diǎn)是先進(jìn)棧的后出棧,后進(jìn)棧的先出棧,所以你對(duì)一個(gè)棧進(jìn)行出棧操作,出來(lái)的元素肯定是你最后存入棧中的元素,所以棧有記憶功能。

3),對(duì)棧的插入與刪除操作中,不需要改變棧底指針。

4),??梢允褂庙樞虼鎯?chǔ)也可以使用鏈?zhǔn)酱鎯?chǔ),棧也是線性表,因此線性表的存儲(chǔ)結(jié)構(gòu)對(duì)棧也適用

線性表可以鏈?zhǔn)酱鎯?chǔ)。

9.Jenkins發(fā)布版本前,需要設(shè)置哪些參數(shù)

安裝必要的插件:如搜索下載以下插件(Maven Integration plugin 、Publish Over SSH、Deploy to container Plugin)

全局工具配置,配置 jdk、git、maven、tomcat

配置服務(wù)器參數(shù)及git相關(guān)參數(shù)。

image

構(gòu)建項(xiàng)目,點(diǎn)擊新建,然后構(gòu)建一個(gè)maven項(xiàng)目.

10.app自動(dòng)化,啟動(dòng)driver需要設(shè)置哪些參數(shù)

DesiredCapabilities capabilities = new DesiredCapabilities();

capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, "Selendroid");

capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");

capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "2.3");

capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator");

capabilities.setCapability(MobileCapabilityType.APP, myApp);

capabilities.setCapability(MobileCapabilityType.APP_PACKAGE: "com.mycompany.package");

capabilities.setCapability(MobileCapabilityType.APP_ACTIVITY: ".MainActivity");

|platformName|你要測(cè)試的手機(jī)操作系統(tǒng)|iOS, Android, 或 FirefoxOS|

|platformVersion|手機(jī)操作系統(tǒng)版本|例如: 7.1, 4.4|

|appPackage| 你想運(yùn)行的Android應(yīng)用的包名|比如com.example.android.myApp, com.android.settings|

|appActivity| 你要從你的應(yīng)用包中啟動(dòng)的 Android Activity 名稱。它通常需要在前面添加 . (如:使用.MainActivity 而不是 MainActivity) |MainActivity, .Settings|

|app|.ipa or .apk文件所在的本地絕對(duì)路徑或者遠(yuǎn)程路徑,也可以是一個(gè)包括兩者之一的.zip。 Appium會(huì)先嘗試安裝路徑對(duì)應(yīng)的應(yīng)用在適當(dāng)?shù)恼鏅C(jī)或模擬器上。針對(duì)Android系統(tǒng),如果你指定app-packageapp-activity(具體見下面)的話,那么就可以不指定app。 會(huì)與 browserName 沖突 |比如/abs/path/to/my.apkhttp://myapp.com/app.ipa|

11.登錄功能,有哪些方式可以保證安全性
12.sql 計(jì)算每個(gè)員工的總分并排名
13.已上線的項(xiàng)目,如何監(jiān)控

使用一些開源的工具

14.hashmap,hashtree,hashlink的區(qū)別

Map map = new TreeMap();

//TreeMap取出來(lái)的是排序后的鍵值對(duì)。但如果您要按自然順序或自定義順序遍歷鍵,那么TreeMap會(huì)更好

Map map = new LinkedHashMap();

//LinkedHashMap 是HashMap的一個(gè)子類,如果需要輸出的順序和輸入的相同,那么用LinkedHashMap可以實(shí)現(xiàn),它還可以按讀取順序來(lái)排列.

Map map = new HashMap();

//HashMap里面存入的鍵值對(duì)在取出的時(shí)候是隨機(jī)的,它根據(jù)鍵的HashCode值存儲(chǔ)數(shù)據(jù),根據(jù)鍵可以直接獲取它的值,具有很快的訪問速度。在Map 中插入、刪除和定位元素,HashMap 是最好的選擇。

15.UI自動(dòng)化主要適用于哪些情況

1)、操作過程完全機(jī)械的,即測(cè)試人員不必用腦子。

2)、每次的操作行為經(jīng)常是重復(fù)上一次的動(dòng)作。

3)、經(jīng)常要進(jìn)行的測(cè)試活動(dòng)。

4)、該場(chǎng)景完全幾乎不會(huì)或者極少會(huì)改動(dòng)。

16.使用selenium自動(dòng)化,用什么工具管理測(cè)試用例

testng

17.接口測(cè)試用例場(chǎng)景如何設(shè)計(jì)

接口測(cè)試用例場(chǎng)景

18.給一個(gè)網(wǎng)站設(shè)計(jì)性能測(cè)試方案

獲取用戶數(shù)信息、獲取業(yè)務(wù)數(shù)據(jù)量、場(chǎng)景業(yè)務(wù)的調(diào)查、與性能指標(biāo)指標(biāo)相關(guān)的調(diào)查

可參考:https://www.cnblogs.com/mxqh2016/p/6385860.html

19.鎖的機(jī)制,如何避免并發(fā)

多線程并發(fā)解決方案(原子變量的使用)

20.悲觀鎖,樂觀鎖的使用有哪些?有何區(qū)別

Java 中的悲觀鎖和樂觀鎖的實(shí)現(xiàn)

21.線程池的安全

線程的三種實(shí)現(xiàn)方式:

1)、 Thread類,可extends

2)、 Runable接口,需要實(shí)現(xiàn)run方法,通過new Thread類調(diào)用

3)、 callable接口,需要實(shí)現(xiàn)call方法,通過 FutureTask 調(diào)用,并獲取返回值,可結(jié)合線程池使用。

四類線程池

newCachedThreadPool

創(chuàng)建一個(gè)可緩存線程池,如果線程池長(zhǎng)度超過處理需要,可靈活回收空閑線程,若無(wú)可回收,則新建線程。

這種類型的線程池特點(diǎn)是:

工作線程的創(chuàng)建數(shù)量幾乎沒有限制(其實(shí)也有限制的,數(shù)目為Interger. MAX_VALUE), 這樣可靈活的往線程池中添加線程。

如果長(zhǎng)時(shí)間沒有往線程池中提交任務(wù),即如果工作線程空閑了指定的時(shí)間(默認(rèn)為1分鐘),則該工作線程將自動(dòng)終止。終止后,如果你又提交了新的任務(wù),則線程池重新創(chuàng)建一個(gè)工作線程。

在使用CachedThreadPool時(shí),一定要注意控制任務(wù)的數(shù)量,否則,由于大量線程同時(shí)運(yùn)行,很有會(huì)造成系統(tǒng)癱瘓。

newFixedThreadPool

創(chuàng)建一個(gè)指定工作線程數(shù)量的線程池。每當(dāng)提交一個(gè)任務(wù)就創(chuàng)建一個(gè)工作線程,如果工作線程數(shù)量達(dá)到線程池初始的最大數(shù),則將提交的任務(wù)存入到池隊(duì)列中。

FixedThreadPool是一個(gè)典型且優(yōu)秀的線程池,它具有線程池提高程序效率和節(jié)省創(chuàng)建線程時(shí)所耗的開銷的優(yōu)點(diǎn)。但是,在線程池空閑時(shí),即線程池中沒有可運(yùn)行任務(wù)時(shí),它不會(huì)釋放工作線程,還會(huì)占用一定的系統(tǒng)資源。

newSingleThreadExecutor

創(chuàng)建一個(gè)單線程化的Executor,即只創(chuàng)建唯一的工作者線程來(lái)執(zhí)行任務(wù),它只會(huì)用唯一的工作線程來(lái)執(zhí)行任務(wù),保證所有任務(wù)按照指定順序(FIFO, LIFO, 優(yōu)先級(jí))執(zhí)行。如果這個(gè)線程異常結(jié)束,會(huì)有另一個(gè)取代它,保證順序執(zhí)行。單工作線程最大的特點(diǎn)是可保證順序地執(zhí)行各個(gè)任務(wù),并且在任意給定的時(shí)間不會(huì)有多個(gè)線程是活動(dòng)的。

newScheduleThreadPool

創(chuàng)建一個(gè)定長(zhǎng)的線程池,而且支持定時(shí)的以及周期性的任務(wù)執(zhí)行,支持定時(shí)及周期性任務(wù)執(zhí)行。

21.selenium具體如何啟動(dòng)webdriver

以firefox為例。

當(dāng)測(cè)試腳本啟動(dòng)firefox的時(shí)候,selenium-webdriver 會(huì)首先在新線程中啟動(dòng)firefox瀏覽器。如果測(cè)試腳本指定了firefox的profile,那么就以該profile啟動(dòng),否則的話就新啟1個(gè)profile,并啟動(dòng)firefox;

firefox一般是以-no-remote的方法啟動(dòng),啟動(dòng)后selenium-webdriver會(huì)將firefox綁定到特定的端口,綁定完成后該firefox實(shí)例便作為webdriver的remote server存在;

客戶端(也就是測(cè)試腳本)創(chuàng)建1個(gè)session,在該session中通過http請(qǐng)求向remote server發(fā)送restful的請(qǐng)求,remote server解析請(qǐng)求,完成相應(yīng)操作并返回response;

客戶端接受response,并分析其返回值以決定是轉(zhuǎn)到第3步還是結(jié)束腳本;

image
22.selenium自動(dòng)化框架設(shè)計(jì)模式

selenium目前比較流行的設(shè)計(jì)模式就是page object,那么到底什么是page object呢,簡(jiǎn)單來(lái)說,就是把頁(yè)面作為對(duì)象,在使用中傳遞頁(yè)面對(duì)象,來(lái)使用頁(yè)面對(duì)象中相應(yīng)的成員或者方法,能更好的提現(xiàn)java的面向?qū)ο蠛头庋b特性。而使用時(shí)間長(zhǎng)了會(huì)發(fā)現(xiàn)該模式也存在一點(diǎn)問題,那就是元素每次都要獲取,并且獲取元素與頁(yè)面方法不分離,增加代碼冗余度,用過springMVC框架的人都知道,注解方式的開發(fā)會(huì)大大增加開發(fā)效率,使頁(yè)面變得整潔。

什么是pageFactory 設(shè)計(jì)模式呢?

準(zhǔn)確來(lái)說就是在page object模式基礎(chǔ)上更好的利用了面向?qū)ο蟮乃季S,將獲取元素與操作頁(yè)面的方法進(jìn)行分離,以前獲取元素要findelementbyid等等,現(xiàn)在只要一個(gè)注解就可以搞定,并且再次跑自動(dòng)化回歸測(cè)試時(shí)候,代碼有獲取緩存的特性,所以會(huì)比第一次跑的快,只要id,name不變。

23.安卓和iOS有什么區(qū)別

1.android是google公司做的手機(jī)系統(tǒng),ios是蘋果公司做的手機(jī)系統(tǒng)。

2.android手機(jī)系統(tǒng)的手機(jī)很多廠家公司在做如HTC,三星,中興等等。。。 ios只有蘋果公司的手機(jī)和數(shù)碼產(chǎn)品才會(huì)是ios的手機(jī)系統(tǒng)。

3.android手機(jī)系統(tǒng)和ios軟件開發(fā)工具不同,平臺(tái)不同。軟件也不用,所以兩個(gè)兩個(gè)平臺(tái)的軟件不能通用,但是好的軟件都會(huì)有兩個(gè)系統(tǒng)版本,如QQ 有IOS版也是就iphoneQQ,和android版QQ。

4.安卓手機(jī)完全開源,任何軟件開發(fā)商或者個(gè)人都能開發(fā)安卓的軟件。蘋果IOS完全封源開發(fā)

正是由于開源和各個(gè)品牌手機(jī)硬件差異極大,導(dǎo)致安卓手機(jī)的系統(tǒng)體驗(yàn)各有差異,軟件兼容性也不如IOS。所以安卓手機(jī)總體的系統(tǒng)體驗(yàn),流暢度,軟件兼容性,明顯不如系統(tǒng)和軟件開發(fā)都對(duì)硬件有極其針對(duì)性的IOS,軟件數(shù)量也不如IOS,游戲數(shù)量也不如IOS,而且很多高質(zhì)量軟件,特別是游戲都是先出現(xiàn)在IOS上。

.安卓系統(tǒng)的軟件幾乎都是免費(fèi),而IOS的軟件和游戲,好的基本都付費(fèi),當(dāng)然蘋果可以越獄,越獄后也是免費(fèi)使用。

安卓手機(jī)支持FLASH,可以玩QQ農(nóng)場(chǎng),不過需要高端安卓機(jī)2.2以上系統(tǒng)才支持。IOS不支持FLASH,只支持HTML5,所以蘋果上不能看FLASH,甚至蘋果有時(shí)候連HTML5的視頻兼容性也不好。

安卓手機(jī)使用起來(lái)上手快,下載歌曲電影等直接放到手機(jī)里就能看,IOS則需要同步到手機(jī)中,不過越獄后也能直接放到手機(jī)里看。

24.使用jmeter如何進(jìn)行混合場(chǎng)景的壓測(cè)
25.項(xiàng)目周期短,迭代頻繁,使用什么開發(fā)流程比較敏捷

什么是Sprint?

Sprint是短距離賽跑的意思,這里面指的是一次迭代,而一次迭代的周期是1個(gè)月時(shí)間(即4個(gè)星期),也就是我們要把一次迭代的開發(fā)內(nèi)容以最快的速度完成它,這個(gè)過程我們稱它為Sprint。

如何進(jìn)行Scrum開發(fā)?

1、我們首先需要確定一個(gè)Product Backlog(按優(yōu)先順序排列的一個(gè)產(chǎn)品需求列表),這個(gè)是由Product Owner 負(fù)責(zé)的;

2、Scrum Team根據(jù)Product Backlog列表,做工作量的預(yù)估和安排;

3、有了Product Backlog列表,我們需要通過 Sprint Planning Meeting(Sprint計(jì)劃會(huì)議) 來(lái)從中挑選出一個(gè)Story作為本次迭代完成的目標(biāo),這個(gè)目標(biāo)的時(shí)間周期是1~4個(gè)星期,然后把這個(gè)Story進(jìn)行細(xì)化,形成一個(gè)Sprint Backlog;

4、Sprint Backlog是由Scrum Team去完成的,每個(gè)成員根據(jù)Sprint Backlog再細(xì)化成更小的任務(wù)(細(xì)到每個(gè)任務(wù)的工作量在2天內(nèi)能完成);

5、在Scrum Team完成計(jì)劃會(huì)議上選出的Sprint Backlog過程中,需要進(jìn)行 Daily Scrum Meeting(每日站立會(huì)議),每次會(huì)議控制在15分鐘左右,每個(gè)人都必須發(fā)言,并且要向所有成員當(dāng)面匯報(bào)你昨天完成了什么,并且向所有成員承諾你今天要完成什么,同時(shí)遇到不能解決的問題也可以提出,每個(gè)人回答完成后,要走到黑板前更新自己的 Sprint burn down(Sprint燃盡圖);

6、做到每日集成,也就是每天都要有一個(gè)可以成功編譯、并且可以演示的版本;很多人可能還沒有用過自動(dòng)化的每日集成,其實(shí)TFS就有這個(gè)功能,它可以支持每次有成員進(jìn)行簽入操作的時(shí)候,在服務(wù)器上自動(dòng)獲取最新版本,然后在服務(wù)器中編譯,如果通過則馬上再執(zhí)行單元測(cè)試代碼,如果也全部通過,則將該版本發(fā)布,這時(shí)一次正式的簽入操作才保存到TFS中,中間有任何失敗,都會(huì)用郵件通知項(xiàng)目管理人員;

7、當(dāng)一個(gè)Story完成,也就是Sprint Backlog被完成,也就表示一次Sprint完成,這時(shí),我們要進(jìn)行 Srpint Review Meeting(演示會(huì)議),也稱為評(píng)審會(huì)議,產(chǎn)品負(fù)責(zé)人和客戶都要參加(最好本公司老板也參加),每一個(gè)Scrum Team的成員都要向他們演示自己完成的軟件產(chǎn)品(這個(gè)會(huì)議非常重要,一定不能取消);

8、最后就是 Sprint Retrospective Meeting(回顧會(huì)議),也稱為總結(jié)會(huì)議,以輪流發(fā)言方式進(jìn)行,每個(gè)人都要發(fā)言,總結(jié)并討論改進(jìn)的地方,放入下一輪Sprint的產(chǎn)品需求中;

image
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 注:此文章來(lái)源:Job_Yang 的簡(jiǎn)書 1. Object-c的類可以多重繼承么?可以實(shí)現(xiàn)多個(gè)接口么?Categ...
    廣益散人閱讀 1,426評(píng)論 0 13
  • 之前看了很多面試題,感覺要不是不夠就是過于冗余,于是我將網(wǎng)上的一些面試題進(jìn)行了刪減和重排,現(xiàn)在分享給大家。(題...
    Job_Yang閱讀 12,211評(píng)論 12 143
  • 1.weak和assign區(qū)別 修飾變量類型的區(qū)別: weak 只可以修飾對(duì)象。如果修飾基本數(shù)據(jù)類型,編譯器會(huì)報(bào)錯(cuò)...
    coderjon閱讀 1,128評(píng)論 0 1
  • 昨天是二月二,龍?zhí)ь^。晚上下班的時(shí)候接到奶奶的電話,于是看了看公交車的車頂,算是象征性地抬了一下頭。最近有些忙,忙...
    老瑯閱讀 125評(píng)論 0 0
  • emmmm,真的很簡(jiǎn)單,一切交給電飯鍋就行了,簡(jiǎn)單到蘑菇都不知道怎么寫這個(gè)菜譜_(:з」∠)_ ...
    蘑菇君dh閱讀 399評(píng)論 1 0

友情鏈接更多精彩內(nèi)容