广州番禺职业技术学院

软件测试

图片
课程概述

本课程为高校和社会学习者而设置,培养软件测试工程师、软件设计开发工程师,准备从事软件测试领域技术、管理各项测试专业工作的从业者。课程既为在校生达到软件测试专业领域‘入门’水平和储备专业深造基础,也为软件测试从业者提升职业能力。

    软件测试是软件工程、软件技术等专业的重要课程。课程内容主要包含:软件测试知识概要;经典的软件测试技术原理、方法及应用;软件测试的策略及过程;软件测试管理;软件测试工程实践(组件测试、功能测试、非功能测试、安全测试等);软件测试技术在云计算、移动应用等领域的应用。

    课程突出MOOC学习的特点,将理论知识体系与技术应用划分为若干知识点、技能点,体现学习资源的‘颗粒化’和相对‘独立性’,这样,既能系统性学习,也可选择性学习,达到灵活、多样,‘各取所需’,以期最大化实现“能学”和资源共享的课程规划设计理念。

    课程学习主要有理论讲解、分析阐述、知识巩固和技术实践,还包括学习讨论、互动交流及学习成果检验考核。

    课程64学时(不含课外学时)。

授课目标
1. 深入了解和认识软件测试的理论知识 2. 全面学习软件测试经典技术和策略方法 3. 掌握 软件测试技术和策略的应用与实践 4. 培养专业技能和满足测试职业工作需求
证书要求

通过视频学习,研读文档,单元测试、互评作业、讨论交流、课程考试,达到课程考核要求,可获课程主讲教师签名颁发的合格证书或秀证书。

课程学习总成绩由各项评分汇总得出:

单元测验                45/100

单元作业(含测试实践)  5/100

课程考试                40/100

交流讨论                10/100

         课程总分达到60分以上者,可获得本课程合格证书,课程总分达到80分以上者,可获得本课程优秀证书。

预备知识

       课程学习将联系和运用软件系统及程序设计(Java、C、脚本)等知识和编程能力,较多涉及软件工程、数据库系统、Web应用、移动应用、网络与信息安全、大数据、云计算等领域,同时,也常常关联测试项目的业务知识与流程等。因此,学习本课程对软件工程、软件技术专业相关课程的知识具备是必要的,这将减少学习障碍,以获得更好学习效果。当然,通过课前、课中及课后的有效补充,同样可达良好学习成效的目标。

授课大纲

一、课程前言

    软件测试是软件工程的重要组成。软件测试的本质是通过各种技术、策略和方法,寻找软件中的缺陷、错误,并对软件系统(产品)的质量进行度量,以保证软件的可靠性与功效性。软件测试存在于软件的全生命周期。

    软件测试是一项创造性的工作,实践与创新都需要较深厚的专业知识与较强的技术能力,通常需要经过系统化的学习和能力的培养,本课程为培养软件测试领域专业技术与管理人才的职业需求开设。

二、目标任务

    本课程将学习软件测试的主要理论知识、基本技术方法和基本工程应用。通过课程内容组织与实施,达到认识和理解其主要理论,掌握基本测试技术,运用于各软件领域的实践。为更深入学习新测试知识,掌握更复杂测试技术奠定良好基础。

