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

Implement Random Selection of Register Operations When Not Using selectName #1081

Open
YongGoose opened this issue Nov 11, 2024 · 5 comments
Labels
enhancement New feature or request

Comments

@YongGoose
Copy link

Describe the feature you request

Summary of Changes

  • Before: The first registered operation among multiple register operations was applied
  • After: A randomly selected operation among multiple register operations is applied
  • Added weight feature: Ability to adjust selection probability by assigning weights to each operation

Key Discussion Points

  1. Random Selection Range
    • Option 1: Random selection within register operations of the same type
    • Option 2: Random selection from all register operations
  2. Weight System Implementation
    • Add functionality to assign weight values to each register operation
    • Set default weight to 1, allowing users to change if desired
    • Implement logic for calculating selection probability based on weights

Expected Benefits

  1. Increased Test Diversity: Enable testing of various scenarios through random selection
  2. Edge Case Discovery: Increase potential for discovering bugs through unexpected test case combinations
  3. Flexible Testing Environment: Allow focused testing on specific scenarios by adjusting weights

If the feature request is approved, would you be willing to submit a PR?

Yes

@YongGoose YongGoose added the enhancement New feature or request label Nov 11, 2024
@YongGoose
Copy link
Author

@seongahjo

저번 PR에서 우선순위를 말씀드렸는데, 고민해본 결과 순서 보단 가중치가 적절할 것 같습니다.
하지만 가중치를 도입하게 된다면 어떻게 테스트를 구현할지 고민을 해봐야 할 것 같습니다.

  • 우선 생각나는 방법을 말씀드리면 100,000번 선택을 수행하여 실제 선택 비율과 가중치를 비교하는 것입니다.

그리고 register 연산을 선택할 때 전체 register 연산에서 무작위로 선택할지, 동일한 type의 register 연산에서 무작위로 적용할 연산을 선택할지 고민해봐야 합니다.

아래의 링크에 따르면 하나의 타입에 여러 register 연산을 등록할 계획을 가지고 있다고 하셨는데 아직은 적용되지 않았으므로 개인적으로 동일한 type의 register 연산에서 무작위로 적용하는 것이 맞다고 생각합니다!

생각해보신 뒤, 자유롭게 의견 공유 부탁드립니다 :)

@seongahjo
Copy link
Contributor

seongahjo commented Nov 14, 2024

고민해본 결과 순서 보단 가중치가 적절할 것 같습니다.

혹시 가중치의 총합으로 생각해두신 값이 있을까요??
적절히 분배가 되는 게 중요할 것 같은데, 어떻게 분배될지도 혹시 생각해놓으신 게 있으실까요??

100,000번 선택을 수행하여 실제 선택 비율과 가중치를 비교하는 것입니다.

테스트가 비결정적이지 않을까 걱정이 되네요. 분배 로직만 테스트하는 방향도 괜찮을 것 같긴 합니다.

개인적으로 동일한 type의 register 연산에서 무작위로 적용하는 것이 맞다고 생각합니다!

넵 저도 좋은 것 같습니다.

@YongGoose
Copy link
Author

혹시 가중치의 총합으로 생각해두신 값이 있을까요??

가중치의 총합은 1 또는 100으로 설정하면 좋을 것 같습니다!

어떻게 분배될지도 혹시 생각해놓으신 게 있으실까요??

만약 사용자가 가중치를 입력하면 총합에서 해당 가중치를 제외한 값들을 나머지 가중치를 입력하지 않은 register 연산에 균등 분배 하는 방법이 좋을 것 같습니다!

가중치를 입력하지 않은 경우엔 모든 register 연산의 가중치를 균등분배 하는 것도 좋을 것 같습니다.

@seongahjo
Copy link
Contributor

seongahjo commented Nov 22, 2024

가중치로 처리하는 방식이 좋은 것 같은데요 다만 값 분배가 우려가 됩니다.

나머지 가중치를 입력하지 않은 register 연산에 균등 분배 하는 방법이 좋을 것 같습니다!

혹시 그럼 균등 분배를 한다고 하면, 나머지 가중치가 나머지가 생기는 경우는 어떻게 될까요?? (나머지 총합 % register개수 !=0 인 케이스)

가중치라는 방식이 이상적이긴 할 것 같은데, 초기 구현하기에는 조금 비용이 크지 않을까 생각도 듭니다.
단계 별로 우선순위 -> 가중치로 진행하는 방향은 어떠신가요??

@YongGoose
Copy link
Author

단계 별로 우선순위 -> 가중치로 진행하는 방향은 어떠신가요??

넵! 우선순위로 작업을 시작하겠습니다.

코멘트 감사합니다 ☺️

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants