全國計(jì)算機(jī)等級(jí)考試四級(jí)軟件測(cè)試工程師筆試樣卷

字號(hào):


    選擇題(每小題2分,共50分)
    下列各題A)、B)、C)、D)四個(gè)選項(xiàng)中,只有一個(gè)選項(xiàng)是正確的。請(qǐng)將正確選項(xiàng)填涂在答題卡相應(yīng)位置上,答在試卷上不得分。
     
    1)堅(jiān)持在軟件開發(fā)的各個(gè)階段實(shí)施下列哪種質(zhì)量保證措施,才能在開發(fā)過程中盡早發(fā)現(xiàn)和預(yù)防錯(cuò)誤,把出現(xiàn)的錯(cuò)誤克服在早期
    A)技術(shù)評(píng)審         B)程序測(cè)試         C)文檔審查         D)管理評(píng)審
     
    2)經(jīng)驗(yàn)表明,在程序測(cè)試中,某模塊與其他模塊相比,若該模塊已發(fā)現(xiàn)并改正的錯(cuò)誤數(shù)目較多,則該模塊中殘存的錯(cuò)誤數(shù)目與其他模塊相比,通常應(yīng)該
        A)較少             B)較多             C)相似            D)不確定
     
    3)對(duì)程序中已發(fā)現(xiàn)的錯(cuò)誤進(jìn)行錯(cuò)誤定位和確定出錯(cuò)性質(zhì),并改正這些錯(cuò)誤,同時(shí)修改相關(guān)的文檔,稱為
        A)測(cè)試             B)調(diào)試             C)錯(cuò)誤分析         D)驗(yàn)證
     
    4)同行評(píng)審,有時(shí)稱為同級(jí)評(píng)審,是一種通過作者的同行來確認(rèn)缺陷和需要變更區(qū)域的檢查方法。它主要分為管理評(píng)審、技術(shù)評(píng)審、文檔評(píng)審和
        A)誤差評(píng)審         B)項(xiàng)目評(píng)審         C)過程評(píng)審         D)組織體系評(píng)審
     
    5)數(shù)據(jù)流覆蓋關(guān)注的是程序中某個(gè)變量從其聲明、賦值到引用的變化情況,它是下列哪一種覆蓋的變種
        A)語句覆蓋         B)控制覆蓋         C)分支覆蓋         D)路徑覆蓋
     
    6)程序的流程圖如下圖所示,采用路徑覆蓋法進(jìn)行測(cè)試,則至少需要幾個(gè)測(cè)試用例可以覆蓋所有可能的路徑
    
        A5                B6                C7                D8
    


    
    7)如果一個(gè)判定中的復(fù)合條件表達(dá)式為(A > 1orB <= 3),則為了達(dá)到100%的條件覆蓋率,至少需要設(shè)計(jì)多少個(gè)測(cè)試用例
    A1                B2              C3                D4
     
    8)自底向上單元測(cè)試的策略是首先對(duì)模塊調(diào)用圖上的哪一層模塊進(jìn)行測(cè)試
    A)底層           B)下一層         C)高層           D)上一層
     
    9)基本路徑測(cè)試滿足
    A)語句覆蓋         B)路徑覆蓋       C)分支覆蓋         D)條件覆蓋
     
    10)集成測(cè)試對(duì)系統(tǒng)內(nèi)部的交互以及集成后系統(tǒng)功能檢驗(yàn)了何種質(zhì)量特性
    A)正確性           B)可靠性         C)可使用性         D)可維護(hù)性
     
    11)在軟件性能測(cè)試中,下列指標(biāo)中哪個(gè)不是軟件性能的指標(biāo)
    A)響應(yīng)時(shí)間         B)吞吐量         C)資源利用率       D)并發(fā)進(jìn)程數(shù)
     
    12)下列關(guān)于軟件性能測(cè)試的說法中,正確的是
    A)性能測(cè)試的目的不是為了發(fā)現(xiàn)軟件缺陷
    B)壓力測(cè)試與負(fù)載測(cè)試的目的都是為了探測(cè)軟件在滿足預(yù)定性能需求的情況下所能負(fù)擔(dān)的大壓力
    C)性能測(cè)試通常要對(duì)測(cè)試結(jié)果進(jìn)行分析才能獲得測(cè)試結(jié)論
    D)在性能下降曲線上,大建議用戶數(shù)通常處于性能輕微下降區(qū)與性能急劇下降區(qū)的交界處
     
    13)下列關(guān)于軟件可靠性測(cè)試的說法中,錯(cuò)誤的是
    A)發(fā)現(xiàn)軟件缺陷是軟件可靠性測(cè)試的主要目的
    B)軟件可靠性測(cè)試通常用于有可靠性要求的軟件
    C)在軟件可靠性測(cè)試中,執(zhí)行的測(cè)試用例必須完全符合所定義的軟件運(yùn)行剖面
    D)可靠性測(cè)試通常要對(duì)測(cè)試結(jié)果進(jìn)行分析才能獲得測(cè)試結(jié)論
     
    14)下列關(guān)于面向?qū)ο筌浖y(cè)試的說法中,正確的是
    A)在測(cè)試一個(gè)類時(shí),只要對(duì)該類的每個(gè)成員方法都進(jìn)行充分的測(cè)試就完成了對(duì)該類充分的測(cè)試
    B)在存在多態(tài)的情況下,為了達(dá)到較高的測(cè)試充分性,應(yīng)對(duì)所有可能的綁定都進(jìn)行測(cè)試
    C)假設(shè)類B是類A的子類,如果類A已進(jìn)行了充分的測(cè)試,在測(cè)試類B時(shí)不必測(cè)試任何類B繼承類A的成員方法
    D)對(duì)于一棵繼承樹上的多個(gè)類,只有處于葉節(jié)點(diǎn)的類需要測(cè)試
    15)下列哪種測(cè)試不屬于面向?qū)ο髥卧獪y(cè)試考慮的范疇
    A)成員方法的測(cè)試                   B)類的測(cè)試
    C)類樹的測(cè)試                       D)多個(gè)相互協(xié)作的類樹的測(cè)試
     
    16)下列關(guān)于面向?qū)ο蠹蓽y(cè)試的說法中,正確的是
    A)大突擊集成是面向?qū)ο蠹蓽y(cè)試常用且有效的方法
    B)自底向上集成和自頂向下集成都需要為集成測(cè)試開發(fā)大量代碼
    C)協(xié)作集成在任何情況下都優(yōu)于自底向上集成和自頂向下集成
    D)高頻集成是以自底向上集成為基礎(chǔ),利用冒煙測(cè)試進(jìn)行的集成測(cè)試
     
    17)在Web應(yīng)用軟件的分層測(cè)試策略中,下列哪個(gè)不是測(cè)試關(guān)注的層次
    A)數(shù)據(jù)層           B)業(yè)務(wù)層       C)服務(wù)層           D)表示層
     
    18)下列關(guān)于Web應(yīng)用軟件測(cè)試的說法中,正確的是
    ACookie測(cè)試是Web應(yīng)用軟件功能測(cè)試的重要內(nèi)容
    B)對(duì)于沒有使用數(shù)據(jù)庫的Web應(yīng)用軟件,不需要進(jìn)行性能測(cè)試
    C)鏈接測(cè)試是Web應(yīng)用軟件易用性測(cè)試的重要內(nèi)容
    DWeb應(yīng)用軟件安全性測(cè)試僅關(guān)注Web應(yīng)用軟件是否能夠防御網(wǎng)絡(luò)攻擊
     
    19)下列哪一項(xiàng)不屬于軟件功能易用性測(cè)試關(guān)注的內(nèi)容
    A)軟件界面的色彩是否協(xié)調(diào)
    B)軟件是否能主動(dòng)禁止用戶可能進(jìn)行的非法操作
    C)軟件是否允許用戶針對(duì)自己的使用習(xí)慣進(jìn)行定制
    D)軟件是否能幫助用戶減少輸入中的重復(fù)勞動(dòng)
     
    20)下列關(guān)于極限測(cè)試的說法中,正確的是
    A)極限測(cè)試是一種新型的測(cè)試方法,傳統(tǒng)的測(cè)試技術(shù)均不適用于極限測(cè)試
    B)極限測(cè)試中所有的測(cè)試均是由編碼人員完成的
    C)與傳統(tǒng)的軟件測(cè)試相比,極限測(cè)試是一種更嚴(yán)格的測(cè)試
    D)極限測(cè)試需要頻繁地進(jìn)行單元測(cè)試
     
    21)下列有關(guān)測(cè)試過程V模型的說法中,正確的是
        A)驗(yàn)收測(cè)試應(yīng)確定程序的執(zhí)行是否滿足軟件設(shè)計(jì)的要求
        B)系統(tǒng)測(cè)試應(yīng)確定系統(tǒng)功能和性能的質(zhì)量特性是否達(dá)到系統(tǒng)要求的指標(biāo)
        C)單元測(cè)試和集成測(cè)試應(yīng)確定軟件的實(shí)現(xiàn)是否滿足用戶需要或合同的要求
        D)集成測(cè)試在編碼結(jié)束前就可以開始
     
    22)下列哪項(xiàng)工作與軟件缺陷管理和追蹤無關(guān)
        A)對(duì)缺陷應(yīng)該包含的信息條目、狀態(tài)分類等進(jìn)行完善設(shè)計(jì)
        B)通過軟件系統(tǒng)自動(dòng)發(fā)送通知給相關(guān)開發(fā)和測(cè)試人員,使缺陷得到及時(shí)處理
        C)對(duì)測(cè)試用例的執(zhí)行結(jié)果進(jìn)行記錄和追蹤
        D)通過一些歷史曲線和統(tǒng)計(jì)曲線來分析和預(yù)測(cè)未來的缺陷發(fā)現(xiàn)情況
     
    23)下列有關(guān)軟件問題生命周期模型狀態(tài)定義的說法中,錯(cuò)誤的是
        A)“新建”表示測(cè)試中發(fā)現(xiàn)并報(bào)告了新的軟件問題
        B)“打開”表示軟件問題已被確認(rèn)并分配給相關(guān)開發(fā)工程師處理
        C)“關(guān)閉”表示軟件問題已被開發(fā)人員修復(fù)并等待測(cè)試人員驗(yàn)證
        D)“解決”表示軟件問題已被確認(rèn)修復(fù)
     
    24)下列有關(guān)軟件測(cè)試工具的說法中,錯(cuò)誤的是
        A靜態(tài)測(cè)試工具可用于對(duì)軟件需求、結(jié)構(gòu)設(shè)計(jì)、詳細(xì)設(shè)計(jì)和代碼進(jìn)行評(píng)審、走查和審查
        B靜態(tài)測(cè)試工具可對(duì)軟件的復(fù)雜度分析、數(shù)據(jù)流分析、控制流分析和接口分析提供支持
        C)動(dòng)態(tài)測(cè)試工具可用于軟件的覆蓋分析和性能分析
        D)動(dòng)態(tài)測(cè)試工具不包括軟件的仿真測(cè)試和變異測(cè)試
     
    25)計(jì)算機(jī)軟件測(cè)試規(guī)范規(guī)定,軟件測(cè)試的類別可分為:單元測(cè)試、集成測(cè)試以及
        A)系統(tǒng)測(cè)試                         B)驗(yàn)收測(cè)試
        C)系統(tǒng)測(cè)試和驗(yàn)收測(cè)試               D)配置項(xiàng)測(cè)試、系統(tǒng)測(cè)試和驗(yàn)收測(cè)試
     
    論述題(3題,共50分)
    論述題答題必須用藍(lán)、黑色鋼筆或圓珠筆寫在論述題答題紙的相應(yīng)位置上。
    論述題1:以下是學(xué)生選課系統(tǒng)中“學(xué)生查詢成績”交互行為的描述,請(qǐng)按要求回答問題(20分)
    交互開始時(shí)終端上顯示首頁,用戶選擇“查詢”請(qǐng)求后,顯示“請(qǐng)輸入學(xué)號(hào)”。
    在用戶輸入學(xué)號(hào)后,系統(tǒng)核對(duì)學(xué)生學(xué)號(hào):若輸入的學(xué)號(hào)不正確,則顯示“輸入的學(xué)號(hào)不正確”,此次查詢?nèi)∠?,回到首頁;若輸入的學(xué)號(hào)正確,出現(xiàn)“請(qǐng)輸入課程名”。
    一旦輸入課程名,就開始核對(duì)課程名稱:若輸入的課程名不正確,則顯示“輸入的課程名不正確”,此次查詢?nèi)∠氐绞醉?;若輸入的課程名正確,則根據(jù)“學(xué)號(hào)”和“課程名”,查詢學(xué)生成績。
    若查詢學(xué)生成績成功,則顯示查詢到的成績,系統(tǒng)詢問是否繼續(xù)查詢:當(dāng)用戶選擇“繼續(xù)查詢”后回到“請(qǐng)輸入學(xué)號(hào)”;當(dāng)用戶選擇“結(jié)束查詢”后回到首頁。
    若查詢學(xué)生成績失敗,則顯示“查詢失敗”后回到首頁。
    1)請(qǐng)畫出該系統(tǒng)以上交互行為的狀態(tài)圖(應(yīng)滿足功能圖的要求,不可畫成流程圖)。(10分)
    2)使用基本路徑測(cè)試方法確定該狀態(tài)圖的測(cè)試路徑。(10分)
     
    論述題2以下是QESuite Web Version 1.0中某測(cè)試項(xiàng)目的部分界面,請(qǐng)按要求回答問題(12分)
    1)下圖是該測(cè)試項(xiàng)目的測(cè)試用例執(zhí)行文檔界面。有幾個(gè)測(cè)試用例沒有執(zhí)行?有幾個(gè)測(cè)試用例近執(zhí)行通過?有幾個(gè)測(cè)試用例近執(zhí)行失?。浚?SPAN lang=EN-US>3分)

    


    2)下圖是該測(cè)試項(xiàng)目的某軟件問題報(bào)告視圖。按QESuite Web Version 1.0中的軟件問題生命周期定義,4號(hào)軟件問題報(bào)告需要何種人員進(jìn)行哪些可能的操作?5號(hào)軟件問題報(bào)告需要何種人員進(jìn)行哪些可能的操作?8號(hào)軟件問題報(bào)告需要何種人員進(jìn)行哪些可能的操作?(9分)
    
    
    論述題3:針對(duì)以下C語言程序,請(qǐng)按要求回答問題(18分)
    已知link.c源程序如下:
    /*link.c程序?qū)蜗蜴湵磉M(jìn)行操作,首先建立一個(gè)單向鏈表,然后根據(jù)用戶的選擇可以對(duì)其進(jìn)行插入節(jié)點(diǎn)、刪除節(jié)點(diǎn)和鏈表反轉(zhuǎn)操作*/
     
    #include
    #include
    typedef struct list_node *list_pointer;         //定義鏈表指針
    typedef struct list_node{                   //定義鏈表結(jié)構(gòu)
        int data;
        list_pointer    link;
    }list_node;
     
    //用到的操作函數(shù):
    list_pointer create();                       //建立一個(gè)單向鏈表
    void insert(list_pointer *p_ptr, list_pointer node);  //node后加入一個(gè)新的節(jié)點(diǎn)
    void delete_node(list_pointer *p_ptr, list_pointer trail, list_pointer node);
    //刪除前一個(gè)節(jié)點(diǎn)是trail的當(dāng)前節(jié)點(diǎn)node
    void print(list_pointer ptr);              //打印鏈表節(jié)點(diǎn)中的值
    list_pointer invert(list_pointer lead);      //反轉(zhuǎn)鏈表
     
    int main()
    {
        list_pointer    ptr=NULL;
        list_pointer    node, trail;
        list_pointer    *p = &ptr;
        int choose, location, i;
        printf("you should create a link first:\n");
        //建立一個(gè)單向鏈表:
        ptr=create();                /* ptr 指向鏈表的第一個(gè)節(jié)點(diǎn) */
        print(ptr);
        //根據(jù)用戶的不同選擇進(jìn)行相應(yīng)的操作:
        printf("input number 0, you can quit the program\n");
        printf("input number 1, you can insert a new node to link\n");
        printf("input number 2, you can delete a node from the link\n");
        printf("input number 3, you can invert the link\n");
        printf("please input your choice\n");
        scanf("%d", &choose);
        while(choose!=0){
            switch(choose){
            case 1:
                printf("you will insert a node to the link\n");
                printf("please input the location of the node:\n");
                scanf("%d", &location);
                node = ptr;
                i = 1;
                while(i

                    node = node->link;
                    i++;
                }
                insert(p, node);    /* p為指向ptr的指針 */
                print(ptr);
                break;
            case 2:
                printf("you will delete a node from the link\n");
                printf("please input the location of the node:\n");
                scanf("%d", &location);
                node = ptr;
                if(location ==1)
                    trail = NULL;
                trail = ptr;
                i = 1;
                while(i
                    trail = trail->link;
                    i++;
                }
                node = trail->link;
                delete_node(p, trail, node);
                print(ptr);
                break;
            case 3:
                printf("you will invert the link\n");
                ptr = invert(ptr);
                print(ptr);
                break;
            default:
                break;
                return -1;
            }
            printf("please input your choice\n");
            scanf("%d", &choose);
        }
        return 0;
    }
     
    //根據(jù)用戶的輸入數(shù)值建立一個(gè)新的單向鏈表:
    list_pointer create()
    {
        int i, current, length;
        list_pointer    p1, p2, head;
     
        printf("please input the node number of the link:\n");
        scanf("%d", &length);
        printf("the number of the link is : %d\n", length);
       
        printf("please input the data for the link node:\n");
        i =0;
        p1= p2= (list_pointer) malloc(sizeof(list_node));
        head = p1;
        for(i = 0; i
            scanf("%d", ¤t);
            p1->data = current;
            p2->link = p1;
            p2 = p1;
            p1 = (list_pointer) malloc(sizeof(list_node));
        }
        p2->link = NULL;
        return head;
    }
    ……
    1)畫出主函數(shù)main的控制流程圖。(10分)
    2)設(shè)計(jì)一組測(cè)試用例,盡量使main 函數(shù)的語句覆蓋率能達(dá)到100% 。如果認(rèn)為該函數(shù)的語句覆蓋率無法達(dá)到100% ,需說明原因。(8分)