-
Notifications
You must be signed in to change notification settings - Fork 6
Requirements for Requirements #7
Comments
@mattrosno @dakahn @scottnath - please use this to document the work we are doing with outside sources for defining requirements. |
add ac:
|
@elizabethsjudd @scottnath can you share an example QMS environment where it'd be important to consume component requirements? An example from your industry's unique needs would help understand that requirement. What's the distinction between a general user and the other three users? For example:
Ignoring the correctness of this example, how do we test for the general user when they are really mouse, keyboard (sighted), or screen reader? Or is it more that mouse, keyboard, and screen reader users inherit general user capabilities (e.g. for the keyboard user, those keyboard tests are specific to keyboard usage and don't include general user tests)? Where parsable component requirements can serve many purposes, knowing that a large number of design system users are non-technical, we may need to also have written requirements in sentence form that act more as an executive summary of component requirements. For example, it may be easier for a designer to read the key requirements of how a component behaves, and if more information is needed to evaluate edge cases, specific user interactions, etc., then they can drill into the parsable user stories. |
general user vs the other three typesI think we could interchange "general user" with "general use". Regardless, you are correct about inheritance from Feature: Button component
As a user
I want to be able to access and understand a button's purpose
So that I can successfully perform a button's action
@contextDependent
Scenario: Trigger button
Given there is an enabled button
When I trigger said button
Then said button's action is performed
Feature: Button via mouse
As a mouse user...
@contextDependent
Scenario: Triggering button via mouse
When I mouseover a button
Then I can click said button to perform said button's action
Feature: Button via keyboard
As a keyboard user...
@contextDependent
Scenario: Trigger button
Given that I am focused on a button
When I want to trigger said button
Then I can press `SPACE`
And I can press `ENTER`
And the button's action is performed
And the focus may change from the button
Feature: Button via screen reader
As a screen reader user...
@contextDependent
Scenario: Trigger button
Given I have accessed an enabled button
When I trigger said button
Then I am informed of the cursor's location
And said location may have changed So the above gives us at least these tests general: button can be triggered written requirements in sentence formThere is no doubt that individual disciplines (design/QA/OM/Dev) may want a different format for written requirements to use amongst themselves. Certainly this gherkin: Given I have accessed an enabled button
When I trigger said button
Then I am informed of the cursor's location
And said location may have changed is captured in this sentence: When a screen-reader user triggers an enabled button, they are informed of the cursor's location and should have understanding the location may have changed. as well as being captured by these numbered steps:
The primary issue is that we need a single source of truth for requirements. Therefore, it would need to be understood that if the spec had changes to the original requirements, that would also require these disciplines to update their versions. They would need whomever is in charge of their version of the requirements to understand the format chosen by this This luckily means that the
|
@mattrosno I have some meetings coming up this week and next around QMS and requirements. Right now WH is not consistent across the whole business and we are actively working on getting everyone in sync. Through these conversations, there are multiple levels of requirements each with different formats and I'm also working to determine where PAL/Carbon can best align in these efforts. As I find out more and there is more formal decisions made, I will add it to this issue. |
Large image warning... may want to save image and view outside of GH... I wanted to quickly look at three ways to describe a checkbox and visualize overlap. This isn't perfect, but hopefully enough to help. All three of these describe checkbox for different purposes:
Overlap between WAI-ARIA and Carbon is yellow. WAI-ARIA and Gherkin blue. Places reflected in both Carbon and Gherkin green. Two approachesWe're evaluating two approaches to written requirements so far. The first approach is through behavioral Gherkin syntax. The other through rules as demonstrated in #10. Rules (or sets of rules) are nice because:
Behavioral language is nice because:
Blended approachIf we find the behavioral requirements necessary to specify everything a component implementor would need to adhere to the spec (visuals aside), maybe there's a modified approach to incorporate best of both approaches? E.g. tag or comment each Gherkin scenario with its accompanying rule? Gherkin is great at describing "what is a component and exactly how does it behave". Rules as opposed to describe/its are great being testing library agnostic with better reporting capabilities for when spec tests are failing to help guide the developer. Design usersBack to that image above - it's clear to me that yes a designer could read and understand the Gherkin file, but not well. It's far too big as it primarily serves testing purposes. I'd almost want to define two designer user types, If going Gherkin for component requirements, I could see this happening. Carbon website references spec version in footer just like:
The Carbon website speaks to the |
When comparing these three examples, I feel like you are missing the "big" picture of what PAL is providing:
|
@elizabethsjudd I should have clarified that for that above comparison I was just looking at the Gherkin aspect of PAL, not everything that PAL specifies (UX notes, a11y notes, etc.) Just zooming out for a second to see what clarify that brings. High-level guidelines for designers and developers regarding UX notes, a11y notes, visual appearance... at this point I'm expecting those to be presented in the Carbon website ( I look forward to learning more about how QMS influences our component requirements format. |
@mattrosno I would agree that the "UX notes" would stay in the carbon-website. It should be aligned to what ever version the design kit is. My point was that without looking at everything PAL is providing you're comparing apples and cars. I wanted you to zoom out beyond the Gherkin to actually see at a high-level what is provided to our users and that the Gherkin is only one aspect but it's an important piece because it acts as a single source of truth and drives all of the other documentation (most of which is automated). FYI: For QMS we are NOT going to be able to use sentence case. We need something that is parsable and traceable which paragraphs on a website does not provide. |
I think a QMS example would help to help us understand the requirement. E.g. would components be traced at product build, during audits, etc.? Would it be looking at a specific web page or user flow and determining every user and functional requirement that contributed to that web page or user flow? An example would help answer questions like those. |
@mattrosno An example of QMS is difficult to provide as
When an application is ready to be moved to a new release stage, a complete review of all the documentation needs to be performed. If anything is missing, they must go back to the appropriate step and start again. If an application is audited (internally or externally), there must be trace-able documentation for tests that ALL requirements have been properly tested. So that's a lot of work.... we know and Carbon or PAL are not expected to be "regulated" environments. When a regulated environment uses a third-party tool (or internal tool that they do not own), that tool is classified as either "trusted" or "not-trusted". They must lock the version number of the tool they are using as an update is considered a code change. Non-trusted tools require the application to perform steps 1 - 13 for each piece of the tool used by the application. They are typically avoided because it requires a lot of work. Currently, both Carbon and PAL are non-trusted tools. PAL has a POC for becoming a trusted tool with the introduction of our latest requirements test setup. To be a trusted tool, there needs to be trace-able and version controlled documentation of requirements and tests. This allows the application to reference this documentation in their own without having to go through all 1 - 13 steps. When updating to a newer version of the tool, the documentation is simply reviewed instead of re-performing all of the tests, saving a lot of work for the application. Being a trusted tools allows application developers to focus their time on meaningful work instead of re-testing reusable components across each of their applications. If an application were to deviate implementation of a component the tool would become "untrusted". By providing the exportable tests, we are also increasing alignment with the documented requirements in the application itself and providing tests to the developers to they can again focus on more meaningful tests and make sure that when an audit is performed nothing is overlooked. PAL's POC to be a trusted source provides:
|
Summary
We need to be consistent with how we document requirements. There are currently multiple streams of discussions around how requirements should be written so it would be best to collaborate together to determine what this is.
Acceptance criteria for good requirements
The text was updated successfully, but these errors were encountered: