(完整版)实验1逻辑覆盖法(含答案)
实验 4 逻辑覆盖测试实验
亳州师范高等专科学校软件测试技术实验报告系别:理化系专业:计算机应用技术学号:1130404116姓名:徐漫丽指导教师:仝海燕提交日期:2013年3 月29日2013年3 月29 日实验4 逻辑覆盖测试实验一实验目的1、掌握白盒测试之逻辑覆盖的基本技术和方法;2、能够使用语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖进行测试。
3、通过实验和应用,要逐步提高和运用逻辑覆盖技术解决实际测试问题的能力;5、完成实验并认真书写实验报告(要求给出完整的测试信息,如测试用例,测试报告等)二实验任务对于下面给出的流程图,设计测试用例,使其分别达到语句覆盖,判定覆盖,条件覆盖,判定/条件覆盖,条件组合覆盖和路径覆盖。
三实验步骤(设计测试用例)1、语句覆盖测试用例(按照下面的表格样式填写测试用例)注意:”输出magic的值”是指的上面流程图中执行结束时magic的值测试用例输入输出magic的值条件x>0的值条件y>0的值条件magic<0的值判定M的取值判定N的取值覆盖路径X=1 y=1 12 1 1 F T F abef X=-1 y=-1 0 -1 -1 T F T acdf2、判定覆盖测试用例(按照下面的表格样式填写测试用例)测试用例输入输出magic的值条件x>0的值条件y>0的值条件magic<0的值判定M的取值判定N的取值覆盖路径X=1 y=1 12 1 1 F T F abef X=-1 y=-1 0 -1 -1 T F T acdf3、条件覆盖测试用例(按照下面的表格样式填写测试用例)测试用例输入输出magic的值条件x>0的值条件y>0的值条件magic<0的值判定M的取值判定N的取值覆盖路径X=1 y=1 12 1 1 F T F abef X=-1 y=-1 0 -1 -1 T F T acdf4、判定/条件覆盖测试用例(按照下面的表格样式填写测试用例)测试用例输入输出magic的值条件x>0的值条件y>0的值条件magic<0的值判定M的取值判定N的取值覆盖路径X=1 y=1 12 1 1 F T F abef X=-1 y=-1 0 -1 -1 T F T acdf5、条件组合覆盖测试用例(按照下面的表格样式填写测试用例)测试用例输入输出magic的值条件x>0的值条件y>0的值条件magic<0的值判定M的取值判定N的取值覆盖路径x=2,y=3 15 T T F T F abef x=-2,y=-3 0 F F T F T acdf x=2,y=-3 0 T F T F T acef x=-2,y=3 0 F T T F T acdf6、路径覆盖测试用例(按照下面的表格样式填写测试用例)测试用例输入输出magic的值条件x>0的值条件y>0的值条件magic<0的值判定M的取值判定N的取值覆盖路径X=1 y=1 12 1 1 F T F abefX=-1 y=-1 0 -1 -1 T F T acdf四执行测试根据自己设计的测试用例,执行程序后,写出相应的测试结果:(测试结果可以截取程序执行的结果图)注意:(1)、先在测试红色“测试用例”的下方填写你设计的相应测试用例,然后在“测试结果”下方给出使用你的测试用例程序执行的结果图(可以通过截图方式获得)。
软件测试经典面试题(完整版)
软件测试面试题汇总。
测试技术面试题。
1、什么是兼容性测试?兼容性测试侧重哪些方面? (5)2、我现在有个程序,发现在Windows上运行得很慢,怎么判别是程序存在问题还是软硬件系统存在问题? (5)3、测试的策略有哪些? (5)4、正交表测试用例设计方法的特点是什么? (5)5、描述使用bugzilla缺陷管理工具对软件缺陷(BUG)跟踪的管理的流程? (5)6、你觉得bugzilla在使用的过程中,有什么问题? (6)7、描述测试用例设计的完整过程? (6)8、单元测试的策略有哪些? (6)9、LoadRunner分哪三部分? (7)10、LoadRunner进行测试的流程? (7)什么是并发?在lordrunner中,如何进行并发的测试?集合点失败了会怎么样? (7)12、使用QTP做功能测试,录制脚本的时候,要验证多个用户的登录情况/查询情况,如何操作? (7)13、QTP中的Action有什么作用?有几种? (8)14、TestDirector有些什么功能,如何对软件测试过程进行管理? (8)15、你所熟悉的软件测试类型都有哪些?请试着分别比较这些不同的测试类型的区别与联系(如功能测试、性能测试......)? . (9)16、条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录? (9)17、Beta测试与Alpha测试有什么区别? (9)18、软件的评审一般由哪些人参加?其目的是什么? (9)19、测试活动中,如果发现需求文档不完善或者不准确,怎么处理? (9)20、阶段评审与项目评审有什么区别? (9)21、阐述工作版本的定义? (10)22、什么是桩模块?什么是驱动模块? (10)23、什么是扇入?什么是扇出? (10)24、你认为做好测试计划工作的关键是什么? (10)25、你认为做好测试用例工作的关键是什么? (10)26、简述一下缺陷的生命周期? (11)27、软件的安全性应从哪几个方面去测试? (11)28、软件配置管理工作开展的情况和认识? (11)29、你觉得软件测试通过的标准应该是什么样的? (11)30、引入测试管理的含义? (11)31、一套完整的测试应该由哪些阶段组成? (11)32、单元测试的主要内容? (11)33、集成测试也叫组装测试或者联合测试,请简述集成测试的主要内容? (11)34、简述集成测试与系统测试关系? (12)35、软件测试的文档测试应当贯穿于软件生命周期的全过程,其中用户文档是文档测试的重点。
软件测试中的逻辑覆盖测试技巧
软件测试中的逻辑覆盖测试技巧逻辑覆盖测试是软件测试中一个重要的测试技巧,它的目的是确保被测试的软件能够在不同情况下正确地执行逻辑判断。
在软件测试过程中,逻辑覆盖测试可以帮助测试人员发现代码中的逻辑错误,提高软件的质量和可靠性。
本文将介绍几种常用的逻辑覆盖测试技巧,并说明它们的应用场景和注意事项。
最基本的逻辑覆盖测试技巧是语句覆盖测试。
该技巧的目标是确保测试用例能够覆盖到被测试代码中的每一个语句。
通过执行不同的测试用例,可以检查代码中是否存在语法错误和逻辑缺陷。
然而,仅仅使用语句覆盖测试是远远不够的,因为它无法捕捉到代码中不同分支的执行情况。
为了更全面地测试代码中的逻辑判断,分支覆盖测试技巧应运而生。
该技巧的目标是确保测试用例能够覆盖到被测试代码中的每一个分支。
分支覆盖测试可以帮助测试人员发现代码中的逻辑错误和决策错误。
为了实现分支覆盖测试,测试用例需要覆盖到每一个分支的真假情况,并且对于复杂的条件语句,需要设计合适的测试用例来覆盖不同情况下的逻辑判断。
除了分支覆盖测试,条件覆盖测试也是一种常用的逻辑覆盖测试技巧。
该技巧的目标是确保测试用例能够覆盖到被测试代码中的每一个条件。
条件覆盖测试可以帮助测试人员检查代码中的逻辑判断是否正确,并发现可能存在的边界条件错误。
在进行条件覆盖测试时,测试用例需要覆盖到每一种可能的条件取值,包括边界值和错误值。
路径覆盖测试也是一种常用的逻辑覆盖测试技巧。
该技巧的目标是确保测试用例能够覆盖到被测试代码中的每一条执行路径。
路径覆盖测试可以帮助测试人员发现代码中的流程错误和逻辑错误。
对于复杂的代码,路径覆盖测试可能需要设计大量的测试用例来覆盖不同的执行路径,因此在进行路径覆盖测试时需要注意测试用例设计的复杂性和可行性。
判定覆盖测试是一种更加严格的逻辑覆盖测试技巧。
该技巧的目标是确保测试用例能够覆盖到被测试代码中的每一个条件结果组合。
判定覆盖测试可以帮助测试人员发现代码中的错误逻辑、决策错误和边界情况。
实验2-1-答案
白盒测试用例练习
1.为以下所示的程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖,并画出相应的程序流程图.
void DoWork (int x,int y,int z)
{
int k=0,j=0;
if ( (x〉3)&&(z<10))
{ k=x*y-1;
j=sqrt(k);//语句块1
}
if ((x==4)||(y>5))
{
j=x*y+10;
}//语句块2
j=j%3; //语句块3
}
由这个流程图可以看出,该程序模块有4条不同的路径:
P1:(a-c—e)P2:(a-c-d)
P3:(a—b-e)P4:(a—b—d)
将里面的判定条件和过程记录如下:
判定条件M={x〉3 and z<10}
判定条件N={x=4 or y〉5}
1、语句覆盖
2、判定覆盖
也可以让测试用例测试路径P2和P3.相应的两组输入数据如下:
3、条件覆盖
对于M:x>3取真时T1,取假时F1;
z〈10取真时T2,取假时F2;
对于N:x=4取真时T3,取假时F3;
y>5取真时T4,取假时F4。
条件:x〉3,z〈10,x=4,y>5
条件:x〈=3,z>=10,x!=4,y〈=5
5、组合覆盖
条件组合
1)x>3,z〈10 2)x>3,z〉=10
3) x〈=3,z<10 4)x〈=3,z〉=10
5)x=4,y〉5 6)x=4,y<=5
6。
软件测试实验(一二三)_答案
黑盒测试(一)和白盒测试(二)实验背景知识结构性测试是知道产品内部工作过程,检测产品内部动作是否按照规格说明书的规定正常进行。
结构性测试允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。
一、逻辑覆盖结构性测试力求提高测试覆盖率。
逻辑覆盖是一系列测试过程的总称,它是在使用白盒测试法时,选用测试用例执行程序逻辑路径的方法。
逻辑覆盖按覆盖程度由低到高大致分为以下几类:(1)语句覆盖:设计若干测试用例,使程序中每一可执行语句至少执行一次;(2)判断覆盖:设计用例,使程序中的每个逻辑判断的取真取假分支至少经历一次;(3)条件覆盖:设计用例,使判断中的每个条件的可能取值至少满足一次;(4)判断/条件覆盖:设计用例,使得判断中的每个条件的所有可能结果至少出现一次,而且判断本身所有可能结果也至少出现一次;(5)条件组合覆盖。
设计用例,使得每个判断表达式中条件的各种可能组合都至少出现一次;显然,满足⑤的测试用例也一定是满足②、③、④的测试用例。
(6)路径覆盖。
设计足够的测试用例,使程序的每条可能路径都至少执行一次。
如果把路径覆盖和条件组合覆盖结合起来,可以设计出检错能力更强的测试数据用例。
二、基本路径测试如果把覆盖的路径数压缩到一定限度内,例如,程序中的循环体只执行零次和一次,就成为基本路径测试。
它是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。
设计出的测试用例要保证在测试中,程序的每一个可执行语句至少要执行一次。
①程序的控制流图控制流图是描述程序控制流的一种图示方法。
符号○称为控制流图的一个结点,一组顺序处理框可以映射为一个单一的结点。
控制流图中的箭头称为边,它表示了控制流的方向,在选择或多分支结构中分支的汇聚处,即使没有执行语句也应该有一个汇聚结点。
软件工程上机实验报告(1-10)
SHANGHAI UNIVERSITY<软件工程>实验总结学院计算机工程与科学学院学号10122050姓名王杰指导老师陈圣波日期2014.03实验一软件工程标准化文档一、实验目的1.了解国家标准GB/T8567-20062.熟悉软件产品开发文件的基本内容二、实验内容1.搜索和下载国家标准GB/T8567-2006。
2.通过阅读国家标准GB/T8567-2006,将以下文字填写完整:3.通过阅读国家标准GB/T8567-2006,填写以下表格:实验2 数据流分析【说明】某直达列车车票预售系统接受顾客的订票和取票业务。
1.顾客为了提前订票,可向系统提供个人信息及其预订购的车次和日期,系统根据个人信息是否齐全和车次是否正确来判断订票单是否合格。
对于合格的订票单,系统通过查找座位表审核相应的车次是否有剩余票。
如果有剩余票,则记录顾客个人信息以及订票信息,并向顾客提供取票单。
2.到了可以取票的时间,顾客向系统提供取票单,在检查单据合格的情况下,系统想顾客提供火车票。
3.售票员可以利用系统查询各车次车票的已订购、已售出和剩余情况。
【问题1】画出系统的顶层数据流图。
【问题2】对问题1的结果进行分解,画出0层和1层数据流图。
(1) 系统的顶层数据流图直达列车车票预售系统顾客不合格订票单取票单(2)0层数据流图1订票2取票订票信息表旅客信息表列车时刻表订票单取票通知无票通知火车票取票单3.查询工作人员各车次车票的已订购、已售出和剩余情况车次车票信息1层数据流图实验三下面为模块“产生毕业典礼学生表”的功能描述,请画出该模块的程序流程图和PAD 图。
记录StudentRecord 给出即将大学毕业的学生的姓名和平均分(GPA )。
我们的目的是建立一个参加毕业典礼的学生表。
候选毕业的学生表从文件”StudRecs”读入。
因为学校规定:GPA 低于minGPA 的学生不能毕业,因此那些平均分低于minGPA 的学生不参加毕业典礼。
第4章(1)白盒测试方法1-逻辑覆盖法解析
语句覆盖率99%
{
statement; }1句 50%的分支没有达到
}
语句覆盖总结 Logo
• 【优点】 :可以很直观地从源代码得到测 试用例,无须细分每条判定表达式。
• 【缺点】 :由于这种测试方法仅仅针对程 序逻辑中显式存在的语句,但对于隐藏的 条件是无法测试的。如在多分支的逻辑运 算中无法全面的考虑。语句覆盖是最弱的 逻辑覆盖。
6
2
7
1
5
10
3
8
4
9
判定覆盖 Logo
• 【优点】:判定覆盖具有比语句覆盖更强 的测试能力。同样判定覆盖也具有和语句 覆盖一样的简单性,无须细分每个判定就 可以得到测试用例。
• 【缺点】:往往大部分的判定语句是由多 个逻辑条件组合而成,若仅仅判断其整个 最终结果,而忽略每个条件的取值情况, 必然会遗漏部分测试路径。判定覆盖仍是 弱的逻辑覆盖。
• 程序结构主要用 流程 图 N-S图来表示(p.65)
• 程序的执行路径数目庞
大,让程序的所有路径
都执行一次,全面的白 3581322.293419985680302829734 315
盒测试将产生百分之百 正确的程序,实际上是
白盒测试 —带上X光眼镜测 试
不可能的
• 对一个具有多重选择和循环嵌套的程序,不同 的路径数目可能是天文数字。给出一个小程序 Logo 的流程图,它包括了一个执行20次的循环。
{ not (A=2) and not (X>1) } = not (A>1) and not (A=2) and not (X>1)
or not (B=0) and not (A=2) and not (X>1)
白盒测试方法习题及答案
[试题分类]: [04]白盒测试方法/[0400][综合]白盒测试方法1. 下面不属于白盒测试能保证的是。
A.模块中所有独立途径至少测试一次B.测试所以逻辑决策真和假两个方面C.在所有循环的边界内部和边界上执行循环体D.不正确或漏掉的功能答案:D分数:1题型:单选题难度:12.因果图方法是根据()之间的因果关系来设计测试用例的。
A.输入与输出B.设计与实现C.条件与结果D.主程序与子程序答案:A分数:1题型:单选题难度:13.使用白盒测试方法时,确定测试数据应根据()和指定的覆盖标准。
A.程序的内部逻辑B.程序的复杂程度C.使用说明书D.程序的功能答案:A分数:1题型:单选题难度:14.软件测试中常用的静态分析方法是()和接口分析。
A.引用分析B.算法分析C.可靠性分析D.效率分析答案:A分数:1题型:单选题难度:15.软件测试中常用的静态分析方法是引用分析和()。
A.引用分析B.算法分析C.可靠性分析D.接口分析答案:D分数:1题型:单选题难度:16.白盒方法中常用的方法是()方法。
A.路径测试B.等价类C.因果图D.归纳测试答案:A分数:1题型:单选题难度:17.在软件工程中,白箱测试法可用于测试程序的内部结构。
此方法将程序看作是()A.路径的集合B.循环的集合题型:单选题难度:18.软件测试白箱测试是对软件的结构进行测试,下述:Ⅰ.边缘值分析Ⅱ.语句测试Ⅲ.分值测试Ⅳ.路经测试()是其应包括的内容。
A.ⅠB.Ⅱ和ⅢC.Ⅲ和ⅣD.Ⅱ.Ⅲ和Ⅳ答案:D分数:1题型:单选题难度:19.在进行单元测试时,常用的方法是()。
A.采用白盒测试,辅之以黑盒测试B.采用黑盒测试,辅之以白盒测试C.只适用白盒测试D.只适用黑盒测试答案:A分数:1题型:单选题难度:110.白盒测试法一般使用于()测试。
A.单元B.系统C.集成D.确认答案:A分数:1题型:单选题难度:1[试题分类]: [04]白盒测试方法/[0401]逻辑覆盖法11.关于条件测试错误的是()A.可以检查程序中所包含的逻辑条件B.条件中包含的错误有布尔算子错误C.条件中包含的错误有布尔变量错误D.条件中包含的错误有接口错误答案:D分数:1题型:单选题难度:112.关于条件中包含的错误类型说法错误的是()A.关系算子错误B.算术表达式错误C.条件中包含的错误有布尔变量错误D.条件中包含的错误有接口错误答案:D分数:1题型:单选题难度:113.语句覆盖.判定覆盖.条件覆盖和路径覆盖都是白盒测试法设计测试用例的覆盖准则,在这些覆盖准则中最弱的准则是()。
白盒测试逻辑覆盖练习题
白盒测试逻辑覆盖练习题一、语句覆盖if (a > 0 && b > 0) {c = a + b;} else {c = 0;}def check_age(age):if age < 18:return "未成年"elif age >= 18 and age < 60:return "成年人"else:return "老年人"二、分支覆盖if (x > 0) {if (y > 0) {printf("第一象限");} else {printf("第四象限");}} else {if (y > 0) {printf("第二象限");} else {printf("第三象限");}}function calculateGrade(score) {if (score >= 90) {return 'A';} else if (score >= 80) {return 'B';} else if (score >= 70) {return 'C';} else {return 'D';}}三、路径覆盖public int calculate(int a, int b) { if (a > 0) {if (b > 0) {return a + b;} else {return a b;}} else {if (b > 0) {return b a;} else {return 0;}}}public int Max(int a, int b, int c) { if (a > b) {if (a > c) {return a;} else {return c;}} else {if (b > c) {return b;} else {return c;}}}四、条件覆盖def check_password(password):if len(password) >= 8 and any(char.isdigit() for char in password):return "密码强度高"else:return "密码强度低"function validateForm(username, password) {if (username.length > 0 && password.length > 0) { return true;} else {return false;}}五、判定条件覆盖public boolean isEligible(int age, boolean hasLicense) {if (age >= 18 && hasLicense) {return true;} else {return false;}}int isPrime(int num) {if (num <= 1) {return 0;}for (int i = 2; i < num; i++) {if (num % i == 0) {return 0;}}return 1;}六、多条件覆盖public string GetGrade(int score, bool isFinalExam) { if (score >= 90 || (isFinalExam && score >= 80)) { return "A";} else if (score >= 80 || (isFinalExam && score >= 70)) {return "B";} else if (score >= 70 || (isFinalExam && score >= 60)) {return "C";} else {return "D";}}return "Eligible";} else {return "Not Eligible";}}七、条件组合覆盖def check_login(username, password, is_admin):if (username == "admin" or username == "user") and password == "56" and not is_admin:return "User logged in";elif (username == "admin" and is_admin) and password == "admin123":return "Admin logged in";else:return "Invalid credentials";public String authenticate(String username, String password, boolean hasTwoFactor) {if (username.equals("admin") &&password.equals("admin123") && hasTwoFactor) {return "Admin access granted";} else if (username.equals("user") &&password.equals("user123") && !hasTwoFactor) {return "User access granted";} else {return "Access denied";}}八、路径条件覆盖void processOrder(int quantity, float discount) {if (quantity > 10) {if (discount < 0.1) {printf("Order processed with standard discount");} else {printf("Order processed with special discount");}} else {printf("Order processed without discount");}}function calculateTotal(price, isMember, hasCoupon) { let total = price;if (isMember) {total = 0.9; // 10% discount for members}if (hasCoupon) {total = 0.95; // Additional 5% discount for coupon}return total;}九、修改条件/判定覆盖def upgrade_account(user_type, points):if user_type == "basic" and points >= 100:return "Upgrade to premium"elif user_type == "premium" and points >= 200:return "Upgrade to elite"else:return "No upgrade available"public String checkSubscription(String type, int duration) {if (type.equals("monthly") && duration >= 6) {return "Eligible for annual plan";} else if (type.equals("annual") && duration >= 12) {return "Eligible for lifetime plan";} else {return "Continue current plan";}}答案一、语句覆盖1. 测试用例:a=1, b=1;a=1, b=12. 测试用例:age=15;age=25;age=65二、分支覆盖1. 测试用例:x=1, y=1;x=1, y=1;x=1, y=1;x=1, y=12. 测试用例:score=95;score=85;score=75;score=65三、路径覆盖1. 测试用例:a=1, b=1;a=1, b=1;a=1, b=1;a=1, b=12. 测试用例:a=10, b=5, c=3;a=5, b=10, c=8;a=5, b=5, c=10;a=3, b=3, c=3四、条件覆盖1. 测试用例:password="567";password=""2. 测试用例:username="test", password="pass";username="", password=""五、判定条件覆盖1. 测试用例:age=20, hasLicense=True;age=17, hasLicense=False2. 测试用例:num=2;num=1;num=0;num=1六、多条件覆盖1. 测试用例:score=95, isFinalExam=False;score=85, isFinalExam=True;score=75, isFinalExam=False;score=65, isFinalExam=True七、条件组合覆盖1. 测试用例:username="admin", password="admin123",is_admin=False;username="user", password="56",is_admin=False;username="admin", password="admin123",is_admin=True2. 测试用例:username="admin", password="admin123", hasTwoFactor=True;username="user", password="user123", hasTwoFactor=False;username="admin", password="wrong", hasTwoFactor=True八、路径条件覆盖1. 测试用例:quantity=15, discount=0.05;quantity=8, discount=0.05;quantity=15, discount=0.22. 测试用例:price=100, isMember=True, hasCoupon=True;price=100, isMember=False, hasCoupon=False;price=100, isMember=True, hasCoupon=False九、修改条件/判定覆盖1. 测试用例:user_type="basic", points=50;user_type="basic", points=150;user_type="premium",points=150;user_type="premium", points=2502. 测试用例:type="monthly", duration=3;type="monthly", duration=9;type="annual", duration=9;type="annual", duration=15。
软件测试-逻辑覆盖的测试
软件测试实验报告题目:逻辑覆盖的测试学号:姓名:教师:东南大学成贤学院电子与计算机工程学院2017年 10月 13 日实验题目1、实验内容为以下流程图所示的程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合条件覆盖和路径覆盖。
2、实验目的与要求为流程图所示的程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合条件覆盖和路径覆盖。
3、实验环境操作系统:win10测试工具:VS2010测试语言:C++4、设计思路分析(包括需求分析、整体设计思路、概要设计)语句覆盖的公式:语句覆盖率=被评价到的语句数量/可执行的语句总数 x 100%的缺点:对程序执行逻辑的覆盖很低。
判定覆盖(分支覆盖)的公式:判定覆盖率=被评价到的判定分支个数/判定分支的总数X100%判定率(DDP)=被评价到的判定路径数量/判定路径的总数X100%的缺点:判定覆盖虽然把程序所有分支均覆盖到了,但其主要对整个最终取值进行度量,忽略了表达式内部取值。
条件覆盖CC(Condition Coverage),设计足够多的,运行被测程序,使得每一判定语句中每个逻辑条件的可能取值至少满足一次。
率的公式:条件覆盖率=被评价到的条件取值的数量/条件取值的总数X100%的缺点:只考虑到每个判定语句中的每个,没有考虑到各个条件分支(或者涉及不到全部分支),即不能够满足判定覆盖判定条件覆盖判定条件覆盖率的公式:条件率=被评价到的条件取值和判定分支的数量/(条件取值总数+判定分支总数)的缺点:没有考虑单个判定对整体结果的影响,无法发现逻辑错误。
补充:修正判定条件覆盖修正单元的入口与出口必须至少被调用一次,程序中判断的每一个分支必须至少被执行一次。
对于程序中通过逻辑运算(AND,OR等)组成判断的基本布尔条件,每个条件必须取遍所有可能的值且每一个条件对判断的结果具有独立的作用。
条件组合覆盖,也称多MCC (Multiple Condition Coverage),设计足够多的测试用例,使得每个判定中条件的各种可能组合都至少出现一次(以数轴形式划分区域,提取交集,建立最少的测试用例)。
软件质量保证与测试实验报告
无效等价类 3. 以 0 开头的含有非数字字符的串 4. 以 0 开头的小于 3 位的数串 5. 以 0 开头的大于 4 位的数串 6. 以非 0 开头的数串
电话号码
9. 以 0 开头的数串
7. 以非 0、非 1 开头的 7 位数 10. 以 1 开头的数串
串
11. 以非 0、非 1 开头的含有非法字符 7 或
8. 以非 0、非 1 开头的 8 位数 者 8 位数串 12. 以非 0、非 1 开头的小
串
于 7 位数串以非 0、非 1 开头的大于 8
位数串
其次:为有效等价类设计测试用例
测试数据
期望结果
010
显示有效输入
023 2234567
显示有效输入
0554 6863670
显示有效输入
覆盖范围 1、8 1、7 2、7
Factorial qjc= new Factorial(); " 您所求 " +y+" 的阶乘为 :" +(y)); break ; } case 2:{ DataSum dataSum1= new DataSum(100); "1--100 的和为 :" +(100)); break ; } } }
8
j=j%3;
9
}
10 }
说明:程序段每行开头的数字( 1~10)是对每条语句的编号。
( 1)画出程序的控制流程图(图自己完成,下图仅 供参考 )。
( 2)分别以语句覆盖、判定覆盖、测试用例的执行路径(用题中给出的语句编号表示) 。
语句覆盖:选用的测试用例是: case1
测试用例
a
b
c
(完整版)实验1逻辑覆盖法(含答案)
payment=40*wage+10*1.5*wage+(hours-50)*3*wage;
cout<<"The final payment are:"<<payment;
return payment;
}
布置作业
实验后记
提交方式:以“学号_姓名”命名的word文档。
参考答案
1.分别用白盒测试方法中
N
Y
Y
N
语句覆盖
x
路径
1
45
OBCE
2
55OBDE判来自覆盖x路径1
40
OAE
2
45
OBCE
3
55
OBDE
条件覆盖
X<=40为真 记为T1
x>40为假 记为-T1
x>50为真 记为T2
x>50为假 记为-T2
要求:
1、编写程序,画出程序的流程图;
2、分析本测试程序共有几条路径?分别给出每一条路径。
3、分别列表编写逻辑覆盖法各种方法(语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖)的测试用例(需做相应的必要说明),并测试该程序,给出实验结果。
本次课主体实验方式、方法:
指导上机利用逻辑覆盖法设计测试用例。
cout<<"please input hours and per hour pay:";
cin>>hours>>wage;
if (hours<40)
payment=hours*wage ;
else if ((hours>40) && (hours<=50))
实验二 白盒测试——基本逻辑覆盖测试方法
实验二白盒测试基本逻辑覆盖——测试方法1、实验目的(1)理解等价类划分方法的内涵;(2)掌握等价类测试健壮性概念;(3)能够使用等价类划分法设计测试用例。
2、实验预习等价类划分测试方法的主要目的是能够对软件进行完备的测试,同时避免冗余测试用例的存在。
等价类的划分关键是确定类的等价关系,根据单/多缺陷假设和健壮性,等价类划分测试方法可以分为弱一般等价类测试、强一般等价类测试、弱健壮等价类测试和强健壮等价类测试四类方法。
3、实验内容及要求现在有一个应用于旅馆住宿管理系统的程序,其包含了用户登录、用户注册和用户结算等功能,需要对该程序进行测试,具体测试任务主要有:(1)旅馆住宿系统用户名字段测试用例设计;(必做)(2)旅馆住宿系统用户注册测试用例设计;(必做)(3)旅馆住宿系统结算功能测试用例设计。
(选做)在任务1中,用户名限制为6~10位自然数,要求使用等价类划分方法设计测试用例。
在任务2中,用户信息主要有登录帐号(6~10位自然数)、真实姓名(大小写的英文字符)、登录密码和确认密码、出生日期(其中有效年份1900~2010)。
任务3中,旅馆房费结算有一定的规则,当游客入住后可根据房间价格、入住天数、入住人是否有会员卡等情况给予折扣结算,房费计算公式为,房费=房间单价×折扣率×入住天数。
折扣率根据住宿人住宿天数(最多30天)、是否有会员卡、入住次数(3次及以下、3次以上)和物品寄存个数的不同有所不同,体现在不同条件下对应的积分不同,10分及10分以上折扣率为7折,10分以下折扣率为9折,具体规则:要求给出所有这些任务的实验步骤以及强健壮等价类测试用例,并给出实际测试结果。
4、实验总结(1) 请确定任务1和任务2的输入和输出变量。
(2) 对于任务1和任务2,在做健壮性测试用例时,给出输入变量的无效区间。
(3) 请结合实验谈一下等价类划分测试方法的优劣。
软件测试经典面试题(完整版)
软件测试面试题汇总。
测试技术面试题。
1、什么是兼容性测试?兼容性测试侧重哪些方面? (5)2、我现在有个程序,发现在Windows上运行得很慢,怎么判别是程序存在问题还是软硬件系统存在问题? (5)3、测试的策略有哪些? (5)4、正交表测试用例设计方法的特点是什么? (5)5、描述使用bugzilla缺陷管理工具对软件缺陷(BUG)跟踪的管理的流程? (5)6、你觉得bugzilla在使用的过程中,有什么问题? (6)7、描述测试用例设计的完整过程? (6)8、单元测试的策略有哪些? (6)9、LoadRunner分哪三部分? (7)10、LoadRunner进行测试的流程? (7)什么是并发?在lordrunner中,如何进行并发的测试?集合点失败了会怎么样? (7)12、使用QTP做功能测试,录制脚本的时候,要验证多个用户的登录情况/查询情况,如何操作? (7)13、QTP中的Action有什么作用?有几种? (8)14、TestDirector有些什么功能,如何对软件测试过程进行管理? (8)15、你所熟悉的软件测试类型都有哪些?请试着分别比较这些不同的测试类型的区别与联系(如功能测试、性能测试......)? . (9)16、条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录? (9)17、Beta测试与Alpha测试有什么区别? (9)18、软件的评审一般由哪些人参加?其目的是什么? (9)19、测试活动中,如果发现需求文档不完善或者不准确,怎么处理? (9)20、阶段评审与项目评审有什么区别? (9)21、阐述工作版本的定义? (10)22、什么是桩模块?什么是驱动模块? (10)23、什么是扇入?什么是扇出? (10)24、你认为做好测试计划工作的关键是什么? (10)25、你认为做好测试用例工作的关键是什么? (10)26、简述一下缺陷的生命周期? (11)27、软件的安全性应从哪几个方面去测试? (11)28、软件配置管理工作开展的情况和认识? (11)29、你觉得软件测试通过的标准应该是什么样的? (11)30、引入测试管理的含义? (11)31、一套完整的测试应该由哪些阶段组成? (11)32、单元测试的主要内容? (11)33、集成测试也叫组装测试或者联合测试,请简述集成测试的主要内容? (11)34、简述集成测试与系统测试关系? (12)35、软件测试的文档测试应当贯穿于软件生命周期的全过程,其中用户文档是文档测试的重点。
国家开放大学《软件测试(本)》形考任务1-4参考答案
国家开放大学《软件测试(本)》形考任务1-4参考答案形考任务1一、选择题(从4个选项中,选其一项的标号填入())1.软件测试是为了检查出并改正尽可能多的错误,不断提高软件的( )。
A. 质量和效能B. 设计和技巧C. 质量和可靠性D. 功能和效率2.软件测试工作应该开始于( )。
A. 需求分析阶段B. 概要设计阶段C. 编码之后D. 详细设计阶段3.关于软件质量保证和软件测试的描述,不正确的是( )。
A. 软件质量保证和软件测试是软件质量工程的两个不同层面的工作B. 软件测试人员就是软件质量保证人员C. 软件测试是保证软件质量的一个重要环节D. 在软件质量保证的活动中也有一些测试活动4.一个测试团队计划持续在一被测系统中检测90%-95%的缺陷比率。
虽然测试经理认为无论就测试团队角度还是行业标准而言这已经是一个标准很高的缺陷检测率。
但高层管理者对测试结果失望,认为测试团队仍漏检了太多的缺陷。
而用户对此系统使用满意度相对较好,虽有失效发生,但总体负面影响不大。
针对上述情况,作为一个测试经理可应用以下的哪一个通用测试原则去向高层管理者解释为什么系统中仍会存在未被检测到的缺陷( )。
A. 穷尽测试是不可能的B. 缺陷集群性C. 杀虫剂悖论D. 测试依赖于测试内容5.关于软件测试对软件质量的意义,有以下观点:①度量与评估软件的质量;②保证软件质量;③改进软件开发过程;④发现软件错误。
其中正确的是( )。
A. ①、②、③、④B. ①、②、③C. ①、③、④D. ①、②、④6.下面的描述中,不能体现前置测试模型要点的是( )。
A. 前置测试模型将开发和测试的生命周期整合在一起,标识了项目生命周期从开始到结束之间的关键行为,提出业务需求最好在设计和开发之前就被正确定义。
B. 前置测试模型主张根据业务需求进行测试设计,认为需求分析阶段是进行测试计划和测试设计的最好时机。
C. 前置测试将测试执行和开发结合在一起,并在开发阶段以编码—测试—编码—测试的方式来体现,强调对每一个交付的开发结果都必须通过一定的方式进行测试。
软件测试用例测验题答案1
24 多选以下关于错误猜测法的说法正确的是(
)
错误猜测法是基于经验和直觉推测程序中所有可能存在的各种错误,有针对性地设计测试用例的方法。 错误猜测法是列举程序中所有可能有的错误和容易发生错误的特殊情况。 没有经验的人通过错误猜测法发现的问题会更多。 经验越丰富的测试人员通过错误猜测法发现的缺陷可能会更多。
26 单选等价类划分法是把输入域分成有效等价类和无效等价类 2 种,有效等价类是指对于程
序规格说明来说,是合理、有意义的输入数据构成的集合。利用有效等价类可以检验程序是
否实现了规格说明预先规定的功能和性能。有效等价类可以是一个,也可以是多个。
(
)
正确 错误
附录表 3 “机器维修”简化后的判定表
1
2
345
条 功率大于 50 马力吗?
Y
Y
YNN
件 维修记录不全吗?
Y
N
N -- --
运行超过 10 年吗?
-- Y
NYN
动 进行优先处理 作 作其他处理
X
X
X
X
X
所以 D 不对,此题中有 8 种规则,但最终会产生 5 条测试用例。
12 单选以下不属于因果图约束中的输入约束的是(
23 多选关于正交表实验法说法正确的是(
)
正交表选择测试用例的原理是正交表的 2 个特性:整齐可比性、均衡分散性。 正交实验法能够使用最少的测试过程获得最大的测试覆盖率。 正交表是非常常用的一种用例设计方法,常见的正交表数量比较丰富,可选性比较大。 当一个界面中有多个控件,每个控件有多个取值,而且组合数量比较庞大的时候,可以运用正交实验法。 使用正交实验法有其局限性,目前常见的正交表数量有限,即使是已有的正交表,基本也都要求每个控件中取值个数(水 平个数)相等,在实践中很难说遇到的全是这种情况。所以选项 C 说法错误。
逻辑覆盖法测试用例
一、实验目的掌握逻辑覆盖法设计测试用例、下载并安装功能测试工具且熟悉脚本的录制二、实验内容1. 下载Loa d Runn e r 工具,下载安装,录制邮箱登陆的脚本,并回放。
如需了解打开登录页面到登录成功的时间,要怎样修改脚本? 2. 用逻辑覆盖法设计下面问题的测试用例。
resul t =∑=||0N k k ,且resul t<max ,max 为一个常量值。
三、实验环境Windo w s XP 、LoadR u nner 四、实验步骤1、LoadR u nner 工具录制测试 一、截取代码如下:vuser _init () { web_u r l("aHR0c D ovL21haWw u MTI2L mNvb S 8=","URL=http://api.pc120.com/check u rl/aHR0c D ovL21haWw u MTI2L mNvb S 8=/?type=1&key=983333520", "Resou r ce=0", "RecCo n tent T ype=text/html", "Refer e r=", "Snaps h ot=t20.inf", "Mode=HTML",LAST);web_a d d_co o kie("logTy p e=df; DOMAI N =");web_a d d_co o kie("nts_m a il_u s er=zvlvj v :-1:1; DOMAI N ="); web_a d d_co o kie("NETEA S E_SS N =zvlvj v ; DOMAI N =");web_a d d_co o kie("P_INF O =zvlvj v @|1630361621|0|mail163|11&17|1;DOMAI N ="); web_a d d_co o kie("MAIL163_SS N =zvlvj v ; DOMAI N =");web_a d d_co o kie("logTy p e=df; DOMAI N =");web_ad d_coo kie("nts_ma il_us er=zvlvjv:-1:1; DOMAIN=");web_ad d_coo kie("NETEAS E_SSN=zvlvjv; DOMAIN=");web_ad d_coo kie("P_INFO=zvlvjv@|1630361621|0|mail163|11&17|1;DOMAIN=");web_ad d_coo kie("MAIL163_SSN=zvlvjv; DOMAIN=");web_ur l("","URL=/","Resour ce=0","RecCon tentT ype=text/html","Refere r=","Snapsh ot=t21.inf","Mode=HTML",EXTRAR ES,"Url=/index/2009/img/bgimg2.jpg", ENDITE M,"Url=/index/2009/img/2010co untdo wn.jpg", ENDITE M,"Url=/ggimg/163/img/091109_inde xbg_m enghu an.jpg", ENDITE M,"Url=/p/dm3sty le/js/0906031436/engine1.js", ENDITE M, LAST);lr_thi nk_ti me(20); /web_ur l("cmVzOi8vZTo lNWN0aGV3b3J-MSU1Y3RoZXd vcmxk LmV4Z S9OQV ZJRVJ SLkhU TSMtM jE0Nj Y5NzI wOCNo dHRwc zovL3JlZy4xNjMu Y29tL2xvZ2lucy5qc3A-dHlwZT0xJnB yb2R1Y3Q9b WFpbDEyNiZ1cmw9aHR0c DovL2VudHJ5Lm1h aWwuM TI2Lm NvbS9jZ2kv bnRlc2Rvb3I-aGlkJT NEMTA wMTAx MDIlM jZsaW dodHd laWdo dCUzR DElMj Z2","URL=http://api.pc120.com/checku rl/cmVzOi8vZTo lNWN0aGV3b3J-MSU1Y3RoZXd vcmxk LmV4Z S9OQV ZJRVJ SLkhU TSMtM jE0Nj Y5NzI wOCNo dHRwc zovL3JlZy4xNjMu Y29tL2xvZ2lucy5qc3A-dHlwZT0xJnB yb2R1Y3Q9b WFpbD EyNiZ1cmw9aHR0c DovL2VudHJ5Lm1h aWwuM TI2Lm NvbS9jZ2kv bn Rlc2Rvb3I-aGlkJT NEMTA wMTAx MDIlM jZsaW dodHd laWdo dCUzR DElMj Z2ZXJ pZnlj b29ra WUlM0QxJTI2bGFu Z3VhZ2UlM0QwJTI2c3R5bGUlM0QtMQ==/?type=1&key=983333520","Resour ce=0","RecCon tentT ype=text/html","Refere r=","Snapsh ot=t22.inf","Mode=HTML",EXTRAR ES,"Url=http://c.thewor /ErrorC onfig/sina.json?t=3814", "Refere r=", ENDITE M,"Url=http://c.thewor /img/ia_1.gif", "Refere r=", ENDITE M,LAST);web_ad d_coo kie("USERTR ACK=222.76.5.196.1259676376299376;DOMAIN=");web_ad d_coo kie("_ntes_nnid=62309a4e7ec f8d784d31c fc369e43fd8,0;DOMAIN=");web_ad d_coo kie("_ntes_nuid=62309a4e7ec f8d784d31c fc369e43fd8;DOMAIN=");web_ad d_coo kie("Provin ce=0590; DOMAIN=");web_ad d_coo kie("City=0591; DOMAIN=");web_ad d_coo kie("P_INFO=zvlvjv@|1630361621|0|mail163|11&17|1;DOMAIN=");web_ad d_coo kie("vjuids=-2cefe9a48.1256d53573d.0.fd6deb9a5a3e1;DOMAIN=");web_ad d_coo kie("vjlast=1630259596.1630259596.30; DOMAIN=");web_ad d_coo kie("ntes_u cc=; DOMAIN=");web_ad d_coo kie("NTES_U FC=2010000000000001100000000000000000000000000000000000000000000000; DOMAIN=");web_ad d_coo kie("isGd=0; DOMAIN=");web_ad d_coo kie("isFs=0; DOMAIN=");web_ad d_coo kie("MUSIC_BOX_S TATE=-1,,; DOMAIN=");web_ur l("logins.jsp","URL=https:///logins.jsp?type=1&produc t=mail163&url=http://entry/cgi/ntesdo or?hid%3D10010102%26ligh tweig ht%3D1%26veri fycoo kie%3D1% 26lang uage%3D0%26styl e%3D-1","Resour ce=0","RecCon tentT ype=text/html","Refere r=","Snapsh ot=t23.inf","Mode=HTML",EXTRAR ES,"Url=/img/newind ex/b_bg.gif","Refere r=https:///logins.jsp?type=1&produc t=mail163&url=http://entry/cgi/ntesdo or?hid%3D10010102%26ligh tweig ht%3D1%26veri fycoo kie%3D1% 26lang uage%3D0%26styl e%3D-1", ENDITE M,"Url=/img/newind ex/btn.gif","Refere r=https:///logins.jsp?type=1&produc t=mail163&url=http://entry/cgi/ntesdo or?hid%3D10010102%26ligh tweig ht%3D1%26veri fycoo kie%3D1% 26lang uage%3D0%26styl e%3D-1", ENDITE M,"Url=/img/newind ex/top_ti ti.gif","Refere r=https:///logins.jsp?type=1&produc t=mail163&url=http://entry/cgi/ntesdo or?hid%3D10010102%26ligh tweig ht%3D1%26veri fycoo kie%3D1% 26lang uage%3D0%26styl e%3D-1", ENDITE M,"Url=/img/imgRig ht-2.gif","Refere r=https:///logins.jsp?type=1&produc t=mail163&url=http://entry/cgi/ntesdo or?hid%3D10010102%26ligh tweig ht%3D1%26veri fycoo kie%3D1% 26lang uage%3D0%26styl e%3D-1", ENDITE M,"Url=/img/newind ex/t3.gif","Refere r=https:///logins.jsp?type=1&produc t=mail163&url=http://entry/cgi/ntesdo or?hid%3D10010102%26ligh tweig ht%3D1%26veri fycoo kie%3D1% 26lang uage%3D0%26styl e%3D-1", ENDITE M,"Url=/img/newind ex/logo_b g2.gif","Refere r=https:///logins.jsp?type=1&produc t=mail163&url=http://entry/cgi/ntesdo or?hid%3D10010102%26ligh tweig ht%3D1%26veri fycoo kie%3D1% 26lang uage%3D0%26styl e%3D-1", ENDITE M,"Url=/img/newind ex/t2.gif","Refere r=https:///logins.jsp?type=1&produc t=mail163&url=http://entry/cgi/ntesdo or?hid%3D10010102%26ligh tweig ht%3D1%26veri fycoo kie%3D1% 26lang uage%3D0%26styl e%3D-1", ENDITE M,LAST);lr_thi nk_ti me(17);web_su bmit_data("logins.jsp_2","Action=https:///logins.jsp","Method=POST","RecCon tentT ype=text/html","Refere r=https:///logins.jsp?type=1&produc t=mail163&url=http://e ntry/cgi/ntesdo or?hid%3D10010102%26ligh tweig ht%3D1%26veri fycoo kie% 3D1%26lang uage%3D0%26styl e%3D-1","Snapsh ot=t24.inf","Mode=HTML",ITEMDA TA,"Name=url","Value=http://entry/cgi/ntesdo or?hid=10010102&lightw eight=1&verify cooki e=1&langua ge=0&style=-1", ENDITE M,"Name=type", "Value=1", ENDITE M,"Name=produc t", "Value=mail163", ENDITE M,"Name=savelo gin", "Value=", ENDITE M,"Name=outfox er", "Value=", ENDITE M,"Name=domain s", "Value=", ENDITE M,"Name=sysche ckcod e", "Value=ed7cac d7d7c9c92b769ed4cce84771c67d6415dd", ENDITE M,"Name=userna me", "Value=zvlvjv@", ENDITE M,"Name=passwo rd", "Value=1232320", ENDITE M,"Name=Submit", "Value=", ENDITE M,LAST);}2、逻辑覆盖法设计一、根据所给的条件画出数据注流程图,如下所示:简化路径(1)语句覆盖要实现语句覆盖,覆盖程序中的所有可执行语句。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验重点:
掌握各种逻辑覆盖法测试用例的编写。
实验难点:
程序流程图的给出及逻辑覆盖法测试用例的编写。
讲授主要内容:
安排上机内容如下:
编写一个程序,循环从标准输入读入某雇员的周工作时间(以小时计)和每小时的工资数,计算并输出他的工资。若雇员周工作小时超过40小时,则超过部分按原工资的1.5倍的加班工资来计算。若雇员周工作小时超过50小时,则超过50的部分按原工资的3倍的加班工资来计算,而40到50小时的工资仍按照原工资的1.5倍的加班工资来计算。
else if (hours>50)
payment=40*wage+10*1.5*wage+(hours-50)*3*wage;
cout<<"The final payment are:"<<payment;
return payment;
}
要求:
1、编写程序,画出程序的流程图;
2、分析本测试程序共有几条路径?分别给出每一条路径。
3、分别列表编写逻辑覆盖法各种方法(语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖)的测试用例(需做相应的必要说明),并测试该程序,给出实验结果。
本次课主体实验方式、方法:
指导上机利用逻辑覆盖法设计测试用例。
测试用例
x
执行路径
覆盖条件
覆盖组合号
用例1
40
OBCE
T1,T2
1,3
用例2
55
OAE
-T1,-T2
2,4
路径覆盖方法
测试用例
x
执行路径
用例1
40
OBCE
用例2
55
OAE
2.程序参考:
#include <iostream.h>
double main()
{
int hours;
doubl
执行路径
覆盖条件
用例1
40
OBCE
T1,T2
用例2
55
OAE
-T1,-T2
判断-条件覆盖
测试用例
x
执行路径
覆盖条件
X<=40
x>50
用例1
40
OBCE
T1,T2
真
真
用例2
55
OAE
-T1,-T2
假
假
条件组合覆盖
X<=40为真 记为T1
x>40为假 记为-T1
x>50为真 记为T2
x>50为假 记为-T2
cout<<"please input hours and per hour pay:";
cin>>hours>>wage;
if (hours<40)
payment=hours*wage ;
else if ((hours>40) && (hours<=50))
payment=40*wage+(hours-40)*1.5*wage;
布置作业
实验后记
提交方式:以“学号_姓名”命名的word文档。
参考答案
1.分别用白盒测试方法中
N
Y
Y
N
语句覆盖
x
路径
1
45
OBCE
2
55
OBDE
判断覆盖
x
路径
1
40
OAE
2
45
OBCE
3
55
OBDE
条件覆盖
X<=40为真 记为T1
x>40为假 记为-T1
x>50为真 记为T2
x>50为假 记为-T2