D)配置项测试、系统测试和验收测试</p>
3 T; p3 C& d. _, K论述题(3题,共50分)0 A/ e T2 |2 ~$ e
论述题答题必须用蓝、黑色钢笔或圆珠笔写在论述题答题纸的相应位置上。
) c9 Y" ?6 o8 G1 w% U论述题1:以下是学生选课系统中“学生查询成绩”交互行为的描述,请按要求回答问题(20分)
! ?3 v6 U& S9 `, s, i交互开始时终端上显示首页,用户选择“查询”请求后,显示“请输入学号”。
- B# o. c" U- ~8 g在用户输入学号后,系统核对学生学号:若输入的学号不正确,则显示“输入的学号不正确”,此次查询取消,回到首页;若输入的学号正确,出现“请输入课程名”。
0 Y: v1 k/ ?+ B. N; o& n9 j) I一旦输入课程名,就开始核对课程名称:若输入的课程名不正确,则显示“输入的课程名不正确”,此次查询取消,回到首页;若输入的课程名正确,则根据“学号”和“课程名”,查询学生成绩。 u6 j4 y/ l- m& E* c& i/ g
若查询学生成绩成功,则显示查询到的成绩,系统询问是否继续查询:当用户选择“继续查询”后回到“请输入学号”;当用户选择“结束查询”后回到首页。
1 p7 n1 i% p1 r# m" {若查询学生成绩失败,则显示“查询失败”后回到首页。6 Y8 Y, b0 F0 s) H
(1)请画出该系统以上交互行为的状态图(应满足功能图的要求,不可画成流程图)。(10分)3 ? [/ B4 h; v; E& O3 Y# z1 n, M
(2)使用基本路径测试方法确定该状态图的测试路径。(10分)
# @4 ]$ O- c3 q" H, }
4 ~) s" h! o. J% p6 g* h) C论述题2:以下是QESuite Web Version 1.0中某测试项目的部分界面,请按要求回答问题(12分), J# B. ]# e% G* r: q. v4 L
(1)下图是该测试项目的测试用例执行文档界面。有几个测试用例没有执行?有几个测试用例最近一次执行通过?有几个测试用例最近一次执行失败?(3分)& j# ]- C% k& s5 a3 P
3 \) O) ^* R3 g/ H(2)下图是该测试项目的某软件问题报告视图。按QESuite Web Version 1.0中的软件问题生命周期定义,4号软件问题报告需要何种人员进行哪些可能的操作?5号软件问题报告需要何种人员进行哪些可能的操作?8号软件问题报告需要何种人员进行哪些可能的操作?(9分)/ b a; _ Q8 L8 `* u
0 z3 i) }- @( J6 ?5 d% `
论述题3:针对以下C语言程序,请按要求回答问题(18分)3 I1 h. l2 J/ p, }
已知link.c源程序如下:
$ y$ \+ H% l) w5 V" m# |) p3 n' @/*link.c程序对单向链表进行操作,首先建立一个单向链表,然后根据用户的选择可以对其进行插入节点、删除节点和链表反转操作*/
* X- K, F$ m5 Z7 s& q, R
+ D0 Q' N0 C8 S/ P#include
$ {! ?) X# R9 L9 \0 J! A# P5 j- d#include + V% |, o' v8 V/ e
typedef struct list_node *list_pointer; //定义链表指针
* D# |1 |0 I* u- {8 y0 h! {typedef struct list_node{ //定义链表结构/ v8 |# s( I5 u% C- `+ R2 G7 H
int data;& |6 c' @ v& E! x2 t
list_pointer link;
+ ]- _2 l. w1 `; R% ]( O}list_node;$ p* j$ T# h9 w$ X* m, [) ]
% E5 [& W) P: i( `+ @( Y, t6 g//用到的操作函数:
% S6 c7 `) n& a/ T! [, llist_pointer create(); //建立一个单向链表8 E1 V3 c1 `! ^- @
void insert(list_pointer *p_ptr, list_pointer node); //在node后加入一个新的节点
* z! T- T+ L/ c2 `2 E' m! rvoid delete_node(list_pointer *p_ptr, list_pointer trail, list_pointer node); ' Y* K9 n7 A, x/ o9 B
//删除前一个节点是trail的当前节点node d- O6 t% \9 V( h+ B ^
void print(list_pointer ptr); //打印链表节点中的值5 e4 N+ l% q* n: H" z
list_pointer invert(list_pointer lead); //反转链表
/ J+ c- @: W4 O9 n
8 t* [. p" g' d* }7 n' M' Pint main()5 S; g& h/ }/ N3 _4 w
{
0 E, t0 \) S+ V: G list_pointer ptr=NULL;
$ T! L H7 W7 K) x( U9 B list_pointer node, trail;% ~% b* M; W1 M Q' Z1 W$ U
list_pointer *p = &ptr;
' [; ~0 ^. i/ V) S) y9 c int choose, location, i;
0 ^4 m% o1 o: i/ b# o( } printf("you should create a link first:\n");, f4 @* A/ @; |. W( |7 h
//建立一个单向链表:$ n: _6 ]2 @, ^5 Q: p# f
ptr=create(); /* ptr 指向链表的第一个节点 */
+ e/ b! b$ c$ E( D& | print(ptr);6 B! p' `5 b# q. o$ @" L$ C8 H/ P
//根据用户的不同选择进行相应的操作:. v1 o$ Y% ]8 u# X2 P! t/ |( }
printf("input number 0, you can quit the program\n");2 i8 z* `; [. B( ~* w
printf("input number 1, you can insert a new node to link\n");9 ~3 I, U- A9 z' v9 y2 e6 y) u2 x
printf("input number 2, you can delete a node from the link\n");
7 ]/ n! ~5 z8 B3 W$ \& E printf("input number 3, you can invert the link\n");
8 ~0 w, K# o8 u7 | printf("please input your choice\n");% O, w& {% X5 M2 i3 S9 l
scanf("%d", &choose);
* \0 v0 L4 L4 J' b5 e7 @ while(choose!=0){' _, Q2 {0 g" {( X# a8 K, H
switch(choose){
% R' v2 p- ~+ w9 A7 p, }0 e- q! N case 1:. G6 @0 b- @5 }
printf("you will insert a node to the link\n");
$ e& z& d) u# q( T% }0 V
. `) N l3 f5 T, k; p' o printf("please input the location of the node:\n"); |