浅谈手机软件测试用例设计方法

简介:
手机 产品和用户交互非常紧密,手机的软件质量就显得尤其重要。要使最终用户对手机软件感到满意,必须要在手机软件发布之前进行充分的 测试 。而不完全、不彻底是 软件测试 的致命缺陷,但是我们又不可能进行穷举测试,任何程序只能进行少量而有限的测试。为了节省时间和资源,提高测试效率,我们必须要从数量极大的可用测试数据中精心挑选出具有代表性或者特殊性的测试数据进行测试。 测试用例 在此情况下产生。
测试用例是为特定的目的而设计的一组测试输入、执行条件和预期的结果。简单地说,测试用例就是设计一个场景,使软件程序在这种场景下,必须能够正常运行并且产生程序所设计的执行结果。

  Grenford J. Myers在《The Art of Software Testing》一书中提出:一个好的测试用例是指很可能找到迄今为止尚未发现的错误的测试,由此可见测试用例设计工作在 整个测试过程中的重要地位。测试用例设计的好坏直接影响到测试的效果。目前很多公司的测试用例都是依据需求或者规范规格,测试用例设计人员根据经验来写测 试用例,这种情况就会导致测试用例覆盖面不全、测试用例规划不合理,甚至存在测试用例冗余的情况。测试用例覆盖面不全会导致出现漏测少测,将问题直接流向 用户;测试用例规划不合理、测试用例冗余会造成人力浪费,导致测试效率低下。因此不能只凭借一些主观或直观的想法来设计测试用例,应该以一些比较成熟的测 试用例设计方法为指导,再加上设计人员个人的经验积累来设计测试用例。

  目前业界比较成熟的测试用例设计方法主要有:等价类划分法,边界值分析法,错误推测法,因果图法,正交实验设计法等。

  等价类划分法

   等价类划分法是测试用例设计中一种重要而常用的设计方法,它将不能穷举的测试用例进行合理分类,从而保证设计出来的测试用例具有完整性和代表性。等价类 划分是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。

  边界值分析法

   边界值分析法就是对输入或输出的边界值进行测试设计的一种方法。通常边界值分析法是作为对等价类划分法的补充。长期的测试工作经验告诉我们,大量的错误 发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。使用边界值分析方法设计测试用 例,首先应确定边界情况。应当选取正好等于,刚刚大于或刚刚小于边界的值而不是中间值作为测试数据。

  错误推测法

  错误推测法是指在测试程序时,人们可以根据经验或直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的测试用例的方法。错误推测方法的基本思想是列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例。例如, 在单元测试时曾列出的许多在模块中常见的错误、以前产品测试中曾经发现的错误、输入数据和输出数据为0的情况、输入表格为空格或输入表格只有一行等。这些都是容易发生错误的情况,可选择这些情况下的例子作为测试用例。

  因果图法

   因果图法是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。等价类划分法和边界值分析方法都 是着重考虑单个输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件 组合起来可能出错的情况却被忽视了。而如果在测试时必须考虑输入条件的各种组合,则可能的组合数目将是天文数字,因此必须考虑采用一种适合于描述多种条件 的组合、相应产生多个动作的形式来进行测试用例的设计,这就需要利用因果图来设计。

  正交试验设计法

   正交试验设计法。利用因果图来设计测试用例时,作为输入条件的原因与输出结果之间的因果关系,往往因果关系非常庞大,以至于据此因果图而得到的测试用例 数目多的惊人,给软件测试带来沉重的负担。为了有效地、合理地减少测试的工时与费用,可利用正交试验设计方法进行测试用例的设计。正交试验设计方法依据 Galois理论, 它是根据正交性,按照 “均匀分散,齐整可比”的特点从大量的(试验)数据(测试例)中挑选适量的,有代表性的点(例),从而合理地安排试验(测试)的一种科学实验设计方法。它 简单易行,计算表格化,使用者能够迅速掌握,是一种高效率、快速、经济的试验设计方法。

  以上这些方法各有优缺点,在设计过程中可以叠加使用,取长补短,使得设计出来的测试用例规划合理,裁剪得当,既能保证覆盖面,又能保证测试的效率,所以在测试用例的设计过程中得到了广泛的应用。

  OPhone测试团队在测试用例的设计阶段充分运用这些方法,在测试用例的设计过程中极大的减少主观因素的影响,并在保证测试用例完备性和有效性的前提下,对测试用例进行有效裁剪,减少无效测试用例和冗余,在很大程度上提高了测试效率,从根本上确保测试的质量。


本文出自seven的测试人生公众号最新内容请见作者的GitHub页:http://qaseven.github.io/

目录
相关文章
|
20天前
|
Java
IDEA快捷测试方法可用性
IDEA快捷测试方法可用性
17 0
|
23天前
|
数据可视化 测试技术
深入理解软件测试中的风险评估方法
【4月更文挑战第19天】 在软件开发的生命周期中,风险评估是确保产品质量和项目成功的关键步骤。本文将探讨几种常用的软件测试风险评估方法,包括定性分析和定量分析,并讨论它们在不同类型的测试环境中的应用。通过案例研究和最佳实践,我们将展示如何有效识别、评估和管理测试过程中可能遇到的风险,以及如何制定相应的缓解策略,以优化资源分配和提高测试效率。
|
17天前
|
测试技术 API Python
Appium控件交互策略:优化自动化测试效率的关键方法
该文介绍了如何使用Selenium与APP进行交互,包括点击、输入和状态判断等操作。例如,通过element.click()点击控件,element.send_keys()输入文本,以及element.is_displayed()检查元素是否可见。还展示了如何获取元素属性,如resource-id、text和class,并提供了Python代码示例来定位并操作APP元素,如滑动条的显示、可点击性检测及点击滑动条中心位置。在编写测试脚本时,应注意元素定位和状态验证以确保测试稳定性。
20 1
|
1天前
|
XML 存储 测试技术
深入理解自动化测试中的数据驱动方法
【5月更文挑战第11天】 在软件测试领域,数据驱动测试(DDT)是一种高效的测试策略,它允许测试人员通过外部数据源控制测试用例的输入和输出。这种方法促进了测试用例的参数化,并提高了测试的灵活性和可维护性。本文将探讨数据驱动测试的核心概念、实施步骤以及使用Python进行数据驱动测试的实践案例,旨在为读者提供一种结构化的方法来设计和执行复杂的测试场景。
|
5天前
|
存储 测试技术 数据库
深入理解自动化测试中的数据驱动方法
【5月更文挑战第7天】 在快速发展的软件行业中,为了提升测试效率和测试覆盖率,自动化测试已经成为一个不可或缺的部分。数据驱动测试(DDT)是一种独特的自动化测试方法,它允许分离测试逻辑和测试数据,从而使得测试案例可以更加灵活和有效地进行管理。本文将探讨数据驱动测试的核心概念、实施步骤及其在实际应用中的优势与挑战。通过对多个案例的分析,我们旨在提供一个全面的指南,帮助软件测试人员理解和运用数据驱动方法以优化他们的自动化测试策略。
|
12天前
|
存储 大数据 测试技术
矢量数据库的性能测试与评估方法
【4月更文挑战第30天】本文探讨了矢量数据库的性能测试与评估方法,强调其在大数据和AI时代的重要性。文中介绍了负载测试、压力测试、容量测试、功能测试和稳定性测试五大评估方法,以及实施步骤,包括确定测试目标、设计用例、准备环境、执行测试和分析结果。这些方法有助于确保数据库的稳定性和高效性,推动技术发展。
|
18天前
|
API 开发者
免费邮箱API发送邮件测试调试的方法和步骤
本文介绍了使用免费邮箱API如aoksend、Mailgun、SMTP2GO发送邮件的测试调试步骤:选择合适的API,获取访问密钥,配置邮件参数,编写测试代码,调试和测试,查看发送日志,以及优化改进邮件发送功能,确保其稳定运行。
|
20天前
|
XML 测试技术 数据库
深入理解自动化测试中的数据驱动方法
【4月更文挑战第23天】 在软件测试领域,为了提高测试效率和质量,自动化测试已成为不可或缺的实践。数据驱动测试(DDT)作为一种高效的自动化测试策略,它通过将测试逻辑与测试数据分离,允许测试人员以更灵活、可维护的方式设计用例。本文将探讨数据驱动方法的基本原理,实现方式以及在实际项目中的应用案例,旨在帮助读者深入理解并有效运用数据驱动方法来提升自动化测试的效率和质量。
|
1月前
|
运维 测试技术
实用指南:使用Pytest Allure测试框架添加用例失败截图
本文介绍了如何在使用`allure+pytest`进行软件测试时,通过`pytest_runtest_makereport`钩子函数自动捕获失败用例的截图。在`conftest.py`中定义钩子,当用例失败时,保存截图并附加到Allure测试报告中。测试代码示例展示了登录豆瓣的场景,测试失败时会自动生成截图。这种方法有助于快速理解和解决测试问题,提升测试效率和软件质量。
18 0
|
1月前
|
自然语言处理 测试技术 持续交付
现代软件测试方法与挑战
传统软件测试方法在当前快速发展的软件开发环境下面临着诸多挑战,因此,现代软件测试方法的探索与应用显得尤为重要。本文将介绍几种现代软件测试方法,并探讨其在应对软件开发挑战方面的作用。
12 0