Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ladybug user stories, first draft #110

Merged
merged 14 commits into from
Jun 17, 2024
Merged

Conversation

mhdirkse
Copy link
Contributor

No description provided.

@mhdirkse mhdirkse requested a review from jacodg May 30, 2024 14:09
@mhdirkse
Copy link
Contributor Author

Hallo Jaco en Matthijs. Hier is een eerste versie van de user stories. Er zitten nog gaten in, waarvan ik er een aantal laat zien met TODO teksten. Ik ben benieuwd of het de goede kant op gaat. Gaat dit helpen om de gewenste functionaliteit accurater te ontwikkelen en testen?

@MarkvdVorst
Copy link

Het is een goede start, maar ik zou de user stories wel anders verwoorden. User Stories volgen de formule van "As a {user}, I want {something}, so that {reason}" en de reason mis ik nog bij veel user stories. Deze reason is belangrijk, omdat wij als developers dan beter inzicht krijgen op hoe het opgelost kan worden en waarom wij het oplossen.


**120:** As a Frank developer, I want to be able to add columns to the report table in addition to the ones shown in story **100**. I am willing to write Spring XML files to achieve this.

TODO: Do I have to specify what metadata extractors we have?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be good to know if we can display columns based on incoming and or outgoing message.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ik heb dit beter opgeschreven zodat hopelijk duidelijk is dat dit kan. Er staat nu ook waarom we dat willen.


TODO: Do I have to specify what metadata extractors we have?

**200:** As a Frank tester I want to hide reports from the report table in which I am not interested. This way I can find the report I need more easily. For each metadata field I want an edit box in which I can write a regular expression. Only if for a report all the metadata fields satisfy their regex, then the report should be shown in the table.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

regex isnt the approach, drop down selection lists based on the current data in the table should be the user friendly way.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Regexes are more flexible. I think some users need that flexibility.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Het zou nu netjes voor verschillende users uitgeschreven moeten zijn. Sommige users willen regexen, anderen niet.


TODO: What syntax do we support for the filters?

**210:** As a Frank tester, I want to see the reports ordered by the timestamp of the outer start checkpoint or by the timestamp of the outer end checkpoint. The latest timestamp should be in the topmost table row.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what does 'outer' means here? Ordering should start with topmost, but also reversible.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ik hoop dat het zo duielijker is. Ik gebruik nu "first" en "last".


**210:** As a Frank tester, I want to see the reports ordered by the timestamp of the outer start checkpoint or by the timestamp of the outer end checkpoint. The latest timestamp should be in the topmost table row.

**300:** As a Frank tester I want to see how many reports-in-progress there are. There is a report-in-progress if for some correlation id the start checkpoint is not yet matched by a corresponding end checkpoint.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

see and be able to open?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess that reports-in-progress are not yet to be opened. These reports are not complete because the start checkpoint that started the report has not been matched by an end checkpoint yet. There is a user story that Ladybug should forcibly finish a report-in-progress to make it a regular report. That regular report can already be opened by the user.


**300:** As a Frank tester I want to see how many reports-in-progress there are. There is a report-in-progress if for some correlation id the start checkpoint is not yet matched by a corresponding end checkpoint.

**310:** As a Frank tester, if a report-in-progress is open for too long, then I want Ladybug to close it such that I can see it as a regular report in the table.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

isnt framework responsible for closing?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I do not know if this is done by the FF! code or the Ladybug code. It is certainly something the system should do, not the user.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As far as I know, ladybug-frontend should not be able to close reports at this moment. This is all done by F!F and ladybug-test-webapp


**330:** As a Frank developer, I want to be able to configure the time threshold of story **310**.

**400:** As a Frank tester, I want reports to be stored persistently. Reports should not vanish when the Frank!Framework is restarted.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is deployment method depending. containerized , the restart clears history

Copy link
Contributor Author

@mhdirkse mhdirkse Jun 7, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hebben we daarmee een user story voor de system administrator? Moet de system administrator kunnen bepalen wat voor storage we gebruiken, database, in-memory of filesystem? We zouden ook de Frank developer als user kunnen opvoeren voor deze story.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ik heb iets opgenomen over de keuze van de storage.


**400:** As a Frank tester, I want reports to be stored persistently. Reports should not vanish when the Frank!Framework is restarted.

**410:** As a System administrator, I want the option to store reports in a shared persistent storage. A shared storage used by multiple instances of the Frank!Framework. This is useful when the Framk!Framework runs in the cloud and when the Frank tester does not see easily which node executed a report.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

database specifily or filesystem too?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not file system. This only makes sense with a database I think.


**1050:** As a Frank tester, I want to see the message of a checkpoint when I click on it.

TODO: Is there more information than the message here?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes... headers and metadata

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dan zou ik graag tekst toevoegen over wat headers en metadata zijn. Lijkt me goed om dat mondeling te bespreken.


