我还没有解决的一个挑战是如何以一种易于在Specflow和BDD中导航和探索的方式组织我的特性文件和场景。
想象一年后有人想要学习这个系统。应该从哪里开始?什么是最重要的,什么是不太重要的?特性之间是否存在关系?系统是否处理了特定的场景?作者是否考虑过这个问题?
有没有人可以分享一些专注于这方面的技术、读物或工具?
project
| features
| | elements
| | | pages
| | | | home.js
| | | | index.js // grab all of the things in the pages directory
| | | | search.js
| | | index.js // grab everything in elements directory and the index of pages
| | | urls.js
| | | test_customers.js
| | feature_files
| | | home
| | | | homepage_links.feature
| | | | homepage_accessibility.feature
| | | | homepage_check_welsh_translation.feature
| | | search
| | | | search.feature
| | | | search_security.feature
| | step_definitions
| | | common // Won't go into this, but we have a library of reusable steps and functions in here for different projects that we can just port over from git
| | | project
| | | | pages
| | | | | search
| | | | | | search_steps.js
| | | | | | search_security_steps.js
| | | | | home
| | | | | | home_steps.js
| | | | | | home_accessibility_steps.js
| | | | navigation_steps.js
| | | | login_steps.js
| | support
| | | env.js // Timeouts
| | | hooks.js // Setup/Teardown for scenarios
| | | world.js // Setting up the drivers
| reports
| | 2017
| | | 03
| | | | 05
| | | | | report.html
| | | | | report.js
| | | | 06
| | | | | report.html
| | | | | report.js
| | | | 07
| | | | | report.html
| | | | | report.js
| | report.json
| screenshots
| | failed
| | | 2017-03-05
| | | | search_security_xss_204057.png
| | | 2017-03-06
| | | | search_security_xss_100532.png
| | | | search_security_xss_101054.png
| | | | search_security_xss_101615.png
| | search_security
| | | 2017-03-06
| | | | search_security_xss_100528.png
| | | | search_security_xss_101050.png
| | | | search_security_xss_101611.png
| | | | search_security_xss_101841.png
| .gitignore
| README.md
假设你是一个新项目的成员,想要了解已经编写了哪些场景。你知道这是特性集的一部分,所以你选择该路线,找到对应的特性文件。你对搜索功能的安全性测试很感兴趣,因此你进入其中并找到了相关文件。
我们的文件夹结构中都遵循同样的理论,每个文件都会被放置在你预期的位置。
我的方法是按照用户类型对终点操作进行组织:应用程序/页面,因为从根本上讲,测试的目的是检查每个RESTful API由谁在何时何地调用。
个人而言,我更喜欢Robot Framework而不是Cucumber。
homepage_check_welsh_translation.feature
,但没有威尔士语翻译步骤。这在实践中经常发生。我在home_steps.js
中编写的步骤 - 在这种情况下将适用于威尔士语翻译,但由于它们在技术上是两个不同的功能,我会将功能文件分开。如果我想要添加一个仅用于威尔士语翻译的新步骤,那么我会创建一个新的步骤文件。 - KyleFairns