三、教学内容

    教学内容包含软件测试知识理论,经典测试技术,工程应用方法,技术标准与规范等。课程系统全面,体系完整,逻辑层次清晰,并注重工程方法论的讲授,期望通过知识、技能点的学习形成系统知识链,通过技术分析及应用掌握,形成一定的工程能力。本课程共分为8个部分,每部分(章、节)的内容相对独立,其间在逻辑上并非完全相关。

    单元一:软件测试概要

            1.1 软件测试的产生与演进

            1.2 软件测试概要

            1.3 软件测试基本策略与模式

            1.4 软件测试模型分析

            1.5 软件生命周期与通用测试流程

    单元二:经典软件测试技术

            2.1 静态测试概要

            2.2 静态测试-评审

            2.3 静态测试-数据流分析

            2.4 静态测试-控制流分析

            2.5 软件复杂度及度量

            2.6 基于结构的测试-逻辑覆盖测试

            2.7 基于结构的测试-路径测试

            2.8 基于规格说明的测试-等价类划分法

            2.9 基于规格说明的测试-边界值分析

            2.10 基于规格说明的测试-因果图/决策表法

            2.11 基于规格说明的测试- 配对测试法

            2.12 基于规格说明的测试-分类树法

            2.13 基于规格说明的测试- 状态转换法

    单元三:软件测试策略与过程-1

            3.1 自动化测试

            3.2 软件应用类型的测试-基于Web应用系统测试

            3.3 软件应用类型的测试-基于GUI的测试

            3.4 软件应用类型的测试-移动应用测试

    单元四  软件测试策略与过程-2

            4.1 基于经验的测试

            4.2 基于风险的测试

    单元五  软件测试策略与过程-3

            5.1 软件质量特性的测试- 软件质量体系

            5.2 软件质量特性的测试- 功能测试

            5.3 软件质量特性的测试- 非功能测试

            5.4 软件质量特性的测试- 安全性测试

    单元六 软件测试策略与过程-4

            6.1 基于强制发掘安全漏洞的模糊测试

            6.2 基于Web应用安全性测试

            6.3 Web应用安全性测试工程实践

    单元七 软件测试策略与过程-5

            7.1 基于云计算的测试

            7.2 基于模型的测试

    单元八 软件测试管理

            8.1 概要与框架

            8.2 测试组织管理

            8.3 测试计划管理

            8.4 测试过程管理

四、学习要求

    实施线上课堂教学(知识与技术)与线下实践教学(应用与工程)结合的学习理念和教学策略。获得有效学习的标准:能正确认识与理解软件测试概念与要素、软件质量概念与标准度量方法、软件生命周期中各层级测试类别方法及过程;熟悉各类测试过程及测试准则;掌握静态测试与动态测试的适用领域和实现技术;能分析和解决测试工程中的各种具体问题;熟悉软件测试的主要技术标准和工程规范,并在测试实践中遵循和运用。

    完成课程各环节及学习任务:听讲视频,阅读文档,提交作业,讨论交流,项目实践,参加测验及课程考试,考核合格,可获课程学习证书。

    学习者也可共享本课程内容,达到‘各取所需’学习目的,并非一定参加课程各种考核。

参考资料

1. 《软件测试教程(第3版)》,贺平,电子工业出版社,北京,2014.8   ISBN 978-7-121-23818-5

       配套本课程的主教材。该书内容包含本课程约70%的教学内容,建议使用。

 

2.课程学习及实践会用到多种软件测试工具(平台),限于商业化问题,将尽可能列出具同类功能和属性的开源工具。

3.课程学习内容相关参考资料和技术文献,或给出推荐书目与文献资料。

常见问题

Q1:学习者常常会问,软件测试课程怎样学和怎样才能学得好 ?

A1:这个问题比较大,涉及面广,建议从以下几方面把握:

  -学习软件测试需具备软件技术领域的一定基本知识和技能(实践能力)。最好能在学习课程前作以下知识准备:软件工程、操作系统、互联网、移动应用、信息安全等领域的相关知识。若具备程序设计与编程方面的知识和技能,学习的收效将更好。

  -软件测试实际上是一项很有创造性的工作。它并不单纯体现为重复性特点,所有知识领会与技术掌握都需要良好的逻辑思维、分析辨识、以及组织规划能力,这在课程学习后期及未来实际工作的成长中尤为重要。

  -目前软件测试基本都涉及采用自动化测试策略运行。仅学会使用测试工具的操作就以为可完成任务,实际上是很幼稚、并不真切了解测试本质的不正确想法。自动化测试及工具的完美运用需要人的操控,而运用于测试问题分析、测试对象的确立、测试规划和测试用例的设计(场景)都与测试思维、测试知识和测试技术息息相关。自动化测试的真正掌握并有效运用,并非易事。这在课程学习中一定会有深切感受。

  -软件测试本质是采用各种技术措施和方法对软件存在的缺陷、错误进行探寻、分析的过程,同时也对软件质量特性进行度量的行为。面对成千上万、甚至几百万行程序组成的软件系统,要找出其中存在的各种缺陷、错误,绝非易事。测试的技术原理很相似于医生给病人看病诊断、发现病情和寻求病因,而对软件质量的度量概念又很类似于人的体检过程。通过各种医学技术手段和方法,对预定检查科目逐项检查和测定(试),最终得出综合的体检报告,指出哪些方面存在病症或不良体症,哪些生理指标超标等等。这里,体检过程不仅要涉及各种医疗检测仪器的掌握使用,而更需要汇集医学的各科专业知识。我们有时似认为医生们操作这些检测(试)仪器并不很复杂、也不难掌握,但要从检测结果中发现病症问题就没有那么简单了。软件测试同样需要各种测试工具,仅仅简单会用测试工具则是远远不够的,仍将解决不了什么实际测试问题。因此,学习和运用好测试技术,不仅要‘知其然’,更要‘知其所以然’。深入知识学习和系统掌握方法对解决工程测试实际问题是完全必要的,这是重要的基础。

  -软件测试,知名释义,归根到底,是需要实践的学科。测试是一项项活动或过程,已具备工程特征,并按照工程的方法论去考虑问题和策划实际过程。所以,本课程会有大量测试工程的内容,如工程技术规范,工程需求、工程设计、工程实施和工程管理等问题,诸多影响工程的因素。掌握工程方法,需要实践和体会,并反复思考来理解和认识理论,从而为解决实际问题建立基础,自觉思维和遵守技术规范和工程标准,形成测试思维,并以工程方法制定策略。这不仅能参与和解决实际测试问题,也对今后深入学习和发展奠定了基础。

   -学习者应明确本课程所介绍的每个实例或项目,基本都为学习活动与工程体验的问题载体。我们追求“举一反三”的能力,而不仅有“西康的牦牛,只认一个毡房”的肤浅认识。这个目标将需要通过认真读书(视听),勤于思考,反复实践(完成作业和项目),参加课程测验,才可能达到。  

Q2:需要使用特定软件测试工具才能完成课程的作业与项目任务吗

A2当前针对每类测试,基本上都能找到相应测试工具或支撑平台。本课程演示会使用一些(特定的)测试工具,但学习者也可运用其他测试工具来完成课程作业和实践项目。这些工具包括但不限于本课程所列举和应用的。

Q3:每周会发布多少学习资源,需要花多少时间学习和掌握

A3:大约按照40分钟/每课时设计学习活动,相当于面授课堂的50分钟。发布的教学资源(视频、文档等)一般会达到或超出这个范围。传统面授,可能需回顾以往授课,解析问题,或即时性交互等,这都需要消耗时间,而线上课程这些环节都不复存在。因此,学习本课程需1.5-2倍的课时安排,这里包括听讲视频、看资料、完成作业、实践活动及复习环节,每周 5-6小时的负荷,需要学习者进行时间管理。

Q4:学完课程是否可达到某种软件测试专业资格认证的水平,如 ISQTB(国际软件测试认证)证书?

A4ISTQB证书是目前全球120多个国家认可的最具权威的软件测试工程师资格证书,有初、高、专家级等多个级别和测试领域专项的认证,并不断更新,‘与时俱进’,可以说认证在全球范围内软件测试专业领域通行。本课程内容涵盖了ISTQB-L(基础级)证书的绝大部分内容,并在测试应用和实践方面则远超出基础级证书的内涵要求。基础级认证也是申请ISTQB所有更高级别认证的必要条件。