# I want to turn a report into a test case

**2000:** Given is that I am viewing a report as a Frank tester. I want the option to edit the message within each checkpoint. When the report is rerun, the produced message will be compared to the edited message instead of the message originally captured. This allows me to update reports as test cases when my Frank application is changed.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in same tab or moved to test tab?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is to be discussed how the user interface should be, I think. Do you want that in these user stories or is this another stage of the design process?


**2000:** Given is that I am viewing a report as a Frank tester. I want the option to edit the message within each checkpoint. When the report is rerun, the produced message will be compared to the edited message instead of the message originally captured. This allows me to update reports as test cases when my Frank application is changed.

**2010:** Given is that I am viewing a report as a Frank tester. I want the option to configure an XSLT transformation that is applied to each message inside each checkpoint. When a report is rerun, the XSLT transformation is applied to the produced messages and it is applied to the messages inside the checkpoints. For each checkpoint, the two transformation results are compared. This way, irrelevant differences can be ignored. Irrelevant differences are produced for example if the current time is used by a Frank application.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

dont get this one

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am describing how we do ignores in Ladybug. I describe here how XSLT is employed for this.

**3200:** As a Frank tester, I want the option to download reports and upload them later. This allows me to save reports if I do not trust the persistent storage provided by the Frank!Framework. It also allows me to remove tests from my test cases without losing the test permanently.

**3210:** As a Frank tester, I want downloading and uploading to be available both in the Debug tab and in the Test tab. This way I am not obliged to copy reports to the Test tab before I can use these functions.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this all cover the options we have in larva? or do we need additional features that larva covers now and not in ladybug?

@@ -67,7 +168,9 @@ The following features should only be available with the DataAdmin role.

The following features should be available with the Tester role (and not necessarily the DataAdmin role):

* Running a report.
# Miscelaneous

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

black and grey box views to add yes please


# I want to find the report I am interested in

**10:** As a Frank tester, I want to see a table of reports when I open the Ladybug GUI. Each row of the table should be a report and each column should be a metadata attribute. In this table I can search the report of the adapter run that I want to examine.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
**10:** As a Frank tester, I want to see a table of reports when I open the Ladybug GUI. Each row of the table should be a report and each column should be a metadata attribute. In this table I can search the report of the adapter run that I want to examine.
**10:** As a Frank tester, i want to see a table of reports when I open the Ladybug GUI, so that I can get an easy to read list of reports

Dit gaat te specifiek in op de manier hoe het geïmplenteerd moet worden. Ook zijn dit twee verschillende user stories.
Ik zal voor een paar een voorbeeld geven van hoe ik het liefst de user stories geschreven zie worden.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ik vervang deze user story door drie user stories die het belang van de tabel presenteren vanuit drie verschillende rollen.


**10:** As a Frank tester, I want to see a table of reports when I open the Ladybug GUI. Each row of the table should be a report and each column should be a metadata attribute. In this table I can search the report of the adapter run that I want to examine.

**20:** As a Frank tester, when I click a row in the table I want to see the corresponding report in the tree view. This allows me to examine it in more detail.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
**20:** As a Frank tester, when I click a row in the table I want to see the corresponding report in the tree view. This allows me to examine it in more detail.
**20:** As a Frank tester, I want to see the corresponding report in a tree view when I click on a report in the table, sot that I can debug my Frank

Ik denk dat het beter leesbaar is over het algemeen als het meer op deze manier verwoord wordt.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gedaan.

Comment on lines 47 to 57
**100:** As a Frank tester, I want to see at least the following metadata attributes in the report table:

* **Name:** The name of the report, which is the name of the outermost start checkpoint.
* **Correlation id:** See vision.
* **Storage id:** The id assigned to the report when it was stored.
* **End time:** The timestamp at which the outermost end checkpoint was created.
* **Duration:** The time interval between the outermost start checkpoint and the outermost end checkpoint.
* **Status:** The status with which the pipeline ended, should be SUCCESS or ERROR.
* **Number of checkpoints**
* **Estimated memory usage:** TODO: What does this mean?
* **Storage size:** TODO: What does this mean?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ik mis de reden van deze user story.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ik vervang user story 10 door drie anderen. In die user stories staat waarom er een tabel moet zijn. Ik heb dit lijstje toegevoegd bij één van die user stories. Dit is dus geen aparte user story meer.

* **Estimated memory usage:** TODO: What does this mean?
* **Storage size:** TODO: What does this mean?

**120:** As a Frank developer, I want to be able to add columns to the report table in addition to the ones shown in story **100**. This way I can support the customer's tester who wants to search reports based on customer-specific data (see story **10**). As a Frank developer I am willing to write Spring XML files to achieve this for the customer. Customer specific data appears in the checkpoints of the reports, so I need Java Beans that together provide flexible search capabilities.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Geen reden aangegeven.
Ook gaat de tweede helft meer in op de oplossing dan de user story. Ik zou deze tweede helft weglaten. Ik hoor hier graag meningen over.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ik hoop dat ik dit beter heb opgeschreven.


**120:** As a Frank developer, I want to be able to add columns to the report table in addition to the ones shown in story **100**. This way I can support the customer's tester who wants to search reports based on customer-specific data (see story **10**). As a Frank developer I am willing to write Spring XML files to achieve this for the customer. Customer specific data appears in the checkpoints of the reports, so I need Java Beans that together provide flexible search capabilities.

**200:** As a Frank tester I want to hide reports from the report table in which I am not interested. This way I can find the report I need more easily. For each metadata field I want an edit box in which I can write a regular expression. Only if for a report all the metadata fields satisfy their regex, then the report should be shown in the table.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Er zitten hier twee user stories in één.
De eerste twee zinnen horen bij elkaar, dan heb je de acteur, de wat en de waarom.
De derde zin is een aparte user story.
De laatste zin twijfel ik over. Dit zou of weg moeten, in een aparte user story gezet moeten worden of samengevoegd moeten worden in de eerste zin.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ik heb dit geëdit op basis van Jaco's opmerkingen over de verschillende wensen van de service manager, de support engineer en de Frank developer.


**3030:** As a Frank tester, I want the option to organize the reports in the Test tab. I want to create groups of tests that can have sub-groups. A tree structure in which the composite nodes are test groups and the leaf nodes are reports. This structure gives me an overview of the tests I have.

**3040:** As a Frank tester, I want the option to select test cases and groups of test cases. I want the option to rerun the tests I selected. This gives me fine-grained control over my test runs when I want to test parts of my Frank application.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

De eerste twee zinnen zijn aparte user stories.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wat is het nut van selecteren als je niets kunt doen met wat je geselecteerd hebt? Daarom was dit één user story.


**3050:** As a Frank tester, I want the option to rerun all reports that are in the Test tab, allowing me to test my Frank application with a single click.

**3100:** As a Frank tester, when I have rerun a report I want the option to compare the original capture to the new results. I want to see the two datasets next to each other such that I can see what is the same and what is different.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Geen reden vermeld.
Zin 1 en zin 2 zijn twee verschillende user stories. Je zou ze anders kunnen verwoorden zodat het één user story wordt.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ik zie zin twee als een precisering van zin één.


**3100:** As a Frank tester, when I have rerun a report I want the option to compare the original capture to the new results. I want to see the two datasets next to each other such that I can see what is the same and what is different.

**3200:** As a Frank tester, I want the option to download reports and upload them later. This allows me to save reports if I do not trust the persistent storage provided by the Frank!Framework. It also allows me to remove tests from my test cases without losing the test permanently.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
**3200:** As a Frank tester, I want the option to download reports and upload them later. This allows me to save reports if I do not trust the persistent storage provided by the Frank!Framework. It also allows me to remove tests from my test cases without losing the test permanently.
**3200:** As a Frank tester, I want the option to download reports and upload them later, so that I can save reports if I do not trust the persistent storage provided by the Frank!Framework and to remove tests from my test cases without losing the test permanently.

Ik zou het eerder zoals dit verwoorden. Maakt het iets leesbaarder en duidelijker wat het nut is van deze feature.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dan bouw je een lange zin. Er zijn meerdere redenen voor deze user story. Als je al die redenen ook in dezelfde zin wilt dan heb je een lange zin.


# I want to configure whether my Frank application does produce reports

**4000:** As a System administrator I want the option to turn off the report generator. When the report generator is off, my Frank application should not invoke Ladybug when processing messages. This might reduce the execution time.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ik zou dit anders verwoorden naar:

Suggested change
**4000:** As a System administrator I want the option to turn off the report generator. When the report generator is off, my Frank application should not invoke Ladybug when processing messages. This might reduce the execution time.
**4000:** As a System administrator I want the option to turn off the report generator, so that I can reduce execution time of my Frank.

Ik weet niet of Frank hier het juiste woord is. Ik ken deze feature niet zo goed. Als het iets anders moet zijn zou ik het met dat vervangen op de plek waar Frank staat.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gedaan.


**4000:** As a System administrator I want the option to turn off the report generator. When the report generator is off, my Frank application should not invoke Ladybug when processing messages. This might reduce the execution time.

**4010:** As a System administrator I want the option to create reports for only some adapter executions that match my search criterion. The search criterion is a regex that is applied to the name of the outer start checkpoint.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Geen reden.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gedaan.

@mhdirkse mhdirkse merged commit 61b7d4d into master Jun 17, 2024
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants