《AngularJS深度剖析与最佳实践》一2.13 端到端测试

简介:

本节书摘来自华章出版社《AngularJS深度剖析与最佳实践》一书中的第2章,第2.13节,作者 雪狼 破狼 彭洪伟,更多章节内容可以访问云栖社区“华章计算机”公众号查看

2.13 端到端测试

端到端测试(e2e test),也称为场景测试,它模拟的是用户真实的操作场景:
用户打开http://xxx地址。
在搜索框中输入了abc。
然后点击其后的搜索按钮。
这时候,他期望看到一个列表,列出所有在标题的任意位置包含了字符串abc的条目,并且每条结果中的abc这三个字母被高亮。
所谓端到端,也就是一端是浏览器,另一端是服务器,这个测试贯通了前后端,具有近似于验收测试的价值。
端到端测试不是什么新技术,它在前后端分离架构盛行之前就已经被广泛采用了,比如Selenium,而且Selenium也同样可应用于Angular中。
Angular的端到端测试工具称为Protractor,事实上,它就是基于Selenium的,在Selenium的基础上,它增加了一些Angular特有的元素选取方式,如根据ng-model选取元素等。
我的建议是,除非你所在的开发组织已经把Angular作为唯一的前端选项,否则请使用Selenium中传统的函数,而不要使用Protractor特有的根据ng-model选取元素等函数,这将让你们的测试独立于前端技术栈而被复用。
在我的工程实践中,只会使用id、class等少数查阅方式,而不会根据ng-model等进行查阅。并且,由于Angular的特点,被测试程序中可以不用任何id,所以,我们可以完全把id留给测试人员使用。如果写测试的人员有权修改源码,那么他/她可以自由的添加、删除id,而不用担心破坏了程序的逻辑和样式。遵循这个约定,可以让开发与测试的协同更加有效。
这里不展开讲解,只把我在种子工程中写的一些代码加上注释供大家自行研究:
1)pages/HomePage.js

// 这是一个页面对象,用来封装页面中的元素和操作,以简化规约代码,并提供一定的变更隔离
module.exports = function() {
    this.title = function() {
        // browser对象封装一组用来访问浏览器属性的函数
        return browser.getTitle();
    };
    // 根据id查找元素
    this.name = element(by.id('name'));
    this.nameEcho = element(by.id('name-echo'));
    this.get = function() {
        // 控制浏览器访问特定地址
        browser.get('http://localhost:5000/#/');
    };
};

2)demoSpec.js

// 取得页面对象
var HomePage = require('./pages/HomePage');

describe('e2e范例,如果修改了首页,请修改本测试 >', function () {
    var homePage;
    // 所有测试语句执行之前,先在浏览器中打开它
    beforeEach(function () {
        homePage = new HomePage();
        homePage.get();
    });

    it('默认的标题是Showcase', function() {
        expect(homePage.title()).toBe('Showcase');
    });
    it('输入用户名后应该回显', function() {
        // 检查初始状态是否符合预期
        expect(homePage.nameEcho.getText()).toBe('Hello,');
        // 模拟用户输入
        homePage.name.sendKeys('test');
        // 检查操作后状态是否符合预期
        expect(homePage.nameEcho.getText()).toBe('Hello,test');
    });
});
相关文章
|
1月前
|
机器学习/深度学习 人工智能 监控
软件测试中的自动化测试策略与最佳实践##
在当今快速发展的软件行业中,自动化测试已成为确保软件质量和加速产品上市的关键工具。本文将探讨自动化测试的重要性,分析不同类型的自动化测试工具和框架,并深入讨论实施自动化测试的最佳实践。通过案例研究和数据分析,我们将揭示如何有效整合自动化测试到软件开发生命周期中,以及它如何帮助团队提高测试效率和覆盖率。 ##
58 1
|
2月前
|
设计模式 前端开发 JavaScript
自动化测试框架设计原则与最佳实践####
本文深入探讨了构建高效、可维护的自动化测试框架的核心原则与策略,旨在为软件测试工程师提供一套系统性的方法指南。通过分析常见误区,结合行业案例,阐述了如何根据项目特性定制自动化策略,优化测试流程,提升测试覆盖率与执行效率。 ####
69 6
|
2月前
|
存储 监控 测试技术
测试脚本编写和维护的最佳实践有哪些?
测试脚本编写和维护的最佳实践有哪些?
124 50
|
1月前
|
监控 数据管理 测试技术
API接口自动化测试深度解析与最佳实践指南
本文详细介绍了API接口自动化测试的重要性、核心概念及实施步骤,强调了从明确测试目标、选择合适工具、编写高质量测试用例到构建稳定测试环境、执行自动化测试、分析测试结果、回归测试及集成CI/CD流程的全过程,旨在为开发者提供一套全面的技术指南,确保API的高质量与稳定性。
|
1月前
|
数据管理 测试技术 持续交付
软件测试中的自动化测试策略与最佳实践
在当今快速迭代的软件开发环境中,自动化测试已成为确保软件质量和加速产品上市的关键手段。本文旨在探讨软件测试中的自动化测试策略,包括选择合适的自动化测试工具、构建有效的自动化测试框架以及实施持续集成和持续部署(CI/CD)。通过分析自动化测试的最佳实践,本文为软件开发团队提供了一系列实用的指南,以优化测试流程、提高测试效率并减少人为错误。
65 4
|
6月前
|
机器学习/深度学习 监控 算法
自动化测试框架的演进与最佳实践
随着软件行业的迅猛发展,自动化测试已成为确保软件质量的关键手段。本文将深入探讨自动化测试框架的历史演进、当前趋势以及面临的挑战,并结合实际案例分析,提出一系列的最佳实践策略,旨在帮助读者构建更加高效、稳定的自动化测试体系。
|
2月前
|
监控 测试技术 持续交付
探索自动化测试在软件开发中的最佳实践
本文旨在深入探讨自动化测试在软件开发过程中的应用,以及如何有效地实施自动化测试以提高软件质量和开发效率。通过分析自动化测试的优势、挑战和最佳实践,本文为软件开发团队提供了一套实用的指导方案。
|
6月前
|
测试技术 开发者
单元测试问题之测试不够如何解决
单元测试问题之测试不够如何解决
|
2月前
|
前端开发 数据管理 测试技术
前端自动化测试:Jest与Cypress的实战应用与最佳实践
【10月更文挑战第27天】本文介绍了前端自动化测试中Jest和Cypress的实战应用与最佳实践。Jest适合React应用的单元测试和快照测试,Cypress则擅长端到端测试,模拟用户交互。通过结合使用这两种工具,可以有效提升代码质量和开发效率。最佳实践包括单元测试与集成测试结合、快照测试、并行执行、代码覆盖率分析、测试环境管理和测试数据管理。
73 2
|
2月前
|
Devops 测试技术 持续交付
软件测试中的自动化与持续集成:最佳实践与挑战
在快速迭代的软件开发周期中,自动化测试和持续集成(CI)已成为提高软件质量和加速产品上市的关键策略。本文探讨了自动化测试和CI的实施如何帮助开发团队提前发现缺陷、缩短反馈循环,并确保代码质量。我们将深入分析自动化测试的策略选择、工具应用以及面临的挑战,同时提供一些克服这些挑战的最佳实践。
53 0