您好, 访客   登录/注册

基于Python的高职软件测试实践课设计

来源:用户上传      作者:

  摘要:Python是人工智能领域重要编程语言之一,是高职计算机相关专业一门新兴课程。软件测试课程理论抽象、实践操作性较强,使用Python为软件测试课程设计教学案例,加深学生对软件测试重要概念的理解;同时,使用Python设计典型的测试用例,培养学生动手实践能力,提高教学效果。
  关键词:软件测试;Python;课程设计
  中图分类号:TP311;G712       文献标识码:A
  文章编号:1009-3044(2020)02-0095-02
  2018年4月,教育部印发了《高等学校人工智能创新行动计划》,提出:加强人工智能领域专业建设。推进‘新工科’建设,形成‘人工智能+X’复合专业培养新模式。根据《普通高等学校高等职业教育(专科)专业设置管理办法》,教育部确定了“人工智能技术服务专业”为2019年度新增专业。该专业人才就业方向“从事人工智能产品的开发与测试、数据处理、系统运维、产品营销、技术支持等工作。”高等职业教育阶段培养社会应用型人才为主,计算机及相关专业在课程设置、教学设计、实训实践等环节应积极向人工智能方向靠拢。随着人工智能行业的迅速发展,人工智能主流语言Python语言也成为高等职业院校人工智能专业的必修课之一。
  在软件开发项目中,软件测试工作量往往占软件开发总工作量的40%以上[1]。而在软件开发的总成本中,用在测试上的开销要占30%~50%。《軟件测试》课程是一门理论抽象、实践性很强的计算机专业课程。课程体系设计时,应融入人工智能的理论及实践环节的操作[2]。
  1 基于Python的软件测试课程教学目标
  基于Python的软件测试教学实践课,需要学生已经学习并且基本掌握Python语言编译运行、能够编写结构化程序代码、调用模块、理解面向对象的思想。
  Python语言有强大的编程能力、良好的可移植性以及丰富的类库。Python在软件测试中可以用于编写测试用例、自动化测试模块调用。
  在软件测试课程中,渗透Python语言的模块调用、编写测试用例,使学生在掌握软件测试基本测试方法、测试步骤的同时,巩固已学的Python知识,并加以应用。
  2 Python软件自动化测试
  软件测试课程中,十分重视模块独立性,强调“高内聚、低耦合”。在模块独立性讲解过程中,引入Python语言自带的测试模块帮助学生理解模块的概念及应用。例如,C++语言单元测试由CPPUnit类实现,Python语言由PyUnit模块实现[3]。PyUnit是基于JUnit和XUnit开发的单元测试框架。该框架提供了统一的方法测试由Python语言开发的软件,同时,提供了图形用户界面,提高单元测试的可用性。
  白盒测试中,根据测试程度由弱到强,分别有:语句覆盖、判断覆盖、条件覆盖、判断/条件覆盖、条件组合覆盖、路径覆盖。Python程序使用Coverage.py工具进行代码覆盖率测试。该工具提示程序已经执行的部分,然后对数据进行分析,确定未被执行的代码。根据未被执行的程序,增加未覆盖语句的测试用例,提高了软件测试的质量。
  3 软件测试Python实践课设计
  三角形问题是软件测试中的一个典型案例,使用Python设计测试用例具有较强的教学实践意义。
  3.1 三角形分类程序的测试方案的设计
  读入三个整数值代表三角形的三条边的长度,程序判断这三个值能否构成三角形,如果能够,则输出三角形是等边、等腰或任意三角形的分类信息。综合使用边界值分析、等价类划分和错误推测等技术为此程序设计测试用例。第一步,确定测试策略。由于被测程序已有明确的要求,判断能否构成三角形,如能构成,则再判断能构成等边、等腰或任意三角形哪一种。首先运用黑盒测试法设计测试用例,然后再用白盒测试法验证其完整性,必要时再补充测试用例。第二步,在黑盒测试中首先要用等价类划分法划分输入等价类,然后用边值分析法和错误推测法作补充。 测试用例设计如表1所示:
  3.2 三角形问题的分析
  三角形问题接受三个整数a、b和c作为输入,作为三角形的边。程序的输出是:等边三角形、等腰三角形、不等边三角形和非三角形。整数a、b和c必须同时满足以下条件:f1:a>=1、f2:b>=1、f3:c>=1、f4:a<b+c、f5:b<a+c、f6:c<a+b。如果输入值没有同时满足条件f1、f2、f3,提示“输入有误,请重新输入。”如果输入值满足条件f1、f2、f3,但是不能同时满足条件f4、f5、f6,则程序输出“非三角形”。如果输入值同时满足以上所有条件,则给出三种的输出结果之一:1)如果三条边相等,则程序输出“等边三角形”;2)如果两条边相等,则程序输出“等腰三角形”;3)如果没有两条边相等,则程序输出“不等边三角形”。
  3.3 三角形问题的Python代码实现
  #!/usr/bin/python
  # -*- coding: UTF-8 -*-
  flag=False
  IsATriangle = False
  ’Step1: Input a,b,c
  a = int(input('a='))
  b = int(input('b='))
  c = int(input('c='))
  if (a>=1) and (b>=1) and (c>=1):
  flag = True
  ’Step2: Isnot a Triangle?
  if (a<b+c) and (b<a+c) and (c<a+b):   IsATriangle = True
  ’Step3: Determine Triangle Type
  if flag == False:
  print (“输入有误,请重新输入”)
  if IsATriangle == False:
  print (“非三角形”)
  if flag and IsATriangle:
  if (a==b) and (b==c):
  print (“等边三角形”)
  elif (a!=b)and (b!=c) and (c!=a):
  print (“不等边三角形”)
  else:
  print (“等腰三角形”)
  4 软件测试Python实践课教学效果
  如下图1~图5,是课堂教学中学生使用Python语言完成测试情况,分别是:等边三角形、等腰三角形、不等边三角形、非三角形、输入有误这五种情况。
  教学过程中,将学生分成4~5组,每组学生负责其中一组测试结果。组长组织讨论,组内同学协调完成一组实验,并由其中一位同学代表进行总结或体会分享。学生动手实践后体会及总结主要有以下四点:第一、测试用例设计的原则,黑盒测试的有效等价类和无效等价类的设计;第二、Python编程及调试中遇到的问题;第三、Python语言模块化在软件测试中的应用;第四、人工智能背景下,软件测试的新变化。
  通过实践交流学习,大家对软件测试用例有了更深刻的了解。比较纯理论教学,引入Python实践环节,学生对课程的参与度有所提高,学生掌握新知识、新技能的兴趣较强。
  5 结束语
  软件测试质量的高低直接关系项目的成败,测试质量越高,就能越早发现问题,减少后期解决问题的成本。Python语言功能强大,具有很好的跨平台性,可以运用于很多领域的测试:数据库测试、网页测试、性能测试等。
  人工智能时代的到来,计算机专业软件测试课程应顺应时代发展需求,改进教学内容、增加教学实践环节,提高学生的动手实践能力。
  参考文献:
  [1] Jorgensen P C. Software Testing[M]. 4 版. 北京: 机械工业出版社, 2017.
  [2] 朱少民. 軟件测试课程的问题驱动教学模式探索[J]. 中国大学教学, 2018(10):32-36.
  [3] 朱少民. 全程软件测试[M]. 北京: 人民邮电出版社, 2019.
  【通联编辑:谢媛媛】
转载注明来源:https://www.xzbu.com/8/view-15128078.htm