what is the actual meaning of "software testing"? [closed] - testing

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 1 year ago.
Improve this question
testing means to check the software or application is error less?
to check that software or product functionality is proper as per client requirement
testing can improve quality, reliability, performance in product.

Software testing has evolved in a number of ways over the years; from activity that was completed by developers during the software build; to dedicated test factories that validate and verify software deliveries, to approaches that write tests as specifications before the code is written (and more in between).
Many view software testing as verifying the requirements of the software have been delivered and validating they have been delivered in the right way. This type of software testing lends itself well to automated testing approaches where a boolean outcome of the test is achievable. As such, the approach to this testing typically uses a Triple A (Arrange, Act, Assert) model, whether at Unit, Integration, Acceptance or GUI test levels.
However, opponents to this approach reject the term 'testing' in favour or 'automated checking', and believe software 'testing' is the process of defining risk, designing experiments to expose the manifestations of those risk through understanding a better understanding of the software context. purpose, user communities and goals. These attributes can be difficult to describe in boolean terms, and therefore, (as described by James Bach), software testing can be is seen as a learning opportunity to make informed choices about the software being developed.
A strong approach to software testing would consider both approaches and select the most relevant aspects from each.

Related

Cucumber and JUnit Testing [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 4 years ago.
Improve this question
We are building a new application and we are considering what testing frameworks to use. There are two types of testing we want to do:
Test all the possible logical pathways the execution thread can take (so this is more a technical/developer level testing strategy). We can do this by creating a program to combinatorially generate all the required test data.
Test only the required business use cases for the application (so this is more orientated towards the QAs and BAs).
My thinking is that for (1) we use JUnit and for (2) we use Cucumber. I have no experience in Cucumber. My question is can (1) and (2) be achieved with one framework like Cucumber or is it best practice to separate them out as I describe above.
I'd tend to agree with your assessment that JUnit (or another unit testing framework) is best suited for category 1 while Cucumber is well suited for category 2. Cucumber is a framework for writing natural language (more or less) specifications (in the Gherkin language), and as such its strength really lies in writing executable application specifications.
For purely technical testing, in order to enforce maximum test coverage, you're really only making it more difficult for yourself by writing the tests in a business-level language (Gherkin/Cucumber). Writing the tests with e.g. JUnit will involve much less friction.
For a good understanding of Cucumber and its role in the development chain, in comparison to other (BDD) tools (e.g. RSpec), I'd suggest reading The RSpec Book. In particular, it recommends RSpec, which is more similar to xUnit frameworks, for testing isolated parts of your system, and Cucumber for testing your application as a whole. This book is especially valuable in that it is authored by the creators of said tools (RSpec/Cucumber), so you get to know how these tools are intended to be used.
An example Cucumber specification, the test itself is within the Scenario block:
Feature: Serve coffee
Coffee should not be served until paid for
Coffee should not be served until the button has been pressed
If there is no coffee left then money should be refunded
Scenario: Buy last coffee
Given there are 1 coffees left in the machine
And I have deposited 1$
When I press the coffee button
Then I should be served a coffee

Making test cases maintainable [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 5 years ago.
Improve this question
How to make the test cases maintainable or generic in an agile environment , where there is frequent changes in the requirements.
This is a question that was asked to my friend in an interview.
Write tests at higher level of abstraction
Write intent revealing tests rather than tests that mimic the user clicks on UI
Use BDD frameworks like Spock, Cucumber etc.
Re-use: Identify the reusable features and re-use them. For e.g. Login feature steps can be written once and re-used across other features
Write more tests at service level than from the end-to-end
Use formal techniques to reduce the number of regression tests
Equivalence Class Partitioning
Combinatorial Testing
Boundary Values
Create a test strategy for the entire team
Move white-box testing to unit and integration tests
Clearly identify what will be automated by testers and what should be automated by developers. For e.g. most of the white box tests can be realized using unit tests. Testing Quadrants is what I use heavily.
And most importantly ditch tools from vendors like mercury and IBM.
My short answer to this is treat your test suite with the same respect you treat the rest of your code base.
Automated test are code - important code. Pay as much attention to keeping them well factored and clean as you do everything else and you can't go far wrong.

How to diagram automated testing? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 6 years ago.
Improve this question
I have a large legacy .NET application that has evolved and grown over the years to include many components and moving parts. I want to develop a strategy for developing automated unit and integration tests for this application and to that end I think a graphical representation would be key.
What I am picturing is some sort of diagram I could use to guide the process of writing up the test cases, help achieve better coverage, and eventually refer back to once a specific test fails. Does anyone have any thoughts on what type of diagram could fulfill this goal? My guess is this would be a variant of the classic functional block diagram, but I have not found examples that specifically relate to the design of an automated testing strategy.
Could this be what you are looking for?
The UTP provides extensions to UML to
support the design, visualization,
specification, analysis, construction,
and documentation of the artifacts
involved in testing. It is
independent of implementation
languages and technologies, and can be
applied in a variety of domains of
development.
UML Testing Profile: http://utp.omg.org/

Software Design Website(s) [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 4 years ago.
Improve this question
What websites (not books) document designs (UML or otherwise) for software applications?
Building architects have many resources available for inspiration and construction. I do not seek resources on constructing software (such as Meyer's Object-Oriented Software Construction), but rather examples of designs for software components or class diagrams that can be used as a starting point for developing an applcation.
Example applications might include:
Game System
Word Processor
User Interface
Telephony Call Control
Clinic Scheduling
Notification System
Incident Management
Network Monitoring
Restaurant Catering
Dispatching (Taxi, Police)
Selling Vacation Packages
The Design Patterns book is a good start, but a bit too low level.
Grady Booch has a great site for just this thing at
http://www.handbookofsoftwarearchitecture.com/index.jsp?page=Main
But you do have to register to look at the diagrams.
Do you mean things like Microsoft's Patterns and Practices?
For simple explanations, sample codes and use cases of common software design patterns, you can check out http://sourcemaking.com/design_patterns. They are generally aimed at solving common problems and can, in fact, be considered as re-usable architectures in software development.
For information related to domain-specific systems, such as games, there can be other domain-specific problems that have been addressed in different architectures, such as some of the links you have provided. Finding a single source which can list all this information in a unified architecture may not be possible, at best. Generic design patterns, such as those from the Gang of Four, is a better start for this reason, I believe.

In RUP: What RUP roles are responsilbe for creating the Software Architecture Document? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 5 years ago.
Improve this question
Based on the different views documented in SAD which RUP roles should should be responsible for creating the SAD? I thought from the beginning that the SAD was only for a technical audience but from what i can see in RUP it is more than that so it seems like it is not only the Software Architect that should be involved.
Well, according to RUP's documentation, it's the Software Architect.
Quoting the Artifact: Software Architecture Document online reference:
Responsibility
A software architect is responsible
for producing the Software
Architecture Document, which captures
the most important design decisions in
multiple architectural views.
The software architect establishes the
overall structure for each
architectural view: the decomposition
of the view, the grouping of elements,
and the interfaces between these major
groupings. Therefore, in contrast with
the other roles, the software
architect's view is one of breadth, as
opposed to depth.
The software architect is also
responsible for maintaining the
architectural integrity of the system
through the development process by:
Approving all changes to architecturally significant elements,
such as major interfaces, described in
the Software Architecture Document.
Being part of the "change-control board" decisions to resolve problems
that impact the software architecture.
Well,
Do not think "roles" as job titles...
If you work in a traditonal enviroment, generally there is a guy who is job title is also "Software Architect"...If you work in an agile enviroment generally you can not find a job title like "software architect" in team...So the important thing is who knows and who gives the important decisons about architecture: Who fills the role of the architect not title....
In an healty enviromement[ traditional or agile] one guy can not give all decisons, so SAD is a workproduct of all team in practice because all teams members sometimes play the role of "architect"...